温馨提示×

k8s在centos卡住怎么办

小樊
45
2026-10-06 08:04:38
栏目: 智能运维

Kubernetes(k8s)在 CentOS 上“卡住”是一个比较笼统的问题,通常表现为:节点 NotReady、Pod 一直 Pending/ContainerCreating、kubectl 无响应、系统卡顿等。下面按常见场景 + 排查思路 + 解决方式给你一个实操清单。


一、先确认“卡住”的具体表现

执行以下命令初步判断:

kubectl get nodes
kubectl get pods -A
systemctl status kubelet
journalctl -u kubelet -f

常见问题分类:

  • 节点 NotReady
  • Pod 一直 Pending / ContainerCreating
  • kubectl 命令卡死
  • 整个系统卡顿(CPU/磁盘/内存)

二、最常见原因 & 解决办法

1️⃣ Swap 没关(CentOS 特有问题)

K8s 要求 必须关闭 swap

free -m

如果有 swap:

swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab

2️⃣ firewalld / SELinux 导致网络卡死

CentOS 默认开启,非常容易坑

# 临时
systemctl stop firewalld
setenforce 0

# 永久
systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

3️⃣ kubelet 卡死 / 起不来

看日志:

journalctl -u kubelet -n 100 --no-pager

常见错误:

  • failed to find cgroup
  • container runtime is not running

解决:

systemctl restart kubelet
systemctl status containerd   # 或 docker

4️⃣ 容器运行时问题(docker / containerd)

CentOS 8+ 推荐 containerd

systemctl status containerd
systemctl restart containerd

如果是 docker:

systemctl restart docker

5️⃣ 磁盘满了(非常常见)

df -h

尤其是:

  • /var/lib/docker
  • /var/lib/kubelet

清理:

docker system prune -a
# 或
crictl rmi --prune

6️⃣ 网络插件问题(Calico / Flannel)

Pod 一直 ContainerCreating:

kubectl describe pod <pod-name>

常见:

  • 网络插件没起来
  • 端口被占用

解决:

kubectl get pods -n kube-system
kubectl logs -n kube-system <cni-pod>

7️⃣ 系统资源耗尽(CPU / 内存)

top
htop

CentOS 上 kubelet + docker 很吃资源,建议:

  • 最低 2C4G
  • 关闭不必要服务

三、如果整个系统卡死

强制恢复:

reboot

重启后:

systemctl restart containerd kubelet

四、建议你补充的信息(我可以精准帮你)

你可以告诉我:

  1. CentOS 版本(7 / 8 / Stream)
  2. k8s 版本
  3. 用的是 docker 还是 containerd
  4. 卡在哪一步(安装 / 启动 / 跑 Pod)
  5. 报错日志(journalctl 或 kubectl describe)

我可以直接帮你定位到具体命令级别。

0 踩