温馨提示×

CentOS部署K8s报错怎么办

小樊
40
2026-08-20 01:26:28
栏目: 智能运维

CentOS 上部署 Kubernetes(k8s) 时,报错原因很多,但大多数问题都集中在 系统环境、容器运行时、网络、镜像源、版本兼容性 等方面。下面我按 常见报错 → 排查思路 → 解决方案 给你一个实用指南。


一、先确认基础环境(非常重要)

✅ 1. 系统版本

cat /etc/centos-release

推荐:

  • ✅ CentOS 7.9
  • ✅ CentOS Stream 8 / 9(较新)

✅ 2. 关闭 SELinux

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

✅ 3. 关闭防火墙

systemctl disable firewalld --now

✅ 4. 禁用 swap

swapoff -a
sed -i '/swap/d' /etc/fstab

✅ 5. 内核参数

cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

sysctl --system

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


1️⃣ container runtime 报错(containerd / docker)

❌ 报错示例

failed to create containerd container
container runtime is not running

✅ 解决方案

使用 containerd(推荐)

systemctl enable containerd --now
ctr -v

配置 containerd

containerd config default > /etc/containerd/config.toml
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
systemctl restart containerd

2️⃣ kubeadm init 失败

❌ 报错示例

kubeadm init error: unable to connect to the API server

✅ 排查步骤

journalctl -xeu kubelet
kubeadm config images list

✅ 常见原因

原因 解决
镜像拉不下来 使用国内镜像
端口被占用 检查 6443
kubelet 没启动 systemctl restart kubelet

✅ 使用国内镜像初始化

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

3️⃣ kubelet 启动失败(高频)

❌ 报错

kubelet: failed to run Kubelet: misconfiguration

✅ 排查

journalctl -u kubelet -f

✅ 常见原因

  • containerd 没配置 SystemdCgroup
  • kubelet 和 containerd 版本不兼容

✅ 解决

systemctl restart containerd
systemctl restart kubelet

4️⃣ cni 网络插件失败

❌ 报错

network plugin is not ready: cni config uninitialized

✅ 解决(Flannel 示例)

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

⚠️ 注意:

  • pod-network-cidr 必须和 CNI 一致
  • Flannel 默认:10.244.0.0/16

5️⃣ Node 状态 NotReady

✅ 查看

kubectl get nodes
kubectl describe node <node>

✅ 常见原因

  • CNI 未安装
  • 网络不通
  • 防火墙未关

6️⃣ 镜像拉取失败(国内网络)

❌ 报错

ErrImagePull

✅ 解决

docker pull registry.aliyuncs.com/google_containers/pause:3.9

或使用:

kubeadm config images pull \
--image-repository registry.aliyuncs.com/google_containers

三、快速自检清单 ✅

✅ swapoff -a
✅ SELinux disabled
✅ firewalld stopped
✅ containerd running
✅ kubelet running
✅ CNI installed
✅ 6443 port listening

四、常见版本组合(稳定)

组件 版本
CentOS 7.9
Kubernetes 1.26 / 1.28
containerd 1.6.x
Flannel latest

五、如果你愿意,我可以直接帮你定位

你可以直接把 报错原文 发给我,例如:

kubeadm init 报错:
xxx

或者:

journalctl -u kubelet --no-pager | tail -n 50

我可以直接帮你 逐行分析 + 给出精确解决方案

0