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

Azure AKS Windows集群Pod无法创建:处于ContainerCreating状态的问题排查与解决请求

问题分析与解决方案

从你提供的诊断信息来看,Windows AKS集群中Pod卡在ContainerCreating状态,核心诱因是Windows节点专属的CSI存储插件DaemonSet未在所有节点就绪:csi-azuredisk-node-win和csi-azurefile-node-win这两个组件负责为Windows Pod提供存储卷管理、Pod沙箱初始化的关键能力,当它们未完全就绪时,kubelet无法完成沙箱容器的启动,最终触发operation timeout: context deadline exceeded错误。

可能的具体原因

  • 部分Windows节点上的CSI Pod启动失败(比如镜像拉取失败、节点资源耗尽、权限配置错误)
  • Windows节点OS版本与CSI插件版本不兼容(AKS对Windows节点OS和CSI组件版本有严格的匹配要求)
  • 节点网络异常,导致CSI Pod无法连接Azure存储服务或集群API服务器
  • 节点上的容器运行时(如containerd)故障

分步解决步骤

1. 定位异常CSI Pod与节点

首先要明确哪些Windows节点上的CSI Pod未就绪:

# 查看csi-azuredisk-node-win的Pod分布与状态
kubectl get pods -n kube-system -l app=csi-azuredisk-node-win -o wide

# 查看csi-azurefile-node-win的Pod分布与状态
kubectl get pods -n kube-system -l app=csi-azurefile-node-win -o wide

找到状态为CrashLoopBackOff、ImagePullBackOff或Error的Pod,执行describe获取详细错误日志:

kubectl describe pod <异常Pod名称> -n kube-system

比如如果是镜像拉取失败,可能是节点无法访问Azure容器注册表(ACR),需要检查节点网络连通性或ACR的权限配置。

2. 验证Windows节点与CSI插件的版本兼容性

AKS要求Windows节点OS版本与CSI插件版本严格匹配:

# 查看Windows节点的OS版本
kubectl get nodes -o wide | grep akswin

确保你的节点OS版本(比如Windows Server 2022)与当前AKS集群版本对应的CSI插件版本兼容(例如AKS 1.27版本适配Windows Server 2022)。如果版本不匹配,可以:

  • 升级Windows节点池到兼容的OS版本
  • 升级AKS集群到与节点OS匹配的版本

3. 检查节点资源与容器运行状态

节点资源耗尽或容器运行时故障也会导致CSI Pod无法启动:

# 查看节点CPU、内存使用情况
kubectl top nodes

如果节点资源不足,需要扩容节点池或清理节点上的冗余资源。

登录到异常Windows节点(通过Azure门户或az aks node ssh命令),检查containerd服务状态:

# 查看containerd服务状态
Get-Service containerd

# 如果服务未运行,启动它
Start-Service containerd

同时可以查看Windows事件查看器中的容器相关日志,排查运行时的深层异常。

4. 重新部署异常CSI Pod或DaemonSet

如果确认是CSI Pod本身的问题,先尝试删除异常Pod让DaemonSet重建:

kubectl delete pod <异常Pod名称> -n kube-system

如果删除后问题依旧,触发DaemonSet的滚动更新,强制重新部署所有节点上的CSI Pod:

kubectl rollout restart daemonset csi-azuredisk-node-win -n kube-system
kubectl rollout restart daemonset csi-azurefile-node-win -n kube-system

5. 验证修复效果

等待5-10分钟后,检查CSI DaemonSet的就绪状态:

kubectl get ds -n kube-system | grep win

当csi-azuredisk-node-win和csi-azurefile-node-win的READY数都达到期望的3个后,再查看之前卡住的Pod状态:

kubectl get pods -n namespacex

如果Pod成功进入Running状态,说明问题已解决。


内容的提问来源于stack exchange,提问作者Andy Schmitt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 18:44:04