温馨提示×

ubuntu k8s为何启动失败

小樊
45
2026-10-28 13:23:58
栏目: 智能运维

Ubuntu 上 Kubernetes(k8s)启动失败的原因很多,最常见的是系统环境或组件配置问题。下面我按「高频原因 → 排查方法 → 解决办法」给你一个实用清单,你可以逐条对照。


一、最常见原因(80% 都在这)

1️⃣ Swap 未关闭(最常见)

Kubernetes 强制要求关闭 swap

现象

  • kubeadm init 报错
  • kubelet 起不来

检查

swapon --show

解决

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

2️⃣ kubelet 没有启动 / 崩溃

检查

systemctl status kubelet
journalctl -xeu kubelet

常见错误

  • failed to run kubelet
  • cgroup driver 不一致

3️⃣ cgroup driver 不一致(containerd / docker)

Ubuntu 20.04+ 默认用 systemd

查看

cat /etc/containerd/config.toml | grep SystemdCgroup

应确保

SystemdCgroup = true

修改后:

sudo systemctl restart containerd

4️⃣ 防火墙 / 端口被挡

K8s 需要以下端口:

  • 6443(API)
  • 10250(kubelet)
  • 2379–2380(etcd)

临时关闭测试

sudo ufw disable

5️⃣ 主机名 / hosts 配置问题

不能有大写、不能 localhost 冲突

hostnamectl set-hostname master

/etc/hosts 示例:

127.0.0.1   localhost
192.168.1.10 master

6️⃣ 时间不同步

现象

  • TLS 证书报错
  • node NotReady
timedatectl status
sudo apt install chrony -y
sudo systemctl restart chrony

二、初始化失败(kubeadm init)

常见报错

[ERROR Port-6443]: Port 6443 is in use
[ERROR FileAvailable--etc-kubernetes-manifests]: file exists
[ERROR Swap]: swap is enabled

重置再试

sudo kubeadm reset -f
sudo rm -rf /etc/kubernetes /var/lib/etcd

三、节点 NotReady(启动后常见问题)

kubectl get nodes

如果是 NotReady:

kubectl describe node <node>

通常是:

  • 网络插件没装(Calico / Flannel)
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

四、快速自检脚本(推荐)

swapon --show
systemctl status kubelet
systemctl status containerd
kubectl get nodes
journalctl -xeu kubelet | tail -n 50

五、如果你愿意,我可以精准帮你定位

请把下面信息发我之一即可:

  1. journalctl -xeu kubelet 报错
  2. kubeadm init 的完整输出
  3. kubectl get nodes + describe node

我可以直接告诉你哪一步错了、怎么改。

0 踩