Windows Server 半年渠道服务终止


本页面介绍关于 Google Kubernetes Engine (GKE) 标准集群中的 Windows Server 半年渠道 (SAC) 节点映像类型服务终止的信息。如需了解如何迁移到受支持的节点映像,请参阅迁移到受支持的 Windows 映像

关于 Windows Server SAC 移除

Microsoft 将于 2022 年 8 月 9 日弃用 Windows Server 半年渠道。这与 Windows Server 版本 20H2 服务终止日期一致。Windows Server 将使用长期服务渠道 (LTSC) 作为主要发布渠道。实施此变化后,Microsoft 将不再为 Windows Server SAC 映像发布关键更新,包括安全更新。因此,GKE 将无法再为这些映像提供支持。

GKE Standard 将不再支持创建使用 Windows Server SAC 映像类型的新节点池。如果您在现有节点池中使用以下映像类型之一,并且要升级 GKE 版本,则必须迁移到受支持的映像类型。

  • windows_sac:带有 Docker 的 Windows Server SAC
  • windows_sac_containerd:带有 Containerd 的 Windows Server SAC

您现有的 Windows Server SAC 节点池在 2022 年 8 月 9 日之后将继续正常运行。但是,由于 SAC 未来不再有更新,这些节点会面临安全漏洞和平台不稳定的风险。

时间轴和里程碑

2022 年 8 月 9 日之后,您将无法再执行以下操作:

  • 创建使用 Windows Server SAC 节点映像的新集群。
  • 创建使用 Windows Server SAC 节点映像的新节点池。
  • --autoprovisioning-image-type 标志设置为 windows_sacwindows_sac_containerd来启用节点自动预配。
  • 升级现有 Windows Server SAC 节点的 GKE 版本。

您该怎么做?

我们建议您将 Windows Server SAC 节点池迁移到 windows_ltsc_containerd 节点映像类型。在 GKE 1.23 及更高版本中,这是新集群和节点池唯一支持的 Windows Server 映像类型。

由于 Docker 节点映像弃用,GKE 1.23 及更高版本中不支持使用 Docker 作为容器运行时的 windows_ltsc 映像类型。

根据您当前的 GKE 版本,执行以下操作:

  • GKE 1.20 及更早版本:将节点池迁移到 windows_ltsc 映像。
  • GKE 1.21 及更高版本:将节点池迁移到 windows_ltsc_containerd 映像。

迁移的影响

如果您目前使用 windows_sac 映像(它使用 Docker 作为容器运行时),则迁移到 windows_ltsc_containerd 映像类型可能会影响依赖于 Docker 命令的任何现有工具。如需了解迁移到使用 containerd 的映像类型的潜在影响,请参阅关于 Docker 节点映像弃用中的情况列表。

迁移到 Windows Server LTSC

此迁移过程包括以下步骤:

  1. 确定需要更新架构的容器映像
  2. 构建多架构 Windows 容器映像
  3. 将现有节点池更新为 Windows Server LTSC

确定需要更新架构的容器映像

在 Windows Server SAC 上运行的单架构容器映像与 Windows Server LTSC 映像不兼容。您需要确定不兼容的容器映像并准备更新其架构。如果您有多架构映像,则应对其进行检查,以确保映像支持 Windows Server 2019 LTSC 变体(版本号为 10.0.17763.X)。

单架构映像

如需检查支持的 Windows 版本,请从运行 Pod 的 Windows Server SAC 节点内运行以下命令:

docker image inspect IMAGE_NAME

IMAGE_NAME 替换为容器映像的名称。

如果映像支持 Windows Server SAC 变体,则输出类似于以下内容:

[
  {
    ...
    "Architecture": "amd64",
    "Os": "windows",
    "OsVersion": "10.0.19042.1645" // 1645 can be any build number
  }
]

如果映像支持 Windows Server LTSC 变体,则输出类似于以下内容:

[
  {
    ...
    "Architecture": "amd64",
    "Os": "windows",
    "OsVersion": "10.0.17763.2686" // 2686 can be any build number
  }
]

多架构映像

如果您已经使用多架构 Windows 容器映像,请检查映像以确保它们支持 Windows Server 2019 LTSC 变体(版本号为 10.0.17763.X)。

docker manifest inspect MANIFEST_NAME

MANIFEST_NAME 替换为您的 Docker 清单名称,例如 eu.gcr.io/gke-release-staging/internet-explorer:v2

输出类似于以下内容:

{
  {
    "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
    "size": 1575,
    "digest": "...",
    "platform": {
        "architecture": "amd64",
        "os": "windows",
        "os.version": "10.0.17763.1935"

  }
}

构建多架构 Windows 容器映像

确定任何需要更新以支持 Windows Server 2019 LTSC 变体的映像后,我们建议您构建多架构 Windows Server 映像。

构建多架构映像可确保您的容器在 GKE 提供的任何 Windows 版本上运行。多架构映像将使迁移变得简单,因为 containerd 会检测迁移的节点池上的 Windows Server LTSC 版本,并从清单中选择适当的映像。

您可以手动构建这些映像,也可以使用 Cloud Build gke-windows-builder 来构建。我们建议使用 Cloud Build 构建器,该构建器会定期更新,以便在新的 Windows Server LTSC 映像可用时提供支持。如需了解多架构映像的手动和 Cloud Build 说明,请参阅构建 Windows Server 多架构映像

将节点升级到 Windows Server LTSC

更新容器映像以支持 Windows Server LTSC 变体后,请将节点池迁移到 Windows Server LTSC 节点映像。我们强烈建议您在预演集群或测试集群中测试迁移,以确保在升级生产环境之前部署可按预期工作。如需更新映像,请执行以下操作之一:

  • 创建新的节点池并将工作负载迁移到新节点
  • 升级现有节点池中的映像类型

创建新节点池

  1. 创建新节点池:

    gcloud container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --image-type=WINDOWS_LTSC_IMAGE
    

    替换以下内容:

    • NODE_POOL_NAME:新节点池的名称。
    • CLUSTER_NAME:GKE 集群的名称。
    • WINDOWS_LTSC_IMAGE:要使用的 Windows Server LTSC 映像,可以是 windows_ltsc_containerdwindows_ltsc
  2. 将以下 nodeSelector 添加到您的工作负载清单中:

    spec:
      ...
      nodeSelector:
        kubernetes.io/os: windows
        cloud.google.com/gke-os-distribution: windows_ltsc
    

    您还可以使用此 nodeSelector 以及标签值 windows_sac,以指示 GKE 避免在新节点上安排特定 Pod。

  3. 部署更新后的清单:

    kubectl apply -f MANIFEST_NAME
    
  4. 将旧节点池缩减至零:

    gcloud container node-pools update OLD_POOL \
        --cluster=CLUSTER_NAME \
        --min-nodes=0 \
        --max-nodes=NODE_COUNT
    

    替换以下内容:

    • OLD_POOL:现有 Windows Server SAC 节点池的名称。
    • NODE_COUNT:节点池中的节点数上限。重复此命令,以逐渐将此数字缩减为 0。如果遇到问题,请重新恢复此值。
  5. 完全迁移后,删除旧节点池:

    gcloud container node-pools delete OLD_POOL \
        --cluster=CLUSTER_NAME
    

更新现有节点池

  1. 更改现有 Windows Server SAC 节点池上的节点映像类型:

    gcloud container clusters upgrade CLUSTER_NAME \
        --region=COMPUTE_REGION \
        --node-pool=NODE_POOL \
        --image-type=WINDOWS_LTSC_IMAGE
    

    替换以下内容:

    • CLUSTER_NAME:GKE 集群的名称。
    • COMPUTE_REGION:集群的 Compute Engine 区域。对于可用区级集群,请使用 --zone=COMPUTE_ZONE
    • NODE_POOL:Windows Server SAC 节点池的名称。
    • WINDOWS_LTSC_IMAGE:要使用的 Windows Server LTSC 映像,可以是 windows_ltsc_containerdwindows_ltsc

后续步骤