共用方式為

更新适用于 Azure Kubernetes 服务 (AKS) 群集的 Azure CNI IPAM 模式和数据平面技术

现有的 Azure Kubernetes 服务(AKS)群集不可避免地需要更新更新的 IP 分配管理(IPAM)模式和数据平面技术,才能访问最新的功能和可支持性。 本文提供关于更新现有 AKS 群集的指导,具体而言,将 Azure CNI 覆盖网络用于 IPAM 模式,并利用由 Cilium 支持的 Azure CNI 作为数据平面。

将 IPAM 模式更新到 Azure CNI 覆盖层

将现有群集更新到 Azure CNI 覆盖是不可逆的过程。

如果群集有以下情况,可以将现有 AKS 群集更新到 Azure CNI 覆盖层:

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

在 Windows 操作系统版本 20348.1668 之前,Windows overlay pods 存在一个局限性,通过源网络地址转换(SNAT)错误地路由来自主机网络 pods 的数据包。 此限制对更新到 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 配置,则只 azure-ip-masq-agent-config-reconciled 应存在与 Azure ip-masq-agent ConfigMap 相关的 ConfigMap。 它在更新过程中自动更新。

更新过程触发节点池同时重建映像。 不支持单独将每个节点池更新到 Azure CNI 覆盖层。 群集网络的任何中断都类似于节点映像更新或 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。 新的覆盖空间不会与现有的 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 网络策略管理器或 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