升级 Azure Kubernetes 服务 (AKS) 群集的 Azure CNI IPAM 模式和数据平面技术

始终有新的 IP 分配管理(IPAM)模式和支持 Azure Kubernetes 服务(AKS)的数据平面技术。 现有 AKS 群集不可避免地需要升级到较新的 IPAM 模式和数据平面技术,才能访问最新的功能和可支持性。 本文提供有关升级现有 AKS 群集的指南,以 将 Azure CNI 覆盖层用于 IPAM 模式并使用由 Cilium 提供支持的 Azure CNI 作为数据平面。

将 IPAM 模式升级到 Azure CNI 覆盖层

注释

将现有群集升级到 CNI 覆盖是不可逆的过程。

注释

如果群集满足以下条件,则可以将现有 Azure CNI 群集更新为覆盖层:

  • 群集使用 Kubernetes 版本 1.22+。
  • 不使用 动态 IP 分配 功能。
  • 未启用网络策略。 如果需要在升级群集之前卸载网络策略引擎,请按照 卸载 Azure 网络策略管理器或 Calico 中的步骤作。
  • 不将 Docker 的任何 Windows 节点池用作容器运行时。

警告

在 Windows 操作系统内部版本 20348.1668 之前,Windows Overlay Pod 存在一个限制,会错误地对来自主机网络 Pod 的数据包执行 SNAT,这对升级到 Overlay 的群集造成了更大的不利影响。 若要避免此问题, 请使用大于或等于 20348.1668 的 Windows OS 内部版本

警告

  • 如果使用自定义 azure-ip-masq-agent 配置来包含不应对来自 Pod 的数据包执行 SNAT 的其他 IP 范围,则升级到 Azure CNI Overlay 可能会中断与这些范围的连接。 覆盖空间中的 Pod IP 无法访问群集节点以外的任何内容。
  • 对于旧群集,可能还有以前版本的 azure-ip-masq-agentConfigMap。 如果此名为 azure-ip-masq-agent-config 的 ConfigMap 存在,并且并非有意设置,则应在升级之前将其删除。
  • 如果不使用自定义ip-masq-agent配置,则对于Azureazure-ip-masq-agent-config-reconciledConfigMaps来说,应该仅存在ip-masq-agent ConfigMap,并且在升级过程中会自动更新。

升级过程会触发每个节点池同时重建镜像。 不支持单独将每个节点池升级到 Overlay 网络层。 群集网络的任何中断都类似于节点映像升级或 Kubernetes 版本升级,其中节点池中的每个节点都会重新映像。

使用 az aks update 命令更新现有的 Azure CNI 群集以使用 Azure CNI Overlay。

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,而该空间不会与现有节点子网重叠。 Pod CIDR 也不能与节点池的任何 VNet 地址重叠。 例如,如果 VNet 地址为 10.0.0.0/8,节点位于子网 10.240.0.0/16 中,则 不能与 10.0.0.0/8 或群集上的现有服务 CIDR 重叠。

将数据平面升级到由 Cilium 提供支持的 Azure CNI

注释

使用其他网络策略引擎(Azure NPM 或 Calico)在群集中启用 Cilium 时,将卸载网络策略引擎并将其替换为 Cilium。 有关详细信息,请参阅 卸载 Azure 网络策略管理器或 Calico

注释

如果群集没有任何 Windows 节点池,则可以将现有群集更新为由 Cilium 提供支持的 Azure CNI。

警告

升级过程会触发每个节点池同时重建镜像。 不支持单独升级每个节点池。 群集网络的任何中断都类似于节点映像升级或 Kubernetes 版本升级 ,其中节点池中的每个节点都会重新映像。 Cilium 将仅在重新映像所有节点后才开始强制实施网络策略。

若要执行升级,需要 Azure CLI 2.52.0 或更高版本。 运行 az --version 查看当前安装的版本。 如果需要进行安装或升级,请参阅安装 Azure CLI

使用 az aks update 命令将现有群集升级到由 Cilium 提供支持的 Azure CNI。

az aks update \
  --name $CLUSTER_NAME \
  --resource-group $RESOURCE_GROUP \
  --network-dataplane cilium