• 节点资源耗尽:CPU、内存或磁盘空间不足。
• Pod 请求超过节点能力:Pod 请求的 requests
或 limits
超过节点实际资源。
• 镜像未正确拉取(仓库地址错误、认证失败、镜像不存在)。 • 镜像体积过大,导致下载超时或存储不足。
• 节点亲和性/反亲和性:Pod 需要特定节点标签,但集群无匹配节点。
• 污点(Taints)与容忍(Tolerations):节点存在污点,而 Pod 未声明对应的容忍。
• Init Container 启动失败(依赖服务未就绪、配置错误等)。
• PersistentVolume(PV)未正确绑定或已被其他 Pod 占用。
• 存储类(StorageClass)配置错误。
• 集群网络不通(如 DNS 解析失败、CNI 插件故障)。
• 服务端点(Service)或 Ingress 配置错误(但通常影响 Pod 访问,而非调度)。
• 调度器进程异常或日志报错。
kubectl describe pod-n
关注以下字段:
• Events:调度失败的具体原因(如 ImagePullBackoff
, FailedScheduling
)。
• Status:显示 Pending
的具体阶段(如 containerCreating
, imagePulling
)。
# 查看节点资源使用情况 kubectl top nodes # 查看节点详细信息 kubectl describe node # 检查集群资源总量(需安装 Metrics Server) kubectl get csr -o jsonpath='{.items[*].status.conditions[?(@.type=="Available")].status}'
• 检查镜像是否存在:
docker pull# 手动拉取验证
• 查看 Pod 镜像状态:
kubectl logs -n# 如果已进入 ContainerCreating 状态
• 节点亲和性:
# 检查 Pod 的亲和性配置 cat pod.yaml | grep -E "^affinity|^tolerations" # 检查节点标签 kubectl get nodes --show-labels
• 污点与容忍:
kubectl describe node| grep Taints
# 查看 PV 绑定状态 kubectl get pv # 查看 PVC 状态 kubectl get pvc -n
• DNS 解析:
nslookup.svc.cluster.local dig +trace . .svc.cluster.local
• CNI 插件状态:
kubectl logs -n kube-system# 如 Calico、Flannel
# 查看调度器日志(需访问 Master 节点) journalctl -u kube-scheduler --since "5 minutes"
ImagePullBackoff
• 原因:镜像拉取失败(认证错误、仓库不可达)。
• 解决:
• 检查 imagePullPolicy
(默认 IfNotPresent
,可改为 Always
强制重试)。
• 配置 Docker 认证(如 .dockerconfigjson
):
apiVersion: v1
kind: ConfigMap
metadata:
name: regcred
data:
.dockerconfigjson:
• 在 Pod 中引用:
imagePullSecrets:
- name: regcred
FailedScheduling
• 原因:节点资源不足或调度策略冲突。、
• 解决:
• 扩展集群(添加新节点)。
• 调整 Pod 的 requests
/limits
:
resources:
requests:
memory: "256Mi"
cpu: "250m"
• 原因:Init Container 依赖服务未就绪。
• 解决:
• 使用 kubectl logs
进入 Init Container 查看错误。
• 添加 initContainers
的超时配置:
initContainers:
- name: init
image: busybox
command: ["sleep", "300"]
资源预留:为节点预留足够资源(如 kube-reserved
)。
镜像优化:使用小体积基础镜像,避免重复构建。
监控告警:集成 Prometheus + Alertmanager 监控节点资源和 Pod 调度状态。
灰度发布:更新 Pod 时逐步替换,避免批量故障。
通过 kubectl describe pod
定位失败原因 → 检查资源、镜像、调度策略 → 结合日志和工具(如 kubectl top
、journalctl
)深入分析。常见原因集中在 资源不足、镜像问题 和 调度策略限制,需针对性优化配置。