适用于 Azure Kubernetes Fleet Manager 的跨群集网络(预览版)

Azure Kubernetes Fleet Manager 提供了一个专用的跨群集网络解决方案,用于跨多个群集扩展 Kubernetes 数据路径。 使用跨群集网络,任何连接的群集都能够与任何其他连接的群集上的终结点直接通信,并强制实施完整的网络策略。 使用跨群集网络允许群集发布服务,以便任何连接的群集都可以像本地一样调用它们。

可以在 Fleet Manager 中创建多个跨群集网络配置文件,唯一的限制是成员群集只能参与单个跨群集网络。

本文介绍适用于 Azure Kubernetes Fleet Manager 的跨群集网络的关键概念。

重要

Azure Kubernetes Fleet Manager 预览版功能在自助服务上可用,可以选择加入。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 Azure Kubernetes Fleet Manager 预览版的客户支持服务仅在最大努力的基础上部分提供。 因此,这些功能并不适合用于生产。

先决条件和限制

  • 机队管理器成员群集随时只能参与单个跨群集网络。
  • 群集必须连接到 单个平面网络 (虚拟网络或多个对等网络)。
  • 不支持使用隧道的叠加网络。
  • 无法同时部署自管理的 Cilium 多群集。
  • 跨群集网络最多可以有 255 个成员群集。
  • ACNS 设置了所部署的 Cilium 版本以及已启用的功能。 当前无法直接修改这些内容。

基础概念

适用于 Azure Kubernetes Fleet Manager 的跨群集网络提供了一个机队管理的 Cilium 多群集部署,消除了在每个成员群集上配置和管理 Cilium 多群集数据平面组件的开销。

当群集加入跨群集网络时,Cilium 代理(cilium-agent)和 clustermesh-apiserver 由机队管理器部署在群集的控制平面上。 同一跨群集网络上的现有群集使用新添加的群集的详细信息进行更新,Cilium 代理配置基于 eBPF 的路由,以允许每个群集上的 Pod 在没有代理或网关的情况下直接通信。

每个群集保留其 Pod 和服务的本地 CIDR IP 地址配置。 本地 Cilium 组件负责路由,允许一个群集中的 Pod 像本地一样访问远程群集中的服务。

对于流量流控制,Cilium 网络策略(CiliumNetworkPolicy)可用于控制跨群集数据流,使管理员能够在跨群集网络中强制实施边界。

定义全局服务

任何跨群集网络成员上的 Kubernetes 服务都可以通过添加值设置为service.cilium.io/global的批注true,在跨群集网络上全局可用。 使用此注释将服务部署到多个跨群集网络成员群集,以透明方式对这些群集的请求进行负载均衡。

可以通过添加值为service.cilium.io/shared的注释false,从负载均衡的全局服务中暂时删除群集。 如果不希望完全删除服务或群集,则使用此方法非常有用。

调试和故障排除

标准 Cilium 命令行接口 (CLI) 工具适用于 Fleet Manager 的跨群集网络。 某些命令,如upgradeclustermesh connect不起作用,因为这些操作现在由车队管理器负责。

下面是调试和故障排除入门的高级步骤:

  • 从官方 Cilium CLI GitHub 存储库安装适用于您的操作系统的最新稳定版本的 Cilium CLI。
  • 选择一个跨群集网络的成员群集,并通过az aks get-credentials命令检索它的 kubeconfig。
  • 使用 Cilium CLI,使用 --context 参数传递群集上下文。

Cilium CLI 可以管理多个 Cilium 版本。

更新跨群集网络

采用跨群集网络而不是自行安装和运行 Cilium 多群集的原因之一是,机队管理器会使 Cilium 的组件保持最新。

跨群集网络的 Cilium 组件更新作为 AKS Kubernetes 版本的一部分捆绑在一起。 通过预验证 Cilium 组件使用群集运行的 Kubernetes 版本,可以简化升级,确保跨群集网络保持稳定。

此方法意味着可以使用 Fleet Manager 的 更新运行和策略 来升级群集的控制平面,并定义群集的更新顺序。

后续步骤