使用 Azure Kubernetes 服务(AKS)中的容器创建 Windows Server 节点池

对于 Kubernetes 版本 1.20 及更高版本,可以指定 containerd 为 Windows Server 2019 节点池的容器运行时。 从 Kubernetes 1.23 开始,containerd 是 Windows 的默认且唯一的容器运行时。

本文介绍如何在 Azure Kubernetes 服务(AKS)中创建 Windows Server 节点池, 使用 containerd

先决条件

限制和注意事项

使用 Windows Server 节点池 containerd时,请记住以下限制和注意事项:

  • 控制平面和 Windows Server 2019 节点池都必须使用 Kubernetes 1.20 或更高版本。
  • 创建或更新节点池以运行 Windows Server 容器时,默认值 --node-vm-sizeStandard_D2s_v3,这是 Windows Server 2019 节点池的最低建议大小,最高为 Kubernetes 版本 1.20。 Windows Server 2019 节点池使用的 containerd 最小建议大小为 Standard_D4s_v3。 设置 --node-vm-size 参数时,请检查 受限制的虚拟机(VM)大小列表
  • 建议在运行 的 Windows Server 2019 节点池中使用 containerd,并在部署中使用容忍或节点选择器,以确保正确调度工作负载。

使用 containerd 添加 Windows Server 节点池

  • 使用 [containerd][az-aks-nodepool-add] 将 Windows Server 节点池添加到az aks nodepool add现有群集。

    注释

    如果未指定WindowsContainerRuntime=containerd自定义标头,节点池将默认使用containerd作为容器运行时。

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP \
        --cluster-name $CLUSTER_NAME \
        --os-type Windows \
        --name $CONTAINER_D_NODE_POOL_NAME \
        --node-vm-size Standard_D4s_v3 \
        --kubernetes-version 1.20.5 \
        --aks-custom-headers WindowsContainerRuntime=containerd \
        --node-count 1
    

将现有 Windows Server 节点池升级到 containerd

  • 将特定节点池从 Docker 升级到 containerd 使用 [az aks nodepool upgrade][az-aks-nodepool-upgrade] 命令。

    export CONTAINER_D_NODE_POOL_NAME="mywindowsnodepool"
    
    az aks nodepool upgrade \
        --resource-group $RESOURCE_GROUP \
        --cluster-name $CLUSTER_NAME \
        --name $CONTAINER_D_NODE_POOL_NAME \
        --kubernetes-version 1.20.7 \
        --aks-custom-headers WindowsContainerRuntime=containerd
    

将所有的现有 Windows Server 节点池升级到containerd

  • 将所有节点池从 Docker 升级到 containerd 使用 [az aks nodepool upgrade][az-aks-nodepool-upgrade] 命令。

    az aks nodepool upgrade \
        --resource-group $RESOURCE_GROUP \
        --cluster-name $CLUSTER_NAME \
        --kubernetes-version 1.20.7 \
        --aks-custom-headers WindowsContainerRuntime=containerd
    

后续步骤

有关 AKS 中的节点池的详细信息,请参阅 管理 Azure Kubernetes 服务(AKS)中群集的节点池