亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Istio所有模塊、Service、Pod的功能介紹

標簽:
Kubernetes

[TOC]

Istio所有模块、Service、Pod的功能介绍

Istio模块

  • Proxy(Envoy)

    • 流量代理,不可缺少

  • Pilot

    • 服务发现、流量管理、智能路由等

  • Mixer

    • 遥测相关

  • Citadel

    • 安全相关,服务之间访问鉴权等

  • Galley

    • istio API配置的校验、各种配置之间统筹,为 Istio 提供配置管理服务,通过用Kubernetes的Webhook机制对Pilot 和 Mixer 的配置进行验证

Istio的Service

通过kubectl get svc -n istio-system 查询所有的Service

  • istio-egressgateway

    • 出口网关,可选的,根据自身业务形态决定

  • istio-ingressgateway

    • 入口网关,必须的

    • 对外流量入口,所有从外部访问集群内部的服务都需要经过入口网关ingressgateway。需要多实例、防止单点;同时要保证多实例进行负载均衡;

    • 如果异常则导致整个流量入口异常

    • 承担相对较大的并发和高峰流量

  • istio-pilot

    • 控制sidecar中envoy的启动与参数配置

    • 如果异常则envoy无法正常启动,应用服务的流量无法进行拦截和代理

    • 所有配置、流量规则、策略无法生效

    • 必要组件

  • istio-sidecar-injector

    • 现sidecar自动注入功能组件

    • 对应的设置是选项是sidecarInjectorWebhook.enabled,sidecarInjectorWebhook.image对应就是sidecar_injector

    • 这个只是对自动注入Sidecar有影响,如果是通过手动注入kubectl kube-inject命令参数执行的没有影响,不管使能这个前还是后,都对手动注入Sidecar没有影响

    • 如果异常则会导致sidecar无法自动注入;如果注入策略设置为必须注入(policy为Fail),则会导致新创建的应用服务(Pod)无法启动,因为无法注入 Sidecar

  • istio-statsd-prom-bridge

    • 9125是statsdUdpAddress配置的地址

    • 9102是prometheus的Metric接口

    • 这个是istio-statsd-prom-bridge组件提供的服务

    • 暴露9102、9125端口

    • 这个 statsd是一个转换为prometheus的组件,用来统计envoy 生成的数据,这个是必须的

    • 通过安装参数--set mixer.enabled=false就禁能了这个组件,禁能这个组件会导致ingressgateway的envoy初始化失败,报错日志error initializing configuration '/etc/istio/proxy/envoy-rev0.json': malformed IP address: istio-statsd-prom-bridge,因为statsdUdpAddress这个参数指定了地址为istio-statsd-prom-bridge:9125,因此还需要修改istio这个configmap中的statsdUdpAddress地址

    • 安装选项global.proxy.envoyStatsd.enabled可以控制envoy是否直接通过statsd上报,global.proxy.envoyStatsd.host和global.proxy.envoyStatsd.port可以设置statsd exporter的地址

  • istio-policy

    • Mixer相关组件,用于与envoy交互,check需要上报的数据,确定缓存内容,挂掉会影响check相关功能,除非设置为不进行check

    • 不能直接关闭或者说禁能这个策略组件,因为默认请求都是要去policy pods进行check检测的,如果失败则会导致请求失败,详见

    • 通过安装参数--set mixer.enabled=false禁能

  • istio-telemetry

    • 9093端口是Mixer组件本身的prometheus暴露的端口,这个是istio-policy 组件提供的

    • 42422是所有 Mixer 生成的网格指标,这个是istio-telemetry 组件提供的

    • Mixer相关组件的Service,用于采集envoy上报的遥测数据

    • 高并发下会有性能影响,会间接导致整体性能下降,业界针对这个有较多探讨;可以禁能

    • 为提高性能,需要设置为多实例,防止单点;均衡流量

    • 暴露9091、9093、15004、42422端口

    • 通过安装参数--set mixer.enabled=false禁能

    • 如果异常,则通过Mixer进行上报的一些监控采集数据无法采集到,并不影响整体流程

  • istio-citadel

    • 用于安全相关功能,为服务和用户提供认证和鉴权、管理凭据和 RBAC,挂掉则会导致认证,安全相关功能失效

    • --set security.enabled=false如果要禁能则通过设置security,它对应的镜像就是citadel

    • 如果前期不使用安全相关的功能可以禁能,不会影响整体使用

    • 如果部署了 istio-citadel,则 Envoy 每 15 分钟会进行一次重新启动来刷新证书

  • istio-galley

    • istio API配置的校验、各种配置之间统筹,为 Istio 提供配置管理服务,包含有Kubernetes CRD资源的listener,通过用Kubernetes的Webhook机制对Pilot 和 Mixer 的配置进行验证

    • 这个服务挂掉会导致配置校验异常,是一个必须的组件

    • 比如创建gateway、virtualService等资源,就会需要校验

    • 如果不想校验,可以通过设置helm 的选项参数--set global.configValidation=false来关闭校验

  • prometheus

    • 暴露9090端口

    • prometheus组件的Service

    • 如果采用外部的prometheus则不用

    • 其他组件如jaeger、grafana则同样采用外部系统,因此可以不用和istio一起安装

Istio的Pod

Istio的Pod 对应着Service,命名的前缀都是保持一致,其功能当然也一样,因为Service就是代理着一批Pod。只是这些Pod或者Service的名字和istio架构中的组件的名字稍有区别

  • istio-citadel-xxx

  • istio-egressgateway-xxx

  • istio-galley--xxx

  • istio-ingressgateway-xxx

  • istio-pilot-xxx

  • istio-policy-xxx

  • istio-sidecar-injector--xxx

  • istio-statsd-prom-bridge--xxx

  • istio-telemetry--xxx

  • prometheus--xxx



作者:吴德宝AllenWu
链接:https://www.jianshu.com/p/6243cc51aa68


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消