MST

星途 面试题库

面试题:容器化 - Kubernetes集群中Pod无法启动的常见排查步骤

在Kubernetes集群中,若某个Pod一直处于Pending状态无法启动,简述你会采取哪些排查步骤?
15.8万 热度难度
后端开发容器化

知识考点

AI 面试

面试题答案

一键面试
  1. 检查资源配额
    • 确认命名空间是否有资源配额限制,例如CPU、内存等资源配额不足,导致Pod无法调度。可通过 kubectl describe namespace <namespace - name> 查看命名空间的资源配额情况。
  2. 查看节点资源
    • 使用 kubectl get nodes 查看节点的资源使用情况,包括CPU、内存、可调度Pod数量等。若节点资源不足,可能无法调度新的Pod。
    • 例如,节点内存使用率过高,新的需要一定内存的Pod可能会处于Pending状态。
  3. 检查Pod调度策略
    • 查看Pod的 nodeSelectoraffinityanti - affinity 配置。若配置不合理,可能导致无法找到合适的节点进行调度。例如,nodeSelector 中指定的节点标签与实际节点标签不匹配。
    • 例如,Pod设置了只能调度到具有 disktype: ssd 标签的节点,但集群中没有这样标签的节点。
  4. 查看节点状态
    • kubectl describe node <node - name> 检查节点状态,查看是否有 NotReadyOutOfDiskMemoryPressure 等影响Pod调度的条件。
    • 如节点处于 NotReady 状态,可能是网络问题、kubelet故障等导致,Pod无法调度到该节点。
  5. 检查镜像拉取问题
    • kubectl describe pod <pod - name> 的输出中查看是否有镜像拉取相关的错误信息。例如镜像仓库认证失败、镜像不存在或网络问题导致无法拉取镜像。
    • 若镜像仓库需要认证,确认 imagePullSecrets 配置是否正确。
  6. 查看Pod依赖
    • 若Pod依赖其他资源(如PVC、ConfigMap、Secret等),检查这些依赖资源是否正确创建和配置。例如PVC没有绑定到合适的PV,可能导致Pod无法启动。
    • 查看 kubectl describe pod <pod - name> 中关于依赖资源的事件信息,确认是否存在相关问题。