Kubectl查询Deployment滚动状态卡住,重启后仍异常的问题咨询
Kubectl Rollout Status 无限卡住问题排查与解决
问题描述
执行kubectl rollout status deployment/texhub-server-service -n reddwarf-pro时,命令持续卡在Waiting for deployment spec update to be observed...;执行kubectl rollout restart deployment/texhub-server-service -n reddwarf-pro重启Deployment后,查询状态依旧卡住,且控制台显示该Deployment未处于繁忙状态。
可能成因
- ReplicaSet状态异常:新创建的ReplicaSet无法完成Pod就绪,或旧ReplicaSet无法被正常回收,导致滚动更新状态无法完成确认。
- API Server与etcd同步延迟:Kubernetes API Server未正确获取Deployment的最新状态,使得
rollout status命令一直等待状态更新。 - Deployment策略配置不合理:
maxSurge/maxUnavailable设置导致滚动更新卡在中间状态,或progressDeadlineSeconds设置过长,掩盖了实际更新停滞的问题。 - 集群核心组件异常:kube-controller-manager未正常处理Deployment的更新事件,导致状态推进停滞。
解决方法
1. 排查Deployment及关联资源状态
- 查看Deployment完整配置与状态,重点核对
metadata.generation和status.observedGeneration是否一致,以及availableReplicas、updatedReplicas数值:kubectl get deployment texhub-server-service -n reddwarf-pro -o yaml - 查看关联的ReplicaSet状态,确认是否有新RS创建及就绪情况:
kubectl get rs -n reddwarf-pro - 检查Pod状态,排查是否存在
Pending、CrashLoopBackOff等异常:kubectl get pods -n reddwarf-pro -l app=texhub-server-service # 替换为实际Deployment的标签
2. 触发Deployment状态同步
通过添加临时注解触发新的更新,强制同步状态:
kubectl annotate deployment texhub-server-service -n reddwarf-pro dummy-annotation=$(date +%s)
之后重新执行kubectl rollout status观察是否恢复正常。
3. 检查集群核心组件
查看kube-system下核心组件Pod的运行状态,确认kube-controller-manager等组件无异常重启或故障:
kubectl get pods -n kube-system
若组件异常,重启对应Pod(静态Pod需调整节点配置后重启kubelet)。
4. 清理异常ReplicaSet(谨慎操作)
若确认旧ReplicaSet无运行Pod但仍被Deployment关联,可手动删除异常RS:
kubectl delete rs <异常RS名称> -n reddwarf-pro
注意:删除前务必确认该RS无运行Pod,避免影响业务。
5. 调整进度超时配置
临时缩短progressDeadlineSeconds,让系统更快检测更新停滞,便于定位问题:
kubectl patch deployment texhub-server-service -n reddwarf-pro -p '{"spec":{"progressDeadlineSeconds":300}}'
超时后rollout status会返回错误,可根据错误信息进一步排查。
内容的提问来源于stack exchange,提问作者Dolphin
相关产品推荐
相关产品推荐

