istio介绍补充以及使用篇
前言
前篇istio介绍了引入istio前以及k8s的关系,下文主要做出补充以及对它的使用
istio_6">介绍istio各个组件
pilot:负责服务发现与路由规则(平面数据规则),pilot只提供服务注册接口,真正注册的工作还是会对接真正的注册中心nacos这些;
数据平面下发规则:
Mixer:该组件不是必须的,主要有两个功能,在调用服务时决定是否满足调用权限;收集上游和下游服务envoy日志;(这两个功能分别由mixer里的两个组件,policy和另一个组件来完成)
catedel:该组件也不是在架构中必须的。虽然mixer可以决定是否可以调用下游服务,但调用的安全是由catedel组件来保证;
gallery:该组件也不是必须的,不直接与数据平面提供业务能力,而是位于控制平面,给Mixer和pilot组件提供配置管理,它用到了MCP分发协议
side car-injector组件:是用于在创建pod时注入side car,有两种注入方式;
envoy组件:里面分为两个组件,负责服务发现(是指从pilot中服务发现);
istio_20">创建istio的方式
分为手动注入和自动注入:
手动注入
指定deployment和service资源
然后用istio命令创建:
pod中有两个容器:
可以查看pod的创建流程:
自动注入side car
先删除之前手动注入的istio
无论自动注入还是手动注入,原理都是在yaml文件追加代理容器side car,当然推荐使用自动注入;
istio_41">使用istio做流量灰度
本来是v1版本,后面切换50%的流量到v3,于是执行reviews-50-v3.yaml,切换一段时间,发现没什么问题,就将全部流量切换到v3版本,于是执行reviews–v3.yaml。
reviews-50-v3.yaml:
每做出一个路由变动,都是执行一个新的yaml文件,而且路由的对象类型是virtualService。