温馨提示×

Debian k8s安装注意啥

小樊
46
2026-10-25 19:23:47
栏目: 智能运维

在 Debian 上部署 Kubernetes(k8s)时,有几个容易踩坑但非常关键的点。下面按“系统层 → 容器层 → k8s 层 → 常见坑”给你梳理。


一、系统层面(最重要)

1. 系统版本选择

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

2. 关闭 swap(必须)

Kubernetes 不允许 swap 开启

sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

验证:

free -m

3. 内核参数 & 模块(很重要)

加载必要模块

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

sysctl 参数

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

二、容器运行时(Container Runtime)

4. 推荐 containerd(官方默认)

⚠️ Docker 已不再直接被 kubelet 支持(1.24+)

安装 containerd

sudo apt install -y containerd

生成默认配置

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

⚠️ 关键修改:

SystemdCgroup = true
sudo systemctl restart containerd

三、Kubernetes 安装

5. 使用官方 apt 源(不要用 snap)

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

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

四、初始化集群(Master)

6. kubeadm init 注意点

sudo kubeadm init \
  --pod-network-cidr=10.244.0.0/16 \
  --cri-socket=unix:///run/containerd/containerd.sock
  • --pod-network-cidr 必须和 CNI 匹配(Flannel 用 10.244)
  • 不要用 root 运行 kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

五、网络插件(CNI)

7. 必须装,否则节点 NotReady

Flannel(简单)

kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

或 Calico(生产推荐)

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

六、常见坑(血泪经验)

❌ 1. 时间不同步

sudo apt install -y chrony
sudo systemctl enable --now chrony

❌ 2. hostname 不规范

  • 不能有大写
  • 不能重复
  • 建议:
hostnamectl set-hostname master1

❌ 3. firewalld / iptables 冲突

Debian 默认无 firewalld,但如果你是云服务器:

  • 放行 6443 / 10250 / 2379-2380
  • 或干脆测试环境关闭防火墙

❌ 4. 多网卡导致 API 不通

kubeadm init --apiserver-advertise-address=<内网IP>

七、最小可用检查清单 ✅

  • [ ] swap 关闭
  • [ ] containerd + SystemdCgroup=true
  • [ ] br_netfilter 加载
  • [ ] 时间同步
  • [ ] CNI 安装
  • [ ] kubelet 正常运行

如果你愿意,我可以:

  • 给你一套 Debian + kubeadm 一键脚本
  • 或针对 云服务器 / 裸金属 / 虚拟机 给不同方案
  • 或帮你排具体报错(贴 kubectl get nodes / journalctl -u kubelet)

你现在是 学习环境还是生产环境?

0 踩