You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Server 2022运行.NET容器时Kubernetes报系统不匹配错误求解

问题原因
  • Kubernetes 1.22及更早版本尚未原生支持Windows Server 2022,内置的Windows容器OS匹配校验逻辑存在缺陷:不会读取容器镜像的真实内核Build号,仅依靠硬编码的版本白名单做匹配,20348这个Windows Server 2022的Build号不在1.22版本的白名单内,因此即使宿主机和容器内核版本完全一致也会抛出不匹配错误。
  • Docker运行时的OS版本校验逻辑和Kubernetes独立,Docker会直接对比宿主机和镜像的真实Build号,所以单独执行docker run可以正常运行。Kubernetes的校验发生在镜像拉取之前的编排调度阶段,因此会提前报错。
解决方案

方案1:升级Kubernetes版本(推荐)

直接将集群升级到Kubernetes 1.23及以上版本,该版本开始原生支持Windows Server 2022,修复了OS版本校验的逻辑缺陷,可正确识别20348的Build号,无需额外配置即可正常调度该Pod。

方案2:跳过kubelet的OS版本校验

如果暂时无法升级集群版本,可以在Windows节点的kubelet启动参数中添加--windows-skip-os-version-check=true,跳过Kubernetes层面的OS版本校验,直接复用Docker运行时的校验逻辑。
如果使用的是MicroK8s,修改/var/snap/microk8s/current/args/kubelet配置文件,添加上述参数后执行microk8s stop && microk8s start重启集群生效。

方案3:手动配置节点标签匹配

给Windows节点手动添加版本标签:

kubectl label nodes <Windows节点名称> node.kubernetes.io/os-version=10.0.20348

之后修改Pod配置,在nodeSelector中新增对应匹配规则:

nodeSelector:
  kubernetes.io/os: windows
  node.kubernetes.io/os-version: 10.0.20348

即可绕过版本校验逻辑正常调度。

内容的提问来源于stack exchange,提问作者Jan Zahradník

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 22:06:01