Kubernetes运行Pod数与期望状态不符及ReplicaSet计数异常问询
执行的kubectl命令及输出
(base) ➜ code kubectl get pods -n my_namespace NAME AGE app-service-5b587bc8c7-vxkk4 7d16h app-service-5b587bc8c7-vxn4n 6d8h
(base) ➜ code kubectl get rs -n my_namespace NAME AGE app-service-5b587bc8c7 7d16h
(base) ➜ code kubectl describe rs/app-service-5b587bc8c7 -n my_namespace Controlled By: Deployment/app-service Replicas: 3 current / 3 desired Pods Status: 2 Running / 0 Waiting / 0 Succeeded / 0 Failed
(base) ➜ code kubectl get event -n my_namespace NAME AGE app-service-custom-hpa.175ba564f2214ae2 2d1h
问题解答
1. 为何运行Pod数量与期望状态不匹配?
- 第三个Pod曾尝试创建,但因节点资源不足、镜像拉取失败、容器启动配置错误等问题启动失败,随后被Kubernetes自动清理,而ReplicaSet的状态未及时同步更新。
- 存在HPA干预:现有HPA相关事件,可能HPA曾调整副本数,后续因监控指标变化触发缩容,但ReplicaSet的状态更新存在延迟。
- 节点故障:第三个Pod被调度到了与API Server失联的节点,Kubernetes无法获取其运行状态,导致ReplicaSet仍认为它处于存在状态,但实际无法正常运行。
2. 为何ReplicaSet显示当前副本数为3,但kubectl get pods仅返回2个Pod?
- 第三个Pod处于Terminating或Unknown状态:执行
kubectl get pods -n my_namespace --show-all可查看所有状态的Pod,这类正在清理或失联的Pod会被ReplicaSet计入当前副本数,但默认kubectl get pods可能不展示。 - ReplicaSet状态更新延迟:Kubernetes组件间的状态同步存在短暂滞后,等待一段时间后再查看,状态可能会恢复一致。
- Pod被强制删除但残留记录:如果手动强制删除过Pod,可能存在元数据残留,导致ReplicaSet仍统计该Pod,但实际已不存在。
内容的提问来源于stack exchange,提问作者Ihor M.
相关产品推荐
相关产品推荐

