【k8s002】k8s健康检查与故障诊断

发布于:2025-03-19 ⋅ 阅读:(18) ⋅ 点赞:(0)

k8s健康检查与故障诊断

一、集群状态检查

  1. 检查节点健康状态

    kubectl get nodes -o wide          # 查看节点状态及基本信息 
    kubectl describe node <node-name>  # 分析节点详细事件(如资源不足、网络异常) 
    kubectl top nodes                  # 查看节点资源使用率(CPU/内存) 
    
    
  2. 检查核心组件状态

    kubectl get pods -n kube-system    # 确认控制平面组件(如 apiserver、scheduler)运行状态 
    
    

二、Pod 诊断

  1. Pod 状态异常(Pending/CrashLoopBackOff)

    kubectl get pods -A -o wide        # 查看所有命名空间 Pod 状态及所在节点 
    kubectl describe pod <pod-name>    # 查看事件日志(如调度失败、镜像拉取错误) 
    kubectl logs -f <pod-name>         # 实时跟踪容器日志 
    kubectl exec -it <pod-name> -- sh  # 进入容器内部排查(如配置文件错误) 
    
    
  2. 资源不足问题

    kubectl get resourcequotas -n <namespace>  # 检查命名空间资源配额限制 
    kubectl get pods --field-selector=status.phase=Pending  # 筛选待调度的 Pod 
    
    

三、服务与网络检查

  1. Service 流量异常

    kubectl get svc -o wide            # 查看 Service 的 ClusterIP 和端口映射
    kubectl get endpoints <service-name>  # 验证后端 Pod 是否被正确关联 
    
    
  2. Ingress 配置问题

    kubectl describe ingress <name>    # 检查路由规则和证书配置 
    
    

四、存储问题排查

```
kubectl get pvc -n <namespace>     # 查看 PVC 绑定状态
kubectl describe pvc <pvc-name>    # 分析存储类配置或容量不足问题 ‌
kubectl get pv                     # 检查持久卷可用性 

```

五、事件与日志分析

kubectl get events -A --sort-by='.lastTimestamp'  # 按时间排序查看集群事件 
kubectl logs --previous <pod-name>   # 查看容器崩溃前的日志(适用于 CrashLoopBackOff) 


六、高级调试命令

kubectl api-resources                # 列出所有资源类型(如排查 CRD 问题) 
kubectl explain <resource>           # 查看资源配置字段定义(如验证 YAML 合法性) 
kubectl drain <node-name> --ignore-daemonsets  # 排空节点(维护前隔离 Pod)

七、故障排查流程:‌

‌Pod 异常诊断路径‌:
Pending → 检查资源配额/节点容量
CrashLoopBackOff → 查看容器日志及 describe pod 事件
ImagePullBackOff → 验证镜像名称及私有仓库凭据

‌网络问题诊断路径‌:
Service 无端点 → 检查 Pod 标签匹配 ‌
Ingress 无法访问 → 检查路由规则及防火墙策略 ‌


网站公告

今日签到

点亮在社区的每一天
去签到