本页面介绍关于 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 SACwindows_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_sac
或windows_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
此迁移过程包括以下步骤:
- 确定需要更新架构的容器映像
- 构建多架构 Windows 容器映像
- 将现有节点池更新为 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 节点映像。我们强烈建议您在预演集群或测试集群中测试迁移,以确保在升级生产环境之前部署可按预期工作。如需更新映像,请执行以下操作之一:
- 创建新的节点池并将工作负载迁移到新节点
升级现有节点池中的映像类型
创建新节点池
创建新节点池:
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_containerd
或windows_ltsc
。
将以下 nodeSelector 添加到您的工作负载清单中:
spec: ... nodeSelector: kubernetes.io/os: windows cloud.google.com/gke-os-distribution: windows_ltsc
您还可以使用此 nodeSelector 以及标签值
windows_sac
,以指示 GKE 避免在新节点上安排特定 Pod。部署更新后的清单:
kubectl apply -f MANIFEST_NAME
将旧节点池缩减至零:
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。如果遇到问题,请重新恢复此值。
完全迁移后,删除旧节点池:
gcloud container node-pools delete OLD_POOL \ --cluster=CLUSTER_NAME
更新现有节点池
更改现有 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_containerd
或windows_ltsc
。
后续步骤
- 了解受支持的节点映像类型。
- 了解如何构建多架构 Windows Server 映像。
- 了解如何配置 Windows 节点以自动加入 Active Directory 网域。
- 从 Docker 迁移到 containerd 节点映像。