温馨提示×

Debian如何部署K8s

小樊
48
2026-08-17 00:59:12
栏目: 智能运维

在 Debian 上部署 Kubernetes(K8s)常见有 kubeadm(官方推荐)二进制手动部署Rancher / K3s 等方式。下面以 Debian 11/12 + kubeadm 为例,给你一套生产可用、最常用的部署流程。


一、环境准备

1️⃣ 系统要求

  • Debian 11(Bullseye)或 Debian 12(Bookworm)
  • 2 核 CPU / 4GB 内存以上(Master 建议更高)
  • 禁用 swap
  • 静态 IP
  • root 或 sudo 权限

2️⃣ 主机规划(示例)

master  192.168.1.10
node1   192.168.1.11
node2   192.168.1.12

二、系统初始化(所有节点)

1️⃣ 关闭 swap

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

2️⃣ 设置主机名(每台机器不同)

hostnamectl set-hostname master

3️⃣ 配置 hosts(可选但推荐)

cat >> /etc/hosts <<EOF
192.168.1.10 master
192.168.1.11 node1
192.168.1.12 node2
EOF

4️⃣ 加载内核模块

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

modprobe overlay
modprobe br_netfilter

5️⃣ 内核参数

cat <<EOF | 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

sysctl --system

三、安装容器运行时(containerd)

1️⃣ 安装 containerd

apt update
apt install -y containerd

2️⃣ 生成默认配置

mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml

3️⃣ 启用 Systemd Cgroup

编辑:

vim /etc/containerd/config.toml

修改:

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

4️⃣ 重启 containerd

systemctl restart containerd
systemctl enable containerd

四、安装 kubeadm / kubelet / kubectl

1️⃣ 添加 Kubernetes APT 源

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

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key |
    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/ /" |
    tee /etc/apt/sources.list.d/kubernetes.list

✅ 可替换 v1.29 为你需要的版本

2️⃣ 安装

apt update
apt install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl

五、初始化 Master 节点

1️⃣ 初始化集群

kubeadm init \
  --pod-network-cidr=10.244.0.0/16 \
  --apiserver-advertise-address=192.168.1.10

成功后你会看到:

kubeadm join 192.168.1.10:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx

2️⃣ 配置 kubectl

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

六、安装网络插件(CNI)

推荐 Flannel(最简单):

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

检查:

kubectl get pods -n kube-system

七、加入 Worker 节点

node1 / node2 执行 Master 输出的命令:

kubeadm join 192.168.1.10:6443 \
  --token xxx \
  --discovery-token-ca-cert-hash sha256:xxx

如果 token 过期:

kubeadm token create --print-join-command

八、验证集群

kubectl get nodes
kubectl get pods -A

输出类似:

NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   5m    v1.29.x
node1    Ready    <none>   3m    v1.29.x

九、可选优化

✅ 允许 Master 运行 Pod

kubectl taint nodes --all node-role.kubernetes.io/control-plane-

✅ 安装 Dashboard

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

十、常见问题

❌ coredns Pending

  • 网络插件未安装
  • Pod CIDR 不匹配

❌ kubelet 起不来

  • swap 没关
  • containerd 未配置 SystemdCgroup

十一、如果你想要更简单的方案

方案 说明
K3s 轻量 K8s,适合 Debian / 边缘
Rancher UI 管理
MicroK8s Ubuntu 系更友好

如果你愿意,我可以:

  • ✅ 给你 K3s 一键部署方案
  • ✅ 给你 生产级 HA 多 Master 架构
  • ✅ 帮你排查当前报错

你现在用的是 Debian 几?单机还是多机?

0