你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
AKS 预览功能可在自助服务和自愿选择的基础上启用。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 AKS 预览功能是由客户支持尽最大努力部分覆盖。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:
Azure Kubernetes 应用程序网络体系结构分为三个层: 管理平面、 控制平面和数据 平面。 每个层都有不同的职责,共同为 Azure Kubernetes 服务(AKS)提供完全托管的基于环境的服务网络解决方案。 这种体系结构实现了服务之间安全、策略驱动的通信,而不需要挎斗或对应用程序进行更改。
本文概述了 Azure Kubernetes 应用程序网络的体系结构层、交互方式以及支持可缩放跨群集通信的多群集服务发现模型。 有关 Azure Kubernetes 应用程序网络的详细信息,请参阅 AKS 的 Azure Kubernetes 应用程序网络概述。
应用程序网络体系结构层概述
体系结构层管理以下职责:
- 管理平面:处理 Azure 资源操作,例如创建、更新和删除应用程序网络资源以及管理群集成员身份。
- 控制平面:管理每个成员群集的网格配置、证书生命周期和服务发现。
- 数据平面:使用 Ambient 模式直接在成员群集中保护服务到服务流量,这不需要挎斗或对应用程序进行更改。
对于多群集部署,应用程序网络跨成员群集同步服务发现信息,以便服务可以跨群集边界以透明方式进行通信。
下图演示了 Azure Kubernetes 应用程序网络的体系结构层,以及它们如何相互交互以及与 AKS 群集进行交互:
管理平面
管理平面是处理所有应用程序网络资源操作的 Azure 资源提供程序。 创建应用程序网络资源或加入成员群集时,管理平面会验证请求、预配支持 Azure 资源(例如用于证书存储的 Azure Key Vault),并协调为成员创建区域控制平面。
可以通过 Azure CLI(az appnet)或 ARM API 与管理平面进行交互。 管理平面协调所有下游预配,以便无需手动干预即可部署控制平面和数据平面组件。
控制平面
控制平面是完全托管的基础结构,可在 AKS 群集外部运行。 成员群集加入应用程序网络时,在与成员群集相同的 Azure 区域中预配专用控制平面,从而保持控制与数据平面组件之间的延迟较低。
注释
不同 Azure 区域中的成员在其各自的区域中部署了控制平面。
控制平面包括以下组件:
- Istiod:连接到成员群集的 Kubernetes API 服务器,以发现服务和监视配置更改。 它将 xDS 配置推送到数据平面中的 ztunnel 和 waypoint 代理。 在多群集部署中,Istiod 还连接到其他成员群集的 Kubernetes API 服务器,以获取服务发现信息,从而启用跨群集服务发现。
- 证书管理:预配和轮换 Azure Key Vault 支持的 CA 证书。 根 CA 在所有成员群集之间建立共享信任边界,每个成员都会收到一个颁发短期工作负荷证书的中间 CA。 有关详细信息,请参阅 Azure Kubernetes 应用程序网络安全概述。
- 生命周期管理:部署和升级成员群集中的所有数据平面组件,包括 ztunnel、Istio CNI、waypoint 代理和自定义资源定义(CRD)。 有关详细信息,请参阅 配置 Azure Kubernetes 应用程序网络成员的升级。
数据平面
数据平面由部署到成员群集命名空间中的 applink-system 组件组成。 应用网络使用 Istio Ambient 模式,因此不会向工作负荷中注入挎斗。
数据平面包括以下组件:
- Ztunnel:一个作为 DaemonSet 部署的节点级 L4 代理。 Ztunnel 截获节点上的服务到服务流量,以透明方式建立 mTLS 连接,并强制实施 L4 授权策略。
- Waypoint 代理:可选的每个命名空间 L7 代理,提供 HTTP 路由、流量转移、故障注入和 L7 授权。 仅当为命名空间配置 L7 策略时,才部署 Waypoint 代理。
- 东西网关:处理多群集部署中的跨群集流量。 你负责在每个成员集群的东西向网关之间提供网络连接。 有关详细信息,请参阅 多群集服务发现。
- Istio CNI:一个 DaemonSet,用于配置 pod 网络以实现环境网格流量拦截。
- CRD:用于配置流量管理和安全策略的 Kubernetes 自定义资源定义。
在服务之间发出请求时,ztunnel 会截获流量,与目标的 ztunnel 建立 mTLS 连接,并将请求传送到目标工作负荷。 如果配置了 L7 策略,则流量会在到达其目标之前通过路点代理路由。 对于跨群集流量,ztunnel 通过东西网关路由,以访问远程成员群集中的工作负荷。
多群集服务发现
应用程序网络支持将多个 AKS 群集连接到统一的服务网格。 在一个成员群集中的服务可以与其他成员群集中的服务进行通信,且在群集之间端到端强制实施 mTLS。
在开源 Istio 多群集部署中,控制平面通常连接到其他群集的 Kubernetes API 服务器,以发现服务和配置更改。 应用程序网络遵循类似的服务发现模型,其中控制平面从成员群集获取服务信息,以便跨群集边界发现服务。 此方法使一个成员群集中的工作负荷能够解析并与其他群集中运行的服务通信,而无需更改应用程序。 添加新成员群集会扩展网格成员身份,以便新群集中的服务可由其他成员发现。
跨群集流量通过部署在每个成员群集中的东西向网关流动。 你负责在成员群集的东西网关之间提供网络可访问性,例如,通过 VNet 对等互连、VPN 或其他连接解决方案。 所有跨群集流量都使用 mTLS 进行加密。
组件如何交互
控制平面连接到成员群集的 Kubernetes API 服务器,监视服务和配置更改,并将 xDS 更新推送到 ztunnel 和 waypoint 代理。 当存在多个成员时,每个控制平面还通过托管消息传送交换服务信息,以便每个成员都具有跨网格的所有服务的一致视图。
证书管理在创建应用程序网络资源并为每个成员群集颁发中间 CA 时预配根 CA。 工作负荷证书的有效期为 24 小时,每 12 小时自动轮换一次。 从根 CA 到中间证书和工作负荷证书的整个证书生命周期都是在不手动干预的情况下管理的。
有关完整的证书层次结构和轮换计划,请参阅 Azure Kubernetes 应用程序网络安全概述。
相关内容
有关 Azure Kubernetes 应用程序网络的详细信息,请参阅以下文章: