[单master节点k8s部署]25.Istio流量管理(一)

Istio介绍

Istio用于介绍微服务架构下的流量管理。它在服务之间引入一个透明的代理层,负责对微服务的流量管理、安全性、弹性和监控等。Istio提供了良好的可观察性和平台无关性。

Istio可以弥补k8s在服务治理上的缺点。

负载均衡

流量管控度量

故障恢复

灰度发布

可观察性(observability):全链路追踪、监控、数据收集,通过控制后台全面了解上行下行流量。

熔断器

熔断器(断路器)是一种保护机制,常用于避免服务雪崩效应。当系统中某个下游服务(比如服务 C)出现故障或者响应时间过长时,上游服务(服务 A 和服务 B)会因为等待下游服务的响应而占用更多的系统资源,进而可能导致整个系统资源耗尽,出现雪崩效应。

在微服务架构中,在高并发情况下,如果请求数量达到一定极限(可以自己设置阈值),超出了设 置的阈值,断路器会自动开启服务保护功能,然后通过服务降级的方式返回一个友好的提示给客户端。 假设当 10 个请求中,有 10%失败时,熔断器就会打开,此时再调用此服务,将会直接返回失败,不再调 远程服务。直到 10s 钟之后,重新检测该触发条件,判断是否把熔断器关闭,或者继续打开。

Envoy

Envoy是一个高性能的开源代理,用于管理服务之间的通信。Envoy作为一个边车代理被部署在每一个微服务旁边(通常是在同一个pod内,和应用容器一起运行)。这些边车代理会拦截服务之间的所有网络流量,并负责执行 Istio 的各种策略和功能,比如负载均衡、流量路由、熔断器、限流、监控和安全功能等,还可以按照比例分配流量等(这里的流量指的是请求流量)。

Pilot:负责将流量路由规则下发给 Envoy 代理,控制服务之间的流量。它负责envoy的服务发现,同时提供流量管理(A/B测试,金丝雀发布等),以及弹性功能(超时、重试、熔断)

Telemetry/Mixer:负责与 Envoy 协作,收集流量的遥测数据。

Citadel(现在的 Istio Agent):负责生成证书,用于 Envoy 之间的 mTLS 加密通信。

Galley:它使得Istio可以和kubernetes一起工作,因为他可以将不同的配置数据转换为Istio可以理解的通用格式。

如图可以看出,Istio的架构可以分为控制平面和数据平面:

在数据平面,k8s通过注入的方式将envoy和Pilot-Agent注入到业务pod里。

istio1.5+中使用了一个全新的部署模式,重建了控制平面,将原有的多个组件整合为一个单体结构
istiod,这个组件是控制平面的核心,管理 Istio 的所有功能,主要包括 Pilot、Mixer、Citadel
等服务组件。

Istio工作原理

1. 代理注入

2.iptables拦截出入的流量,而业务容器没有感知

3. 使用Pilot去找到服务注册表里的服务。Pilot 是 Istio 控制平面的一部分,负责服务发现。它会与 Kubernetes 等平台集成,获取所有服务和实例的信息,并将这些信息下发给每个 Envoy 代理,让它们知道如何与其他服务通信。

4.服务发起方的envoy通过配置的负载均衡策略选择服务实例,并连接对应的服务地址。上图中envoy从pilot中获取forecast服务的负载均衡配置,并执行负载均衡策略。

5.frontend 服务侧的 Envoy 从 Pilot 中获取流量治理规则,并根据该流量治理规则将不同特征的流量分发到 forecast 服务的 v1 或 v2 版本。

6.访问的时候通过envoy进行双向认证和通道加密,同时可以根据服务的身份进行授权管理。其中Pilot下发安全相关配置,Citadel管理证书和密钥。

7.通过将Envoy的数据发送到管理平面的Mixer组件,从而进行监控。监控数据可以发送给prometheus等。

8.通过 Mixer 连接后端服务来控制服务间的访问,判断对访问是放行还 是拒绝,进行流量控制和访问控制。

9.在网格的入口处有一个 Envoy 扮演入口网关的角色。

IngressGateway

作为一个服务网格,Istio需要有一个入口,就是IngressGateway。

Gally

一个配置管理工具,它以服务的形式运行,持续监控k8s中istio的配置资源,验证并分发这些配置,它通过 Kubernetes 的 ValidatingWebhook 机制来对配置进行验证,确保用户提交的 Istio 配置是有效的、正确的,并且符合 Istio 的预期行为。

Gally使得Istio可用与kubernetes之外的其他环境一起工作,因为它可以将不同的配置数据转化为Istio可以理解的通用格式。

Citadel

名字来源于堡垒,象征着安全和保护。它在 Istio 中负责安全功能,特别是身份认证和证书管理,保护服务间的通信安全。

Istio部署

环境变量:将istio的压缩文件解压,并在解压文件的同名文件下(istio-1.10.1)将本文件夹加入系统环境变量:

export PATH=$PWD/bin:$PATH

然后,将 istioctl 可执行文件从 /root/istio-1.10.1/bin/ 目录拷贝到系统的 /usr/bin/ 目录中,从而在终端中全局使用 istioctl 命令。

cp -ar /root/istio-1.10.1/bin/istioctl /usr/bin/

随后上传镜像到各个工作节点,然后在master节点执行:

istioctl install --set profile=demo -y

则可以看到三个pod被成功部署:engressgateway,ingressgateway和istiod

[root@master ~]# kubectl get pods -n istio-system -owide
NAME                                    READY   STATUS    RESTARTS   AGE   IP               NODE    NOMINATED NODE   READINESS GATES
istio-egressgateway-798787bd74-kj7tr    1/1     Running   0          22h   10.244.104.12    node2   <none>           <none>
istio-ingressgateway-5d6489bf96-ps5t5   1/1     Running   0          22h   10.244.166.189   node1   <none>           <none>
istiod-7d58bfb8-xtfjd                   1/1     Running   0          22h   10.244.104.9     node2   <none>           <none>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值