温馨提示×

centos k8s部署报错怎么办

小樊
45
2026-09-21 14:59:54
栏目: 智能运维

在 CentOS 上部署 Kubernetes(k8s)时报错很常见,但排查思路是通用的。下面我按「先看什么 → 常见错误 → 解决套路」给你讲,基本能覆盖 90% 的情况。


一、先做的 3 个基础检查(非常重要)

1️⃣ 系统环境检查

cat /etc/centos-release
uname -a

✅ 推荐:

  • CentOS 7.9 / 8 Stream(CentOS 8 已 EOL,不建议新集群)
  • 内核 ≥ 3.10(最好 4.x+)

2️⃣ 关闭 swap(k8s 强制要求)

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

3️⃣ 检查基础服务状态

systemctl status docker
systemctl status kubelet
journalctl -xeu kubelet

二、最常见报错 & 解决方案

❌ 1. kubeadm init 卡住 / 失败

常见原因

  • 网络不通
  • cgroup 驱动不一致
  • 镜像拉不下来

解决

kubeadm reset -f

Docker 配置(CentOS 必改):

cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
systemctl restart docker

❌ 2. 镜像拉取失败(国内环境)

报错示例

failed to pull image k8s.gcr.io/...

解决(使用国内镜像)

kubeadm init \
  --image-repository registry.aliyuncs.com/google_containers \
  --pod-network-cidr=10.244.0.0/16

❌ 3. Node 处于 NotReady

kubectl get nodes

原因

  • 没装网络插件(Calico / Flannel)

解决(Flannel 示例)

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

❌ 4. 防火墙 / SELinux 问题

systemctl stop firewalld
systemctl disable firewalld

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

❌ 5. 端口被占用

k8s 需要端口:

  • 6443
  • 10250
  • 2379 / 2380
netstat -tunlp | grep -E '6443|10250'

三、快速定位错误的方法(很重要)

看 kubelet 日志

journalctl -u kubelet -f

看 pod 状态

kubectl get pods -A
kubectl describe pod <pod-name> -n kube-system

四、你可以直接把报错贴出来

如果你愿意,可以:

  • 把 完整报错信息
  • 或执行 kubeadm init 后的输出
  • 或 journalctl -u kubelet 的关键错误

直接贴出来,我可以 逐行帮你分析并给出精确解决方案(包括版本兼容问题)。

你现在是 单节点还是多节点?用的 kubeadm 还是二进制?

0 踩