温馨提示×

Ubuntu k8s部署失败怎么办

小樊
38
2026-10-28 12:15:57
栏目: 智能运维

在 Ubuntu 上部署 Kubernetes(k8s)失败是很常见的问题,通常和系统环境、网络、组件配置有关。下面我按「排查思路 → 常见错误 → 解决建议」给你一套实用方案。


一、先确认基础环境(90% 问题出在这里)

1️⃣ 系统版本与内核

cat /etc/os-release
uname -a

✅ 推荐:

  • Ubuntu 20.04 / 22.04
  • 内核 ≥ 5.x

2️⃣ 关闭 swap(必须)

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

3️⃣ 关闭防火墙或放通端口

sudo ufw disable

或:

sudo ufw allow 6443,10250,2379:2380,30000:32767/tcp

4️⃣ 配置内核参数

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

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

sudo sysctl --system

二、容器运行时问题(非常常见)

✅ 推荐:containerd(k8s 1.24+ 已弃用 docker)

安装 containerd

sudo apt install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml

修改:

SystemdCgroup = true
sudo systemctl restart containerd

三、kubeadm 初始化失败排查

1️⃣ 查看详细错误

sudo kubeadm init --v=5

2️⃣ 常见错误 & 解决

❌ preflight errors

常见:

  • swap 未关闭
  • cgroup 驱动不一致
  • 端口被占用

✅ 解决:

sudo kubeadm reset

❌ 镜像拉取失败(国内服务器)

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

初始化:

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

四、节点 NotReady 怎么办

1️⃣ 查看节点状态

kubectl get nodes

2️⃣ 查看 kubelet 日志

journalctl -u kubelet -f

3️⃣ 网络插件未安装(必装)

Flannel 示例:

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

五、Worker 节点 join 失败

master 上重新生成 token

kubeadm token create --print-join-command

worker 执行

sudo kubeadm join <master-ip>:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx

六、快速自检清单 ✅

  • [ ] swap 已关闭
  • [ ] 防火墙放行
  • [ ] containerd 正常运行
  • [ ] cgroup 驱动一致
  • [ ] 网络插件已安装
  • [ ] 镜像源可用

七、如果你愿意,我可以进一步帮你

你可以直接贴出:

  • ❌ 具体报错信息
  • ✅ kubeadm init 或 kubectl 的输出
  • ✅ Ubuntu 版本 & k8s 版本

我可以逐行帮你分析并给出精确解决方案。

0 踩