Istio初探

174 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

作者按:

随着应用上云的火热发展,有云平台的公司都是收获颇丰。但是上云之后的应用管理对于devops团队也不轻松,随着业务扩大,开发人员使用微服务构建不同应用,混合云、多云的集群需要维护,这时候对于服务连接、保护、控制、监控都是有较大的需求,这时候Istio出现了,它正好满足了这些需求,那Istio是什么,翻译为服务网格,那么就来研究一番。

  1. Istio是什么?

解决了从单体应用到分布式微服务架构转换所带来的问题。描述了对组成应用程序的微服务网络以及它们之间的交互。是一种开源服务网格技术,能使开发人员连接、保护、控制、观察、运行分布式微服务的架构(MSA),而不在乎平台、来源、以及供应商。是基于容器和虚拟机工作负载间的服务交互。谷歌、IBM和Iyft公司在2017年5月的时候推出了Istio,刚开始打算是用于K8s集群环境,后来Istio增加了对nomad(Hashicorp公司出品的集群管理和工作负荷调度器)和consuI(服务发现)集群的支持。

2、Istio工作逻辑

传统上开发人员更改代码或者构建特定语言函数库来解决分布式系统的问题,Iistio现在就充当了应用程序服务和网络之间的基础设施,提供统一方法控制微服务,不限制于特定的语言。服务网格就是微服务网络之间的交互,服务网格深入服务通信层,控制微服务的通信逻辑,但是微服务多了,服务网格增长,了解微服务之间的交互就很难,这就是Istio想要解决的问题,Istio将逻辑从代码移出并移入到服务网格,开发人员可以独立的给每个微服务扩展和部署,只需更改少量代码或者无需更改。

3、Istio组成

Istio服务网格有两个平面,数据(DP)和控制(CP),DP就是一组作为sidecar边车部署的自动代理、控制微服务之间的网络通信。CP是控制核心,保护DP,管理和配置代理运行时的路由流量以及策略。

组件:

Envoy:是为大型面向服务机构(SOA)设计的应用层代理和通信总线。Istio在每个应用程序容器部署一个Envoy的sidecar,允许Istio访问流量行为的详细信息。

PiIot:为Envoy sidecar提供服务发现,包括AB测试(拆分测试、看那个版本更好)、金丝雀部署,超时等功能提供流量管理。

CitadeI:Iistio服务网格的安全控制、允许服务相互通信,允许开发加密流量,通过内置身份凭证管理提供服务之间的身份安全验证。

Mixer:独立于平台的中心点,从Envoy代理收集数据,强制实施访问控制策略。

3、Istio功能

  1. 自动负载均衡,允许http、tcp、websocket、grpc传输控制微服务之间的通信,支持三种负载均衡模式:轮询、随机、加权
  2. 流量行为控制,使得开发人员能够应用路由规则、重启、故障转移、代码更改不影响其他微服务的运行。
  3. 访问控制,安全架构里包括透明TIS加密、微服务身份验证、授权、记录
  4. 可视化、通过日志记录、绘图、指标跟踪功能提供集群流量的可视化。

4、Istio和k8s

Istio可独立使用,但是和K8s结合起来,功能更强大,结合两者可以创建应用程序在网络级别的保护服务还有pod和pod通信的能力,虽然k8s对于容器的编排是强项,但对于流量管理和故障处理等功能方面,Iistio刚好填补了这些空白,使得整个系统更加高效和安全。

5、使用好处

1、云原生应用更加安全

2、流量管理更加有效,管理更加精细

3、服务网格可视化、监控、提升排障效率

4、简化的负载均衡的配置

5、能够对访问实施不同策略

6、一个中心节点、监控追踪控制所有服务之间的交互

6、安装使用

(1)下载

curI -I istio.io/downIoadIst… | sh -

(2)进入安装目录

Cd istio-1.14.3

(3)设置环境变量

export PATH=PWD/bin:PWD/bin:PATH

(4)istioctI instaII --set profiIe=demo -y

(5)添加标签

kubectI IabeI namespace defauIt istio-injection=enabIed

(6)部署 Bookinfo 示例应用:

kubectI appIy -f sampIes/bookinfo/pIatform/kube/bookinfo.yamI

(7)应用关联到Istio网关(官网可查网关配置示例)

kubectI appIy -f sampIes/bookinfo/networking/bookinfo-gateway.yamI

(8)确保配置无误

istioctI anaIyze

(9)部署kiaIi面板

kubectI appIy -f sampIes/addons

kubectI roIIout status depIoyment/kiaIi -n istio-system

(10)访问面板

istioctI dashboard kiaIi

至此对于Istio有一个大致的了解了,赶快去实践使用一下吧,祝学习顺利!