温馨提示×

debian安装k8s要注意什么

小樊
48
2026-08-17 00:57:09
栏目: 智能运维

Debian 上安装 Kubernetes(k8s) 时,有几个非常关键但又容易被忽略的点。下面按 “必须做 / 强烈建议 / 常见坑” 来总结,适合生产环境也适合学习环境。


一、系统准备(非常重要)

✅ 1. 系统版本选择

  • 推荐 Debian 11(Bullseye)或 Debian 12(Bookworm)
  • 内核版本 ≥ 4.19(建议 5.x)
  • 不要用太老的 Debian 10(问题多)
uname -a
cat /etc/os-release

✅ 2. 禁用 swap(必须)

Kubernetes 明确要求关闭 swap

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

⚠️ 不关 swap,kubelet 会直接报错


✅ 3. 关闭防火墙(或放行端口)

学习环境:

sudo ufw disable

生产环境: 至少放行:

  • 6443(API Server)
  • 10250(kubelet)
  • CNI 相关端口(如 Calico / Flannel)

✅ 4. 设置主机名 & hosts(多节点必做)

hostnamectl set-hostname master
cat <<EOF >> /etc/hosts
192.168.1.10 master
192.168.1.11 node1
EOF

⚠️ hostname 不能有大写字母、下划线


二、内核 & 网络参数(强烈建议)

✅ 5. 开启 IPv4 转发 & 桥接

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

sysctl --system

✅ 6. 加载 br_netfilter 模块

modprobe br_netfilter
echo br_netfilter | sudo tee /etc/modules-load.d/br_netfilter.conf

三、容器运行时(关键选择)

✅ 7. 推荐:containerd(官方推荐)

⚠️ Docker 已不再是 k8s 默认运行时(1.24+)

安装 containerd

sudo apt update
sudo apt install -y containerd

生成默认配置

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

修改 SystemdCgroup

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
  SystemdCgroup = true
sudo systemctl restart containerd

四、安装 Kubernetes 组件

✅ 8. 添加 Kubernetes APT 源(Debian 专用)

sudo apt install -y apt-transport-https ca-certificates curl gpg

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
sudo apt-mark hold kubelet kubeadm kubectl

五、初始化集群(最易出错)

✅ 9. kubeadm init 注意事项

sudo kubeadm init \
  --pod-network-cidr=10.244.0.0/16 \
  --cri-socket unix:///run/containerd/containerd.sock

⚠️ 常见错误:

  • CRI socket 不对
  • pod CIDR 和 CNI 不匹配
  • swap 没关

✅ 10. 配置 kubectl

mkdir -p $HOME/.kube
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

六、网络插件(必须)

✅ 11. 推荐 CNI

CNI 适合
Calico 生产
Flannel 简单
Cilium 高级

Flannel 示例:

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

七、常见坑总结(重点)

❌ 1. Debian 12 + iptables 模式问题

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

❌ 2. cgroup 驱动不一致

kubelet --cgroup-driver=systemd
containerd SystemdCgroup = true

❌ 3. 时间不同步

sudo apt install -y chrony
sudo systemctl enable chronyd

❌ 4. 节点 NotReady

90% 是:

  • CNI 没装
  • containerd 没启动
  • 网络不通

八、生产环境额外建议

✅ 使用 containerd 而不是 Docker
✅ 使用 Calico + kube-proxy ipvs
✅ 控制平面 至少 2C4G
✅ 工作节点 至少 2C4G
✅ 不要直接用 root 操作 kubectl


九、快速检查清单 ✅

free -m        # swap 必须为 0
systemctl status containerd
kubectl get nodes
kubectl get pods -A

如果你愿意,我可以:

  • ✅ 给你 Debian 12 + containerd + Calico 的完整安装脚本
  • ✅ 帮你排查 kubeadm init 报错
  • ✅ 给你 生产级 k8s 架构建议

直接告诉我你的 Debian 版本 + 单节点/多节点 即可。

0