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

Kubernetes集群(含StatefulSet扩缩容无响应问题)通用故障排查方法咨询

Kubernetes集群(含StatefulSet扩缩容无响应问题)通用故障排查方法咨询

Hey there, let's break down how to dig into your misbehaving Kubernetes cluster step by step—no need to wade through 600k lines of dump without a plan first!

1. 先从核心组件健康状态入手

首先确认控制平面是否正常运行,用这些命令快速获取快照:

  • 检查kube-system命名空间下所有控制平面Pod的状态:
    kubectl get pods -n kube-system
    
    留意任何非Running状态的Pod——崩溃循环、Pending或未知状态都是明显的异常信号。比如如果kube-scheduler或kube-controller-manager挂了,那调度问题的根源就找到了。
  • 验证API Server是否响应正常:
    kubectl version
    
    如果这个命令卡顿或报错,说明API Server可能过载或状态异常。

2. 针对性排查Pod调度问题

既然你提到Pod无法调度,咱们聚焦这个方向:

  • 针对某个Pending状态的Pod,查看详细事件和状态:
    kubectl describe pod <pod-name> -n <namespace>
    
    重点看Events部分——Kubernetes通常会明确说明无法调度的原因,比如CPU/内存不足、没有匹配节点选择器、污点/容忍度不匹配等。
  • 检查节点状态,看看是否有节点被封锁、驱逐,或者存在资源问题:
    kubectl get nodes
    kubectl describe node <node-name>
    
    在节点详情里,关注Conditions(Ready状态是否为True?)和Allocated resources,确认是否触达了资源上限。

3. 深挖集群性能瓶颈

命令响应缓慢通常指向资源不足或控制平面过载:

  • 检查控制平面组件的CPU和内存使用率:
    kubectl top pods -n kube-system
    
    如果kube-apiserver、etcd或kube-scheduler的CPU/内存占满了,那大概率是导致卡顿的原因。针对etcd,还可以用这个命令检查健康状态:
    kubectl exec -n kube-system <etcd-pod-name> -- etcdctl endpoint health --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key
    
  • 检查etcd存储使用情况——如果磁盘空间不足,整个集群都会瘫痪:
    kubectl exec -n kube-system <etcd-pod-name> -- etcdctl endpoint status --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key -w table
    

4. 高效利用kubectl cluster-info dump

不用从头翻600k行内容,通过过滤提取有用信息:

  • 筛选所有组件的错误日志:
    kubectl cluster-info dump | grep -i error
    
  • 聚焦调度器日志,排查调度失败问题:
    kubectl cluster-info dump --components=scheduler | grep -i "failed\|error\|unable"
    
  • 如果启用了API Server审计日志或请求延迟统计,也可以查看这些内容,能发现哪些请求在卡顿或耗时过长。

5. 针对StatefulSet的专属排查(涉及扩缩容问题)

如果你的StatefulSet扩缩容无响应:

  • 查看StatefulSet的详情和事件:
    kubectl describe statefulset <statefulset-name> -n <namespace>
    
    留意类似"failed to create pod"或"volume provisioning failed"的事件——StatefulSet依赖稳定的网络标识和持久化卷,PV/PVC问题是常见诱因。
  • 确认StatefulSet控制器是否正常运行:
    kubectl get pods -n kube-system | grep statefulset
    
    statefulset-controllerPod必须处于Running状态,否则会直接导致StatefulSet无法正常工作。

6. 最后一招:检查节点级日志

如果集群层面的命令没找到答案,登录有问题的节点(如果有权限)查看系统日志:

  • 查看kubelet日志:
    journalctl -u kubelet -f
    
    这里能发现节点注册失败、Pod运行时问题,或者节点上的资源冲突。
  • 查看容器运行时日志(比如containerd或docker):
    journalctl -u containerd -f
    
    如果容器无法启动,运行时日志可能会记录Kubernetes事件里没显示的细节。

按这些步骤逐步排查,你大概率会找到明确的错误信息或资源瓶颈——就是它们在搞破坏啦。

备注:内容来源于stack exchange,提问作者freebie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 15:54:30