技术分享之 Ambient Mesh vs Sidecar vs Proxyless

Ambient Mesh vs Sidecar vs Proxyless 实现service mesh 能力对比

Posted by 董江 on Wednesday, November 22, 2023

Ambient Mesh vs Sidecar vs Proxyless 实现service mesh 能力对比

背景

sidecarproxyless 再到 Ambient 模式

Ambient Mesh 模式是一种 Sidecar less模式, 将服务直接sidecar代理转换到统一网络ztunnel共享代理

Ambient 模式对应用程序本身没有任何侵入,而是在应用程序外围:

  1. Node上通过DamentSet部署 ztunnel:使用 Envoy 实现的共享代理,多租户模式,负责 L4 网络,主要是安全性方面;
  2. 服务集为单位部署 Waypoint proxy:同样使用 Envoy 实现,单租户模式,使用 Gateway API 部署的 Gateway 资源,负责 L7 网络,当服务需要 L7 网络功能的时候才部署;

Sidecar模式

sidecar

Sidecar 模式有以下限制:

  • Sidecar 容器生命周期不受控制,有可能在 sidecar 就没准备好的情况下,pod 就开始接收连接,让 sidecar 的生命周期与应用程序 pod 绑定,这本身就是对应用程序在部署形态上的一种入侵
  • Sidecar 无法解释不规范的七层系列,如 HTTPDubbo gRPC
  • 如果仅需服务网格的安全功能,那么引入 sidecar 是一次过大的投资,因为它增加了很多七层网络功能,这些是用不到的,客户无法做到渐进式采用服务网格;
  • Sidecar 升级时,应用程序需要重新部署或者启动,这需要对应用程序进行协调;
  • 引入Sidecar 对开发、调试、测试环节添加的负载度;

Proxyless模式

proxyless

Proxyless 模式有以下限制:

  • Proxyless 默认是将istiod的 xds 实现在Framework中,需要开发多种语言的sdk. 和开发框架 开发语言绑定
  • 可移植性低: 无法通过切换sidecar的形式来非侵入式地升级基础设施.

Ambient Mesh模式

Ambient

  • ambient 模式 :使得 Istio 越来越复杂,用户理解起来更加费力;控制平面为了支持多种数据平面部署模式,其实现将更加复杂。
  • 安全问题: 统一的ztunnel,Node节点共用网络外围组件,扩大是故障影响半径;
  • 升级 sidecar 也会带来很大的运营成本

试用后的感想

  1. Ambient Mesh: 需要两个组件ztunnel(多租户Envoy) 和 Waypoint proxy (单租户Envoy) , 来实现旁路网络转发;
  2. 未来不排除使用其他语言(非 C++,如 Rust)来实现一个轻量级的 ztunnel;
  3. 未来Ambient Mesh 和 Sidecar Mesh 模式将会并存;

使用

  1. 安装Ambient
$ istioctl install --set profile=ambient
  1. 开启 ambient 模式
$ kubectl label namespace default istio.io/dataplane-mode=ambient
  1. 开启L7 网络功能
apiVersion: gateway.networking.k8s.io/v1alpha2
kind: Gateway
metadata:
 name: service-a
 annotations:
   istio.io/service-account: sa-service-a
spec:
 gatewayClassName: istio-mesh
  1. 限制
  • 对 Kubernetes 版本的要求不低于 1.25å
  • 不支持 EnvoyFilter;
  • 不支持 IPv6;
  • 直接对 Pod IP 而不是 service 的请求在某些情况下将无效;
  • Ambient 模式下的服务无法通过 LoadBalancer 和 NodePort 方式访问,不过你可以部署一个入口网关(未启用 ambient 模式)以从外部访问服务;
  • 不支持 Calico CNI 和 Dataplane V2 CNI,因为 Ambient 模式会使用 Istio CNI,与其他 CNI 冲突;

其他

「如果这篇文章对你有用,请随意打赏」

Kubeservice博客

如果这篇文章对你有用,请随意打赏

使用微信扫描二维码完成支付