Kubernetes 1.8部署特定Pod模板失败:无法创建成功ReplicaSet及实例
我来帮你梳理下这个问题的排查方向,毕竟Kubernetes 1.8虽然版本偏老,但这类部署失败的场景还是有不少可落地的排查步骤:
先直接排查关联的ReplicaSet
Deployment是通过管理ReplicaSet来创建Pod的,所以先找到对应Deployment生成的ReplicaSet(执行kubectl get rs,名字通常是Deployment名加一串哈希值),然后执行kubectl describe rs <你的RS名称>。这里的事件日志往往会比Deployment的描述更详细,比如镜像拉取失败、资源配额不足、Pod调度被拒绝的具体原因。校验Pod模板的合法性
把你的pod-template单独拿出来做预校验:执行kubectl create --dry-run -f <你的Pod模板文件> -o yaml,看看有没有语法错误。另外要注意Kubernetes 1.8的API版本兼容性,比如Deployment在1.8里可用的API版本是apps/v1beta1或apps/v1beta2,Pod的API版本必须是v1;还有容器的资源请求/限制、端口配置、镜像名称是否有误(私有镜像要确认ImagePullSecret是否配置正确)。检查节点状态与调度限制
执行kubectl describe node <节点名称>,查看节点是否处于Ready状态,有没有资源(CPU/内存)耗尽的情况,或者是否被添加了污点(Taints)导致Pod无法调度到该节点。另外也可以用kubectl get events查看集群层面的事件,有没有节点相关的异常提示。排查云服务商层面的限制
因为是在云服务商环境部署,要确认:- 集群的资源配额是否达标(比如云服务商限制了单节点最大Pod数、集群总CPU/内存配额)
- 安全组是否允许容器访问镜像仓库(比如Docker Hub、私有镜像仓库的端口)
- 如果用了云存储卷,检查PVC是否成功绑定,对应的存储类是否存在且正常工作
查看kube-controller-manager的日志
Deployment和ReplicaSet的控制逻辑由kube-controller-manager负责,直接查看它的日志(比如在控制节点上通过journalctl -u kube-controller-manager,或者云服务商提供的集群日志面板),里面可能会记录Deployment无法创建ReplicaSet的深层原因,比如模板校验失败、ServiceAccount权限不足等。手动测试Pod创建
跳过Deployment,直接用有问题的pod-template创建Pod:kubectl create -f <你的Pod模板文件>,如果Pod还是无法创建,那问题就明确出在Pod模板本身的配置上;如果能成功创建,再回头排查Deployment的配置是否有特殊限制(比如滚动更新策略、副本数设置等)。
内容的提问来源于stack exchange,提问作者user8722476

