“CentOS 上 Kubernetes 调度异常”本身是一个比较宽泛的问题,调度异常可能来自 节点、Pod、调度器、资源、网络、系统组件 等多个层面。下面我按常见原因 → 排查思路 → 解决方案给你一个系统性的分析,基本能覆盖 90% 的 CentOS + k8s 场景。
请先确认是哪一种:
不同表现,根因完全不同。
Pendingkubectl describe pod 看到:Insufficient cpu
Insufficient memory
kubelet 会预留资源kubectl describe node <node>
重点看:
Allocatable
Non-terminated Pods
requestskubectl get nodes
状态为 NotReady
✅ kubelet 没启动 / 崩溃
systemctl status kubelet
journalctl -u kubelet -f
✅ 容器运行时异常(docker / containerd)
systemctl status docker
systemctl status containerd
✅ CentOS 防火墙 / SELinux
getenforce
systemctl status firewalld
✅ 时间不同步
timedatectl status
chronyc sources
systemctl restart kubelet
systemctl restart docker
kubectl get pods -n kube-system | grep scheduler
kubectl logs kube-scheduler-xxx -n kube-system
kubectl describe node | grep Taint
常见:
node-role.kubernetes.io/master:NoSchedule
kubectl taint nodes <node> node-role.kubernetes.io/master:NoSchedule-
kubectl describe pod <pod>
看:
node selector
affinity
nodeSelector 指定不存在的 labelrequiredDuringSchedulingIgnoredDuringExecution 条件太严格df -h
df -i
/var/lib/docker 或 /var/lib/kubelet 满docker system prune -f
journalctl --vacuum-time=7d
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -dates
kubeadm certs renew all
systemctl restart kubelet
kubectl describe pod <pod>
kubectl get nodes
kubectl describe node <node>
kubectl logs -n kube-system kube-scheduler-xxx
systemctl status kubelet
df -h
free -m
| 问题 | 原因 |
|---|---|
| SELinux | 阻止 kubelet |
| firewalld | 端口不通 |
| 内核版本低 | 调度 / 网络异常 |
| yum 源问题 | 组件版本不一致 |
| 磁盘满 | 节点 NotReady |
如果你愿意,可以直接贴以下信息(脱敏即可):
kubectl get nodeskubectl describe pod <pod>kubectl describe node <node>我可以直接帮你判断是哪一层的调度问题,并给出对应的修复命令。