Istio
简介
1 | 一个用于服务治理的开发平台 |
功能
- 流量管理:控制服务之间调用的流量和API调用,使得调用更可靠,并使网络在恶劣情况下更加健壮。
- 可观测性:获取服务之间的依赖,以及服务调用的流量走向,从而提供快速识别问题的能力。
- 策略执行:控制服务的访问策略,不需要改动服务本身。
- 服务身份和安全:为网格中的服务提供可验证身份,并提供保护服务流量的能力,使其可以在不同可信度的网络上流转。
Istio组件功能
- 自动注入:指在创建应用程序时自动注入sidecar代理。
- 流量拦截:在Pod初始化时设置iptables规则,当有流量到来时,基于配置的iptables规则拦截业务容器的Inbound和Outbound流量到sidecar上。
- 服务发现:服务发起方的Envoy调用管理面组件Pilot的服务发现接口获取目标服务的实例列表。
- 负载均衡:服务发起方的Envoy根据配置的负载均衡策略选择服务实例,并连接对应的实例地址。
- 流量治理:Envoy从Pilot中获取配置的流量规则,在拦截到进出流量时执行治理逻辑。
- 访问安全:在服务间访问时通过双方的Envoy进行双向认证和通道加密,并基于服务的身份进行授权管理。
- 服务遥测:在服务间通信时,通信双方的Envoy都会连接管理面组件Mixer上报访问数据,并通过Mixer将数据转发给对应的监控后端。
- 策略执行:在进行服务访问时,通过Mixer连接后端服务来控制服务间的访问,判断对访问是放心还是拒绝。
- 外部访问:在网格的入口处有个Envoy扮演入口网关的角色。
下载
1 | curl -L https://istio.io/downloadIstio | sh - |
解压安装
1 | tar zxvf istio-1.14.3.tar.gz |
创建demo
1 | kubectl create ns istio # 创建ns |
1 | # 创建网关 |
访问测试
1 | # 默认svc采用loadBalancer,此处改为NodePort |
开启dashboard
1 | kubectl apply -f samples/addons -n istio |