Istio新架构揭秘:环境化Mesh

开发 架构
环境化Mesh代表了服务网格架构迈出的一大步,解决了Sidecar模型的一些挑战,并为用户提供了更多的灵活性和效率。

自问世以来,Istio因其使用Sidecar(可编程代理与应用容器一同部署)而备受认可。这种架构选择使Istio用户能够享受其好处,而无需对其应用进行 drast 改变。这些可编程代理,与应用容器紧密部署在一起,因其能够引入Istio的诸多好处而备受赞誉,同时又无需对应用进行重大更改。但总有改进的空间,现在Istio引入了环境化Mesh,这是其架构的重大演进。

Sidecar模型:优势和限制

传统Istio模型:Istio在工作负载的Pod中部署Envoy代理作为Sidecar。

Sidecar的优势:无需重构应用即可享受Istio的功能。

Sidecar的限制:

  • 侵入性: Sidecar需要集成到应用中,影响其Kubernetes Pod规格并重定向Pod流量。这经常导致需要重启应用Pod。
  • 资源利用不足: 由于每个Sidecar代理专门分配给其配对的工作负载,资源分配可能导致集群效率低下。
  • 流量中断: Istio的Sidecar可能对一些应用的流量捕获和HTTP处理造成问题。

环境化Mesh:克服限制

环境化Mesh采用分层方法,分割了Istio的功能:

  • 基础层: 一个安全的覆盖层,负责路由和确保流量的零信任安全。
  • 上层: 当用户需要访问Istio的广泛功能时,可以启用L7处理,而无需改变应用Pod。

这种方法的优势包括:

  • 允许逐步采用Istio:从无Mesh -> 安全覆盖层 -> 完整的L7处理。
  • 在不同环境模式或带有Sidecar的工作负载之间实现兼容性。

环境化Mesh的工作原理

  • 在Kubernetes集群的每个节点上都有一个共享代理(ztunnel),负责Mesh内的安全连接。

  • Ztunnel仅处理L4流量,将Istio的数据平面与应用关注点分离。
  • 当命名空间激活环境化模式时,将建立一个零信任覆盖层(具有mTLS、遥测、认证和L4授权)。
  • 对于L7功能,命名空间可以部署一个或多个基于Envoy的Waypoint代理。这些代理可以根据实时流量需求进行自动缩放。

安装环境化Mesh

(1) 下载Istio的最新版本,其中包含对环境化Mesh的alpha支持。

(2) 安装Kubernetes网关CRDs,在大多数Kubernetes集群上默认未安装

kubectl get crd gateways.gateway.networking.k8s.io &> /dev/null || \
{ kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd/experimental?ref=v0.8.0" | kubectl apply -f -; }

(3) ambient配置文件旨在帮助您开始使用环境化Mesh。使用上面下载的istioctl命令,在您的Kubernetes集群上安装带有ambient配置文件的Istio:

istioctl install --set profile=ambient --set "components.ingressGateways[0].enabled=true" --set "components.ingressGateways[0].name=istio-ingressgateway" --skip-confirmation
  • 安装了Istio核心
  • 安装了Istiod
  • 安装了CNI
  • 安装了入口网关
  • 安装了Ztunnel
  • 安装完成

(4) 使用以下命令验证已安装的组件:

kubectl get pods -n istio-system

名称                                     就绪   状态     重启次数   年龄

istio-cni-node-n9tcd                     1/1    运行中   0          57秒

istio-ingressgateway-5b79b5bb88-897lp    1/1    运行中   0          57秒

istiod-69d4d646cd-26cth                  1/1    运行中   0          67秒

ztunnel-lr7lz                            1/1    运行中   0          69秒

kubectl get daemonset -n istio-system

名称              预期   当前   就绪   最新   可用   节点选择器           年龄

istio-cni-node    1      1      1     1      1      kubernetes.io/os=linux   70秒

ztunnel            1      1      1     1      1      kubernetes.io/os=linux   82秒

安全考虑

环境化Mesh将安全性放在首位:

Ztunnel:尽管是一个共享资源,但ztunnel将其密钥限制在其节点上的工作负载上,降低风险。

  • Waypoint代理: 这些共享资源被限制在一个服务账户中,减少了来自受损代理的潜在伤害。
  • Envoy的作用: 凭借其强大、经过考验的特性,Envoy被认为比它配对的许多应用更安全。

性能和资源影响

  • 资源效率: 环境化Mesh的ztunnel减少了每个工作负载的预留资源。Waypoint代理的动态扩展也确保了资源优化。
  • 延迟问题: 虽然有一种看法认为Waypoint代理可能引入延迟,但Istio认为这能够通过与传统Sidecar模型相比减少的L7处理来平衡。

Sidecar的未来

环境化Mesh的推出并不意味着Sidecar的结束。它们仍然适用于需要专用数据平面资源的情景,比如合规性或性能调整。Istio将继续支持Sidecar,确保它们与环境化Mesh和谐共存。

总之,环境化Mesh代表了服务网格架构迈出的一大步,解决了Sidecar模型的一些挑战,并为用户提供了更多的灵活性和效率。

责任编辑:赵宁宁 来源: 小技术君
相关推荐

2021-10-14 18:21:52

架构IstioService

2021-12-08 17:54:55

架构控制平面

2019-04-28 11:20:01

Istio微服务架构

2020-02-26 22:02:04

Istio架构连接

2009-11-09 10:57:07

ibmdw软件架构

2011-07-22 13:55:48

架构

2011-04-26 09:18:53

FacebookPHPmysql

2024-04-11 13:51:47

markdown前端

2011-03-30 09:49:19

Firefox 5.0

2011-11-22 10:42:41

虚拟化新环境虚拟化部署

2023-11-07 17:32:31

Istiok8s

2022-05-13 07:22:39

携程微服务SOA

2019-01-10 11:12:15

Nginx服务器架构

2015-09-01 10:52:16

安全数据分析架构

2011-07-18 10:39:34

HTML 5

2022-05-23 10:55:19

华为数字化转型架构蓝图

2009-01-04 09:26:44

架构Google服务器

2021-01-18 11:27:03

Istio架构云环境

2009-11-05 14:03:57

WCF承载环境
点赞
收藏

51CTO技术栈公众号