删除运行中Pod后StatefulSet未重建Pod问题求助
StatefulSet删除Pod后不重建的排查思路
从你提供的信息来看,kubectl get sts显示jenkins状态为1/1,但kubectl describe sts里明确标注Replicas: 1 desired | 2 total,同时所有Pod状态全为0,这是核心矛盾点,以下是具体排查步骤:
检查Pod终止状态
执行kubectl get pods -n jenkins -l app=jenkins,确认是否有Terminating状态的Pod残留。StatefulSet会等待旧Pod完全终止后才会重建新Pod,如果旧Pod卡在终止流程(比如存储卷卸载失败、节点失联),新Pod不会启动。
若存在残留Pod,进一步排查终止失败原因:- 执行
kubectl describe pod <pod-name> -n jenkins查看Events中的终止日志 - 检查节点状态:
kubectl get nodes,如果Pod所在节点处于NotReady状态,需先修复节点或驱逐节点上的Pod
- 执行
核查存储卷状态
StatefulSet的Pod绑定固定命名的PVC(比如jenkins-home-jenkins-0),执行kubectl get pvc -n jenkins:- 若对应PVC处于
Lost或Terminating状态,新Pod无法绑定存储,会卡在Pending甚至无法创建 - 检查PVC关联的PV状态:
kubectl get pv,如果PV状态异常(如节点存储故障),需先修复存储或重新创建PV/PVC
- 若对应PVC处于
验证StatefulSet控制器状态
执行kubectl get sts jenkins -n jenkins -o yaml查看完整配置与状态:- 确认
spec.replicas确实为1,核对status.replicas、status.readyReplicas数值是否与实际一致 - 检查
status.currentReplicas、status.updatedReplicas是否存在异常值
若有权限,可查看kube-controller-manager日志,确认处理该StatefulSet时是否有报错
- 确认
检查Pod模板合法性
即使之前Pod能正常运行,也可能出现模板配置问题导致无法重建:- 在集群节点上手动拉取镜像
docker-c2.xyz.com/jenkins/jenkins:v0.1,验证镜像拉取权限、镜像是否存在 - 检查ServiceAccount权限:
kubectl auth can-i create pods --as=system:serviceaccount:jenkins:jenkins-account -n jenkins,确认服务账号具备创建Pod的权限 - 核查资源配额:
kubectl get resourcequota -n jenkins,确认namespace或集群的CPU、内存配额未耗尽,避免新Pod无法调度
- 在集群节点上手动拉取镜像
强制同步StatefulSet状态
若以上检查均无异常,可能是状态缓存问题,可尝试重置副本数强制同步(操作前确认业务可短暂中断):kubectl patch sts jenkins -n jenkins -p '{"spec":{"replicas":0}}' # 等待所有Pod终止后,恢复副本数 kubectl patch sts jenkins -n jenkins -p '{"spec":{"replicas":1}}'
内容的提问来源于stack exchange,提问作者Breaking News
相关产品推荐
相关产品推荐

