始终有新的 IP 分配管理(IPAM)模式和支持 Azure Kubernetes 服务(AKS)的数据平面技术。 现有 AKS 群集不可避免地需要升级到较新的 IPAM 模式和数据平面技术,才能访问最新的功能和可支持性。 本文提供有关将现有 AKS 群集升级为使用适用于 IPAM 模式的 Azure CNI overlay,并采用由 Cilium 提供支持的 Azure CNI 作为数据平面的指南。
升级到 Azure CNI Overlay
注释
如果群集满足以下条件,则可以将现有 Azure CNI 群集更新为覆盖层:
- 群集使用 Kubernetes 版本 1.22+。
- 不使用动态 Pod IP 分配功能。
- 未启用网络策略。 可以在升级前卸载网络策略引擎,请参阅卸载 Azure 网络策略管理器或 Calico。
- 不使用任何以 Docker 作为容器运行时的 Windows 节点池。
注释
将现有群集升级到 CNI 覆盖是不可逆的过程。
警告
在 Windows 操作系统内部版本 20348.1668 之前,Windows Overlay Pod 存在一个限制,会错误地对来自主机网络 Pod 的数据包执行 SNAT,这对升级到 Overlay 的群集造成了更大的不利影响。 若要避免此问题,请使用大于或等于 20348.1668 的 Windows OS 内部版本。
警告
如果使用自定义的 azure-ip-masq-agent 配置来包含不应对来自 Pod 的数据包执行 SNAT 的额外 IP 范围,那么升级到 Azure CNI Overlay 可能会导致这些 IP 范围的连接中断。 覆盖空间中的 Pod IP 无法被群集节点以外的任何设备访问。
此外,对于足够旧的群集,可能存在以前版本的 azure-ip-masq-agent 遗留的 ConfigMap。 如果此名为 azure-ip-masq-agent-config
的 ConfigMap 存在,并且没有故意保持不变,则应在运行更新命令之前将其删除。
如果未使用自定义的 ip-masq-agent 配置,则应仅存在与 Azure ip-masq-agent ConfigMaps 相关的 azure-ip-masq-agent-config-reconciled
ConfigMap,并且该配置将在升级过程中自动更新。
升级过程会触发每个节点池同时重建镜像。 不支持单独将每个节点池升级到 Overlay 网络层。 群集网络的任何中断都类似于节点映像升级或 Kubernetes 版本升级,其中节点池中的每个节点都会重新映像。
Azure CNI 群集升级
使用 az aks update
命令更新现有 Azure CNI 群集以启用 Overlay。
clusterName="myOverlayCluster"
resourceGroup="myResourceGroup"
location="chinanorth3"
az aks update --name $clusterName \
--resource-group $resourceGroup \
--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 重叠。
Kubenet 群集升级
使用 az aks update
命令更新现有 Kubenet 群集以使用 Azure CNI 覆盖。
clusterName="myOverlayCluster"
resourceGroup="myResourceGroup"
location="chinanorth3"
az aks update --name $clusterName \
--resource-group $resourceGroup \
--network-plugin azure \
--network-plugin-mode overlay
由于群集已在对不与 VNet IP 空间重叠的 Pod 使用专用 CIDR,因此无需指定 --pod-cidr
参数,并且如果未使用参数,Pod CIDR 将保持不变。
注释
从 Kubenet 升级到 CNI Overlay 网络时,Pod 路由不再需要使用路由表。 如果群集使用的是客户提供的路由表,则迁移作期间会自动删除用于将 Pod 流量定向到正确节点的路由。 如果群集使用的是托管路由表(AKS 将创建驻留在节点资源组中的路由表),则会在迁移过程中删除该路由表。
使用 az aks update
命令更新现有的节点子网群集以使用 Azure CNI 覆盖。
clusterName="myOverlayCluster"
resourceGroup="myResourceGroup"
location="westcentralus"
az aks update --name $clusterName \
--resource-group $resourceGroup \
--network-plugin azure \
--network-plugin-mode overlay
注释
升级节点子网时,仅升级 IPAM 网络模式或数据平面。 不支持在单个操作中同时升级两者。
升级到由 Cilium 提供支持的 Azure CNI
注释
如果群集满足以下条件,则可以将现有 Azure CNI 群集升级为由 Cilium 提供支持的 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