要准确解决 Debian 上 Kubernetes(K8s)报错,需要先看具体报错信息。不过我可以先给你一个常见排查思路 + Debian 常见坑的解决清单,你对照一下,如果还有具体报错可以贴出来。
在 Debian 上跑 K8s,最常见问题都出在“底层环境”。
cat /etc/debian_version
uname -a
✅ 推荐:
sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
sudo modprobe br_netfilter
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
systemctl status containerd
K8s 默认用 systemd,Debian 有时是 cgroupfs
修改:
sudo vim /etc/containerd/config.toml
确保:
[plugins."io.containerd.grpc.v1.cri"]
systemd_cgroup = true
重新加载:
sudo systemctl restart containerd
kubeadm init 卡住或失败看日志:
journalctl -xeu kubelet
detected cgroup v1Debian 12 默认 cgroup v2,没问题
Debian 11 老内核可能异常
✅ 解决方案:
running with swap onsudo swapoff -a
cannot pull image国内环境常遇到:
kubeadm init --image-repository=registry.aliyuncs.com/google_containers
kubectl get nodes
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
systemctl status kubelet
journalctl -u kubelet -f
Debian 12 默认 nftables
K8s 更兼容 iptables-legacy
update-alternatives --set iptables /usr/sbin/iptables-legacy
update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
sudo ufw disable
请把下面信息贴出来:
kubeadm / kubectl 版本我可以直接告诉你哪一行错了、怎么改。