温馨提示×

怎样解决Debian K8s报错

小樊
44
2026-09-05 09:12:03
栏目: 智能运维

要准确解决 Debian 上 Kubernetes(K8s)报错,需要先看具体报错信息。不过我可以先给你一个常见排查思路 + Debian 常见坑的解决清单,你对照一下,如果还有具体报错可以贴出来。


一、先确认基础环境(非常关键)

在 Debian 上跑 K8s,最常见问题都出在“底层环境”。

1. 系统版本

cat /etc/debian_version
uname -a

✅ 推荐:

  • Debian 11 / 12
  • 内核 ≥ 5.x

2. 关闭 swap(K8s 必须)

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

3. 内核参数

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

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

1. 检查 containerd

systemctl status containerd

常见问题:cgroup 驱动不一致

K8s 默认用 systemd,Debian 有时是 cgroupfs

修改:

sudo vim /etc/containerd/config.toml

确保:

[plugins."io.containerd.grpc.v1.cri"]
  systemd_cgroup = true

重新加载:

sudo systemctl restart containerd

三、kubeadm 初始化报错(最常见)

1. kubeadm init 卡住或失败

看日志:

journalctl -xeu kubelet

2. 常见错误 & 解决

detected cgroup v1

Debian 12 默认 cgroup v2,没问题
Debian 11 老内核可能异常

✅ 解决方案:

  • 升级内核
  • 或统一 containerd + kubelet cgroup 驱动

running with swap on

sudo swapoff -a

cannot pull image

国内环境常遇到:

kubeadm init --image-repository=registry.aliyuncs.com/google_containers

四、节点 NotReady(非常常见)

kubectl get nodes

原因 & 解决

  1. 网络插件没装
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
  1. kubelet 没起来
systemctl status kubelet
journalctl -u kubelet -f

五、Debian 特有坑

1. iptables 模式

Debian 12 默认 nftables K8s 更兼容 iptables-legacy

update-alternatives --set iptables /usr/sbin/iptables-legacy
update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

2. 防火墙

sudo ufw disable

六、快速自检清单 ✅

  • [ ] swap 已关闭
  • [ ] containerd 正常
  • [ ] cgroup 驱动一致
  • [ ] 网络插件已安装
  • [ ] 内核参数已设置

七、如果你愿意,我可以直接帮你定位

请把下面信息贴出来:

  1. 完整报错信息
  2. kubeadm / kubectl 版本
  3. Debian 版本
  4. 单节点还是集群

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

0