你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
升级 Azure Kubernetes 服务 (AKS) IPAM 模式和数据平面技术
由于始终有新的 IP 分配管理 (IPAM) 模式和数据平面技术支持 Azure Kubernetes 服务 (AKS),因此不可避免地会出现现有 AKS 群集需要升级到更新的 IPAM 模式和数据平面技术才能访问最新功能和可支持性的情况。 本文提供有关升级现有 AKS 群集以将 Azure CNI 覆盖用于 IPAM 模式,并使用由 Cilium 提供支持的 Azure CNI 作为其数据平面的指南。
将现有群集升级到 Azure CNI 覆盖
注意
如果群集满足以下条件,则可以将现有 Azure CNI 群集更新为覆盖层:
- 群集使用 Kubernetes 版本 1.22+。
- 请勿使用动态 Pod IP 分配功能。
- 请勿启用网络策略。 可以在升级前卸载网络策略引擎,请参阅卸载 Azure 网络策略管理器或 Calico。
- 请勿使用将 docker 作为容器运行时的任何 Windows 节点池。
注意
将现有群集升级到 CNI 覆盖是一个不可逆的过程。
警告
在低于 Windows OS 内部版本 20348.1668 的版本中,围绕 Windows 覆盖 Pod 的限制错误地对来自主机网络 Pod 的数据包执行 SNAT,这对升级到覆盖层的群集具有更不利的影响。 若要避免此问题,请使用大于或等于 20348.1668 的 Windows OS 内部版本。
警告
如果使用自定义 azure-ip-masq-agent 配置来包含不应从 Pod SNAT 数据包的其他 IP 范围,则升级到 Azure CNI 覆盖可能会中断到这些范围的连接。 群集节点外部的任何内容都无法访问覆盖空间中的 Pod IP。
此外,对于足够旧的群集,可能还有旧版 azure-ip-masq-agent 的 ConfigMap。 如果这个名为 azure-ip-masq-agent-config
的 ConfigMap 存在并且不是有意放置的,则应在运行 update 命令之前将其删除。
如果不使用自定义 ip-masq-agent 配置,则应仅存在与 Azure ip-masq-agent ConfigMaps 相关的 azure-ip-masq-agent-config-reconciled
ConfigMap,并且这会在升级过程中自动更新。
升级过程将触发每个节点池同时重新映像。 不支持单独将每个节点池升级到覆盖层。 群集网络的任何中断都类似于节点映像升级或 Kubernetes 版本升级,其中节点池中的每个节点都会重新映像。
Azure CNI 群集升级
使用 [az aks update
][az-aks-update] 命令更新现有 Azure CNI 群集以使用覆盖。
clusterName="myOverlayCluster"
resourceGroup="myResourceGroup"
location="westcentralus"
az aks update --name $clusterName \
--resource-group $resourceGroup \
--network-plugin-mode overlay \
--pod-cidr 192.168.0.0/16
从旧 CNI 升级时需要 --pod-cidr
参数,因为 Pod 需要从与现有节点子网不重叠的新覆盖空间获取 IP。 Pod CIDR 也不能与节点池的任何 VNet 地址重叠。 例如,如果 VNet 地址为 10.0.0.0/8,节点位于子网 10.240.0.0/16 中,则 --pod-cidr
不能与 10.0.0.0/8 或群集上的现有服务 CIDR 重叠。
Kubenet 群集升级
使用 [az aks update
][az-aks-update] 命令更新现有 Kubenet 群集以使用 Azure CNI 覆盖。
clusterName="myOverlayCluster"
resourceGroup="myResourceGroup"
location="westcentralus"
az aks update --name $clusterName \
--resource-group $resourceGroup \
--network-plugin azure \
--network-plugin-mode overlay
由于群集已为 Pod 使用不与 VNet IP 空间重叠的专用 CIDR,因此无需指定 --pod-cidr
参数,在未使用该参数的情况下,Pod CIDR 将保持不变。
注意
从 Kubenet 升级到 CNI 覆盖时,Pod 路由不再需要使用路由表。 如果群集使用的是客户提供的路由表,则迁移操作期间会自动删除用于将 Pod 流量定向到正确节点的路由。 如果群集使用的是托管路由表(路由表由 AKS 创建并驻留在节点资源组中),则会将路由表作为迁移的一部分删除。
将现有群集升级到由 Cilium 提供支持的 Azure CNI
注意
如果群集满足以下条件,则可以将现有 Azure CNI 群集升级为由 Cilium 提供支持的 Azure CNI:
- 群集使用 Azure CNI 覆盖具有动态 IP 分配的 Azure CNI。 这不包括 Azure CNI。
- 群集没有任何 Windows 节点池。
注意
使用其他网络策略引擎(Azure NPM 或 Calico)在群集中启用 Cilium 时,将卸载网络策略引擎并将其替换为 Cilium。 有关详细信息,请参阅“卸载 Azure 网络策略管理器或 Calico”。
警告
升级过程将触发每个节点池同时重新映像。 不支持单独升级每个节点池。 群集网络的任何中断会类似于节点映像升级或 Kubernetes 版本升级,其中节点池中的每个节点会重新映像。 Cilium 将仅在所有节点重新映像后开始强制实施网络策略。
要执行升级,需要具有 Azure CLI 2.52.0 或更高版本。 运行 az --version
查看当前安装的版本。 如果需要进行安装或升级,请参阅安装 Azure CLI。
使用以下命令将现有群集升级到由 Cilium 提供支持的 Azure CNI。 替换 <clusterName>
和 <resourceGroupName>
的值:
az aks update --name <clusterName> --resource-group <resourceGroupName> \
--network-dataplane cilium