在 Debian 上安装 Kubernetes(k8s)时,很多错误都集中在“环境准备”和“组件初始化”阶段。下面按易错顺序给你梳理最常见、最容易踩坑的步骤,以及正确做法。
错误表现:
kubeadm init 直接失败,或节点 NotReady
✅ 正确做法:
sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstab
⚠️ 重启后 swap 不能自动开启
错误表现:
节点之间无法通信,Pod 网络不通
✅ 推荐(测试环境):
sudo ufw disable
生产环境需精确放行:
错误表现:
kubeadm 报警 hostname 不合法✅ 要求:
_hostnamectl set-hostname master
cat >> /etc/hosts <<EOF
192.168.1.10 master
192.168.1.11 node1
EOF
错误表现:
Pod 无法访问外网,网络插件起不来
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
Debian 12+ 默认 不再支持 docker-shim
✅ 推荐方案(2024+):
安装 containerd:
sudo apt install -y containerd
⚠️ 必须改配置:
containerd config default > /etc/containerd/config.toml
修改:
SystemdCgroup = true
重启:
systemctl restart containerd
错误表现:
✅ 推荐命令:
kubeadm init \
--pod-network-cidr=10.244.0.0/16 \
--cri-socket=unix:///run/containerd/containerd.sock
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
否则:
The connection to the server localhost:8080 was refused
10.244.0.0/16192.168.0.0/16错误示例:
kubeadm init --pod-network-cidr=10.244.0.0/16
# 却装了 Calico 默认网段
✅ 装 Flannel:
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
默认 24 小时失效
重新生成:
kubeadm token create --print-join-command
| 项目 | 易错点 |
|---|---|
| Debian 12 | 默认 nftables,需确认 iptables 模式 |
| apt 源 | 必须加 apt-transport-https |
| 内核 | 建议 ≥ 5.10 |
如果你愿意,可以告诉我:
我可以给你一份可直接复制执行的安装脚本。