Kubernetes

K8s 故障排查面试题

·7 分钟阅读·2612 字

整理 Kubernetes Pod、Service、调度、镜像拉取、网络、存储和发布故障相关高频面试题

📋 目录

K8s 故障排查面试题

核心定位 本文整理 Kubernetes 故障排查类面试题,重点覆盖 Pod Pending、CrashLoopBackOff、ImagePullBackOff、Service 不通、发布异常、存储挂载失败和节点异常。

1. Pod 一直 Pending 怎么排查

1.1. 参考答案

排查顺序:

  1. 查看 Pod 事件。
  2. 检查节点资源是否足够。
  3. 检查 nodeSelector、nodeAffinity、taint/toleration。
  4. 检查 PVC 是否绑定成功。
  5. 检查调度器是否正常。
kubectl describe pod <pod_name> -n <namespace>
kubectl get nodes
kubectl describe node <node_name>
kubectl get pvc -n <namespace>

常见原因包括资源不足、节点污点未容忍、亲和性规则不满足、PVC 未绑定和镜像拉取前置条件异常。

2. Pod CrashLoopBackOff 怎么排查

2.1. 参考答案

CrashLoopBackOff 表示容器启动后反复退出,Kubelet 按退避策略重启容器。

排查顺序:

  1. 查看容器日志。
  2. 查看上一次崩溃日志。
  3. 查看退出码和事件。
  4. 检查启动命令、环境变量、配置文件和依赖服务。
  5. 检查探针是否配置过严。
kubectl logs <pod_name> -n <namespace>
kubectl logs <pod_name> -n <namespace> --previous
kubectl describe pod <pod_name> -n <namespace>

3. ImagePullBackOff 怎么排查

3.1. 参考答案

ImagePullBackOff 表示镜像拉取失败后进入退避重试。

常见原因:

原因排查点
镜像名或 tag 错误检查 image 字段
私有仓库认证失败检查 imagePullSecrets
节点无法访问仓库检查 DNS、网络、防火墙
镜像架构不匹配检查 amd64 / arm64
仓库限流或不可用检查仓库状态
kubectl describe pod <pod_name> -n <namespace>
kubectl get secret -n <namespace>

4. Service 访问不通怎么排查

4.1. 参考答案

Service 不通应按链路排查:

Client → Service → EndpointSlice/Endpoints → Pod IP → 容器端口

排查命令:

kubectl get svc -n <namespace>
kubectl get endpoints -n <namespace>
kubectl get endpointslice -n <namespace>
kubectl get pod -o wide -n <namespace>
kubectl describe svc <svc_name> -n <namespace>

重点检查:

  1. Service selector 是否匹配 Pod labels。
  2. targetPort 是否等于容器实际监听端口。
  3. Pod 是否 Ready。
  4. NetworkPolicy 是否限制访问。
  5. kube-proxy 或 CNI 是否异常。

5. Deployment 发布后不可用怎么排查

5.1. 参考答案

排查顺序:

  1. 查看 Deployment rollout 状态。
  2. 查看 ReplicaSet 和 Pod 状态。
  3. 查看新 Pod 日志和事件。
  4. 检查 readinessProbe 是否导致流量未接入。
  5. 必要时回滚。
kubectl rollout status deploy/<deploy_name> -n <namespace>
kubectl get rs -n <namespace>
kubectl describe deploy <deploy_name> -n <namespace>
kubectl rollout undo deploy/<deploy_name> -n <namespace>

6. PVC 挂载失败怎么排查

6.1. 参考答案

排查顺序:

  1. 查看 PVC 是否 Bound。
  2. 查看 StorageClass 是否存在。
  3. 查看 PV 是否可用。
  4. 查看 CSI Controller 和 CSI Node 是否正常。
  5. 查看 Pod 事件中的 mount 错误。
kubectl get pvc,pv -n <namespace>
kubectl get storageclass
kubectl describe pvc <pvc_name> -n <namespace>
kubectl describe pod <pod_name> -n <namespace>

7. 节点 NotReady 怎么排查

7.1. 参考答案

排查顺序:

  1. 查看节点状态和条件。
  2. 检查 kubelet 是否运行。
  3. 检查容器运行时是否正常。
  4. 检查磁盘、内存、PID 和网络压力。
  5. 检查 CNI 插件和节点心跳。
kubectl describe node <node_name>
systemctl status kubelet
crictl ps
journalctl -u kubelet -n 200

8. 面试总结

标准回答 Kubernetes 故障排查应先看资源状态,再看事件、日志和控制器链路。Pod Pending 通常看调度条件和 PVC;CrashLoopBackOff 看容器日志、退出码和探针;ImagePullBackOff 看镜像地址、认证和节点网络;Service 不通按 Service、Endpoint、Pod、端口和网络策略逐层排查;发布异常看 Deployment、ReplicaSet、Pod 和 rollout;节点 NotReady 则重点检查 kubelet、容器运行时、资源压力和 CNI。


关联文档

Yanche Blog

记录云原生、Linux、数据库等技术领域的学习心得,以及日常生活的思考与感悟。

© 2026 Yanche Blog. All rights reserved.

Powered by Astro