我似乎无法在使用 GKE 集群上的
windows_ltsc_containerd
主机操作系统的节点池中的节点上运行任何 Windows 容器。
根据日志,我看到:
Normal Created 12s kubelet Created container runner
Warning Failed 7s kubelet Error: failed to create containerd task: failed to create shim task: hcs::CreateComputeSystem runner: The container operating system does not match the host operating system.: unknown
现在我已经确认 pod 已被安排到 Windows 节点池中,我的 Dockerfile 就在这里(我已将其精简回最基本的部分):
FROM mcr.microsoft.com/windows/servercore:ltsc2022
WORKDIR /runner
镜像在 Windows 本地运行时运行良好,但由于某种原因,主机操作系统与容器操作系统不匹配,尽管它们都是 Windows LTSC。我做错了什么?
但我无法为节点池选择任何其他类型的 Windows 映像。我的K8S版本是:
1.27.8-gke.1067004
。容器内的 Windows 构建版本是:
20348.859.amd64fre.fe_release_svc_prod2.220707-1832
这是
kubectl get-nodes -o wide
中节点的输出
gke-f73265-hrf3 Ready <none> 47m v1.27.8-gke.1067004 10.128.0.75 35.232.15.79 Windows Server 2019 Datacenter 10.0.17763.4974 containerd://1.6.19-gke.1
pod 肯定被调度到这个节点上。
问题是我应该使用
mcr.microsoft.com/windows/servercore:ltsc2019
而不是 mcr.microsoft.com/windows/servercore:ltsc2022
。这样就解决了。