istio
2021-09-13 09:55:38 75 举报
AI智能生成
istio思维导图
作者其他创作
大纲/内容
核心组件
pilot
功能
从k8s或者其他平台的注册中心获取服务信息,完成服务发现过程<br>
读取istio各项控制配置,在进行转换之后 ,将其发给数据面进行实施
工作流程
用户通过kubectl或istioctl在Kubernetes 上创建CRD 资源,对Istio控制平面发出指令<br>
Pilot 监昕 CRD 中的 config、rbac、networking、authentication 资源 ,在检测到资源对象变更之后,针对其中涉及的服务,发出指令给对应服务的Sidecar
Sidecar 根据这些指令更新自身配置,根据配置修正通信行为
mixer
功能
预检和汇报
工作流程
(1)用户将 Mixer配置发送到kubernetes<br><br>(2) Mixer 通过对 Kubernetes 资源的监听,获知配置的变化<br><br>(3)网格中的服务在每次调用之前,都向 Mixer 发出预检请求,查看调用是否<br><br>允许执行 在每次调用之后,都发出报告信息,向 Mixer 汇报在调用过程中产生的<br><br>监控跟踪数据
citadel
功能
负责为集群中的各个服务在统一 CA的条件下生成证书,井下发给各个服务中的Sidecar,服务之间的TLS就依赖这些证书完成校验过程
enovy
功能
是 lstio中的数据面,负责控制面对网格控制的实际执行
xDS
它是一类发现服务的统称<br>
分类
CDS:Cluster Discovery Service<br>
EDS:Endpoint Discovery Service<br>
SDS:Service Discovery Service <br>
RDS:Route Discovery Service <br>
LDS:Listener Discovery Service
核心配置对象
networking.istio.io
Gateway
Pilot 会根据 Gateway 和主机名进行检索,如果存在对应的 Virtual Service则交由Virtua Service 处理;如果是 Mesh Gateway 且不存在对应这一主机名的Virtual Service ,则尝试调用 Kubernetes Serv ce ;如果不存在,则发生 404 错误
VirtualService
TCP/TLS/HTTP Route <br>
每种路由对象都至少包含两部分:匹配条件和目的路由
DestinationWeight
Destination Weight 指到某个目标( Destination 对象)的流量权重,这就意味着,多个目标可以同时为该 VirtualService 提供服务,并按照权重进行流量分配
Destination
目标对象( Destination )由 subsets 和Port 两个元素组成
config.istio.io
用于为 Mixer 组件提供配置
authentication.istio.io
它在网格级别、命名空间级别及服务级别都提供了认证策略的要求,要求在内容中包含服务间的通信认证,以及基于 JWT 的终端认证
rbac.istio.io
实现了和kubernetes颇为相似的RBAC访问控制系统
配置实例
Gateway
示例
VirtualService
示例
示例
DestinationRule
示例
ServcieEntry
示例
部署
下载istio
wget https://github.com/istio/istio/releases/download/1.5.6/istio-1.5.6-linux.tar.gz
镜像拉取
docker pull jaegertracing/all-in-one:1.16 <br>docker pull docker.io/istio/node-agent-k8s:1.5.6 <br>docker pull docker.io/istio/proxyv2:1.5.6<br>docker pull docker.io/istio/pilot:1.5.6 <br>docker pull docker.io/istio/mixer:1.5.6 <br>docker pull docker.io/istio/galley:1.5.6 <br>docker pull docker.io/istio/sidecar_injector:1.5.6 <br>docker pull docker.io/istio/citadel:1.5.6 <br>docker pull docker.io/istio/kubectl:1.5.6 <br>docker pull docker.io/prom/prometheus:v2.12.0 <br>docker pull quay.io/kiali/kiali:v1.15 <br>docker pull grafana/grafana:6.4.3
环境变量配置
$ vim ~/.bashrc<br>PATH="$PATH:/data/istio-1.5.6/bin"<br># 应用生效<br>$ source ~/.bashrc
$ vim ~/.bashrc<br>source /data/istio-1.5.6/tools/istioctl.bash<br># 应用生效<br>$ source ~/.bashrc
执行安装
istioctl manifest apply --set profile=demo
验证安装
istioctl verify-install
概念
数据平面
由轻量级代理组成,这些代理作为sidecar容器与服务代码的每个实例一起部署
控制平面
是在Kubernetes特定命名空间中运行的一组服务。这些服务可以完成各种事情:聚集遥测数据,提供面向用户的API,向数据平面代理提供控制数据等
0 条评论
下一页