温馨提示×

Debian部署K8s步骤有哪些

小樊
47
2026-08-28 01:23:16
栏目: 智能运维

Debian 系统上部署 Kubernetes(k8s) 的常见方式是使用 kubeadm。下面给你一个从零开始、适合生产环境参考的完整流程(以 Debian 11/12 为例)。


一、环境准备

1. 系统要求

  • 2 台及以上机器(推荐至少 2C2G)
    • 1 台 Master(控制平面)
    • N 台 Node(工作节点)
  • 操作系统:Debian 11 (Bullseye) / Debian 12 (Bookworm)
  • 网络互通(关闭防火墙或放行端口)
  • 禁用 swap

2. 设置主机名(所有节点)

hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1

并在 /etc/hosts 中配置:

cat <<EOF >> /etc/hosts
192.168.1.10 k8s-master
192.168.1.11 k8s-node1
EOF

3. 关闭 swap(必须)

swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab

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

systemctl disable --now ufw

或使用 iptables:

iptables -F

5. 加载内核模块

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

modprobe overlay
modprobe br_netfilter

6. 设置内核参数

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(非常重要)

编辑 /etc/containerd/config.toml

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

4. 重启 containerd

systemctl restart containerd
systemctl enable containerd

三、安装 Kubernetes(kubeadm)

1. 添加 Kubernetes APT 源(官方)

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/ /" > /etc/apt/sources.list.d/kubernetes.list

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


2. 安装 kubeadm、kubelet、kubectl

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

⚠️ 保存该命令,用于 Node 加入


2. 配置 kubectl

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

3. 验证

kubectl get nodes

五、安装 CNI 网络插件(推荐 Flannel)

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

验证:

kubectl get pods -n kube-system

六、Node 节点加入集群

在 Node 节点执行 Master 输出的 kubeadm join 命令:

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

七、验证集群状态

kubectl get nodes
kubectl get pods -A

八、常见问题

1. Node 状态 NotReady?

  • CNI 未安装
  • 网络不通
  • cgroup 配置错误

2. kubectl 命令补全

apt install -y bash-completion
source <(kubectl completion bash)

3. 离线部署

  • 使用 kubeadm config images pull
  • 私有镜像仓库

九、总结(速查)

✅ 关闭 swap
✅ 安装 containerd
✅ 安装 kubeadm
✅ kubeadm init
✅ 安装 CNI
✅ kubeadm join

如果你需要:

  • Debian + 多 Master(高可用)
  • 离线部署方案
  • 生产级安全加固
  • 使用 Calico / Cilium 替代 Flannel

可以告诉我你的具体场景,我可以给你定制版本。

0