现有Azure Kubernetes Service (AKS)群集不可避免地需要更新到更新的 IP 分配管理(IPAM)模式和数据平面技术,才能访问最新的功能和可支持性。 本文提供有关更新现有 AKS 群集的指南,以将 Azure CNI 覆盖层用于 IPAM 模式,并将由 Cilium 支持的 CNI Azure 用作数据平面。
支持的迁移路径
AKS 支持现有群集的单向转发网络迁移路径。 仅支持迁移到Azure CNI Overlay。
以下迁移是唯一受支持的迁移:
- Azure CNI (节点子网) → Azure CNI 覆盖网络
- Kubenet → Azure CNI 叠加网络
将群集更新为 Azure CNI 覆盖是一种单向不可逆的操作。 更新群集后,无法将其迁移回基于节点子网的网络模式。
将 IPAM 模式更新为 Azure CNI 覆盖网络
将现有群集更新为 Azure CNI 覆盖是不可逆的过程。
如果群集有以下情况,可以将现有 AKS 群集更新为 Azure CNI 覆盖层:
- 在 Kubernetes 版本 1.27 或更高版本上。
- 不使用 动态 IP 分配 功能。
- 未启用网络策略。 如果需要在更新群集之前卸载网络策略引擎,请按照 Uninstall Azure Network Policy Manager 或 Calico 中的步骤操作。
- 不使用Docker作为容器运行时的任何 Windows 节点池。
在 Windows 操作系统版本 20348.1668 之前,由于源网络地址转换 (SNAT),Windows 覆盖 Pod 错误地将来自主机网络 Pod 的数据包路由,这存在一定的限制。 此限制对更新到 Azure CNI 覆盖层的群集产生了不利影响。 若要避免此问题,请使用 Windows OS 内部版本 20348.1668 或更高版本。
警告
如果使用自定义
azure-ip-masq-agent配置来包含不应从 Pod 发送 SNAT 数据包的其他 IP 范围,则更新到 Azure CNI 覆盖可能会中断与这些范围的连接。 覆盖空间中的 Pod IP 无法访问群集节点以外的任何内容。对于旧群集,ConfigMap 可能会遗留下来于以前的版本
azure-ip-masq-agent。 如果此 ConfigMap(命名为azure-ip-masq-agent-config)存在且不是有意设置的,则应在更新之前将其删除。如果不使用自定义
ip-masq-agent配置,则应仅存在与 Azureazure-ip-masq-agent-config-reconciledConfigMap 相关联的ip-masq-agentConfigMap。 它在更新过程中自动更新。
更新过程触发节点池同时重建映像。 不支持将每个节点池单独更新为 Azure CNI 覆盖。 群集网络的任何中断都类似于节点映像更新或 Kubernetes 版本升级,其中节点池中的每个节点都会重新映像。
使用 az aks update 命令更新现有Azure容器网络接口(CNI)群集以使用 Azure CNI 覆盖。
az aks update \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--network-plugin-mode overlay \
--pod-cidr 192.168.0.0/16
--pod-cidr 参数在从旧 CNI 插件更新时是必需的,因为 Pod 需要从新的覆盖网络空间获取 IP。 新的覆盖空间不会与现有的 Azure CNI 节点子网插件重叠。
Pod 的无类域间路由(CIDR)也不能与节点池的任何虚拟网络地址重叠。 例如,如果虚拟网络地址为 10.0.0.0/8,并且节点位于子网 10.240.0.0/16 中,则 --pod-cidr 参数不能与群集上的 10.0.0.0/8 或现有服务 CIDR 重叠。
将数据平面更新为使用 Cilium 支持的 Azure CNI
Azure CNI 由 Cilium 提供支持,是 AKS 推荐和支持的长期网络配置。 它将Azure CNI 控制平面与 Cilium 数据平面相结合,以提供可缩放的网络和高级安全功能。
更新注意事项
- 在单个操作中无法更新 IPAM 模式和数据平面。 如果计划迁移到 Azure CNI Overlay 和由 Cilium 提供支持的 Azure CNI,则必须:
- 首先将 IPAM 模式更新为Azure CNI 覆盖。
- 将数据平面作为独立操作更新为由 Cilium 支持的 Azure CNI。
- 在使用另一个网络策略引擎(Azure网络策略管理器或 Calico)的群集上启用 Cilium 时,现有引擎将被卸载并替换为 Cilium。 这可能会影响网络策略行为。有关详细信息,请参阅 [从网络策略管理器 (NPM) 迁移到 Cilium 网络策略] (./migrate-from-npm-to-cilium-network-policy.md)
- 在具有 Windows 节点池的群集上,不支持将数据平面更新为由 Cilium 提供支持的 Azure CNI。
- 启用了节点自动预配(NAP)的群集无法更新为由 Cilium 支持的 Azure CNI。作为解决方法,可在更新前禁用 NAP,更新完成后再重新启用。
警告
更新过程触发节点池同时重建映像。 不支持单独更新每个节点池。 群集网络的任何中断都类似于节点映像更新或 Kubernetes 版本升级 ,其中节点池中的每个节点都会重新映像。 Cilium 仅在重新映像所有节点后才开始强制实施网络策略。
若要执行更新,需要Azure CLI 2.52.0 或更高版本。 运行 az --version 查看当前安装的版本。 如果需要安装或升级,请参阅 安装 Azure CLI。
使用 Azure az aks update 命令将现有群集更新为由 Cilium 提供支持的 CNI。
az aks update \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--network-dataplane cilium