istio
2021-09-13 09:55:38 75 举报
AI智能生成
istio思维导图
作者其他创作
大纲/内容
核心组件
pilot
功能
从k8s或者其他平台的注册中心获取服务信息,完成服务发现过程
读取istio各项控制配置,在进行转换之后 ,将其发给数据面进行实施
工作流程
用户通过kubectl或istioctl在Kubernetes 上创建CRD 资源,对Istio控制平面发出指令
Pilot 监昕 CRD 中的 config、rbac、networking、authentication 资源 ,在检测到资源对象变更之后,针对其中涉及的服务,发出指令给对应服务的Sidecar
Sidecar 根据这些指令更新自身配置,根据配置修正通信行为
mixer
功能
预检和汇报
工作流程
(1)用户将 Mixer配置发送到kubernetes
(2) Mixer 通过对 Kubernetes 资源的监听,获知配置的变化
(3)网格中的服务在每次调用之前,都向 Mixer 发出预检请求,查看调用是否
允许执行 在每次调用之后,都发出报告信息,向 Mixer 汇报在调用过程中产生的
监控跟踪数据
(2) Mixer 通过对 Kubernetes 资源的监听,获知配置的变化
(3)网格中的服务在每次调用之前,都向 Mixer 发出预检请求,查看调用是否
允许执行 在每次调用之后,都发出报告信息,向 Mixer 汇报在调用过程中产生的
监控跟踪数据
citadel
功能
负责为集群中的各个服务在统一 CA的条件下生成证书,井下发给各个服务中的Sidecar,服务之间的TLS就依赖这些证书完成校验过程
enovy
功能
是 lstio中的数据面,负责控制面对网格控制的实际执行
xDS
它是一类发现服务的统称
分类
CDS:Cluster Discovery Service
EDS:Endpoint Discovery Service
SDS:Service Discovery Service
RDS:Route Discovery Service
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
每种路由对象都至少包含两部分:匹配条件和目的路由
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
docker pull docker.io/istio/node-agent-k8s:1.5.6
docker pull docker.io/istio/proxyv2:1.5.6
docker pull docker.io/istio/pilot:1.5.6
docker pull docker.io/istio/mixer:1.5.6
docker pull docker.io/istio/galley:1.5.6
docker pull docker.io/istio/sidecar_injector:1.5.6
docker pull docker.io/istio/citadel:1.5.6
docker pull docker.io/istio/kubectl:1.5.6
docker pull docker.io/prom/prometheus:v2.12.0
docker pull quay.io/kiali/kiali:v1.15
docker pull grafana/grafana:6.4.3
docker pull docker.io/istio/node-agent-k8s:1.5.6
docker pull docker.io/istio/proxyv2:1.5.6
docker pull docker.io/istio/pilot:1.5.6
docker pull docker.io/istio/mixer:1.5.6
docker pull docker.io/istio/galley:1.5.6
docker pull docker.io/istio/sidecar_injector:1.5.6
docker pull docker.io/istio/citadel:1.5.6
docker pull docker.io/istio/kubectl:1.5.6
docker pull docker.io/prom/prometheus:v2.12.0
docker pull quay.io/kiali/kiali:v1.15
docker pull grafana/grafana:6.4.3
环境变量配置
$ vim ~/.bashrc
PATH="$PATH:/data/istio-1.5.6/bin"
# 应用生效
$ source ~/.bashrc
PATH="$PATH:/data/istio-1.5.6/bin"
# 应用生效
$ source ~/.bashrc
$ vim ~/.bashrc
source /data/istio-1.5.6/tools/istioctl.bash
# 应用生效
$ source ~/.bashrc
source /data/istio-1.5.6/tools/istioctl.bash
# 应用生效
$ source ~/.bashrc
执行安装
istioctl manifest apply --set profile=demo
验证安装
istioctl verify-install
概念
数据平面
由轻量级代理组成,这些代理作为sidecar容器与服务代码的每个实例一起部署
控制平面
是在Kubernetes特定命名空间中运行的一组服务。这些服务可以完成各种事情:聚集遥测数据,提供面向用户的API,向数据平面代理提供控制数据等
0 条评论
下一页