在 Debian 上安装 Kubernetes(K8s)时常见的报错和对应解决办法,我按最常见的几类给你总结。你可以先对照是哪一步报错。
# 系统版本
cat /etc/os-release
# 内核版本(建议 >= 5.x)
uname -a
# 关闭 swap
sudo swapoff -a
sudo sed -i '/swap/s/^/#/' /etc/fstab
# 关闭防火墙(测试环境)
sudo ufw disable
# 加载内核模块
sudo modprobe br_netfilter
echo "br_netfilter" | sudo tee /etc/modules-load.d/br_netfilter.conf
# 内核参数
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
kubeadm init 报错:Swap 未关闭报错示例
[ERROR Swap]: running with swap on is not supported
✅ 解决:
sudo swapoff -a
sudo sed -i '/swap/s/^/#/' /etc/fstab
报错示例
failed to find a valid container runtime
✅ 推荐用 containerd(Debian 12+)
sudo apt install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd
kubeadm init 卡在 Waiting for the kubelet原因
✅ 检查:
journalctl -u kubelet -xe
✅ 确保 containerd 使用 systemd cgroup(见上一步)
现象
coredns 起不来✅ 示例(Flannel):
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
⚠️ 注意:
kubeadm init 时不要加 --pod-network-cidr 除非网络插件要求10.244.0.0/16kubeadm join 失败常见原因
✅ 重新生成 join 命令:
kubeadm token create --print-join-command
✅ 检查端口:
sudo ss -lntp | grep 6443
现象
✅ 正确添加源(示例):
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
你可以把具体报错信息贴出来,例如:
kubeadm init 的完整报错journalctl -u kubelet 的输出我可以直接告诉你是哪一步、怎么改。