Kubernetes 在 Debian 上的依赖清单与准备
一 系统级依赖与内核模块
- 容器运行时依赖:安装并启用 containerd(或 Docker,其内置 containerd)。containerd 提供符合 CRI 的容器运行能力,是 kubelet 与容器交互的底层依赖。建议通过官方仓库安装并配置 systemd cgroup 驱动。对于使用 Docker 的场景,仍需确保 containerd 正确安装与启用。
- 基础系统与网络工具:安装 apt-transport-https、ca-certificates、curl、gnupg2/software-properties-common,用于安全获取软件包与添加仓库。
- 内核模块与网络栈:加载并持久化 overlay、br_netfilter;开启桥接流量进入 iptables 与 IPv4 转发,保证 Pod 网络与 Service 转发正常。
- 可选但常用:安装 ipvsadm、ipset、sysstat、conntrack、libseccomp2,便于后续使用 kube-proxy 的 IPVS 模式、连接跟踪与资源监控。
二 软件包依赖与版本建议
- 容器运行时:
- containerd(推荐):提供 CRI 能力,kubelet 通过 CRI 与之通信。
- Docker CE(可选):若使用 Docker,仍需确保 containerd 可用并配置为 systemd cgroup 驱动。
- Kubernetes 组件:安装 kubelet、kubeadm、kubectl。建议固定版本以避免升级漂移,例如 v1.26.0 等稳定版本。
- 仓库与密钥:添加 Kubernetes APT 仓库 的 GPG 公钥 与源列表,确保能获取签名包;Debian 11/12/13 均可按此方式配置。
三 系统配置与前置要求
- 关闭 Swap:执行 swapoff -a 并在 /etc/fstab 中注释 swap 条目,kubelet 要求无 swap 才能正常调度。
- 内核参数与模块:
- 模块加载:创建 /etc/modules-load.d/containerd.conf,写入 overlay、br_netfilter 并加载。
- sysctl 配置:创建 /etc/sysctl.d/99-k8s-cri.conf,设置 net.bridge.bridge-nf-call-iptables=1、net.bridge.bridge-nf-call-ip6tables=1、net.ipv4.ip_forward=1,执行 sysctl --system 生效。
- 主机与网络:各节点间网络互通,建议设置 主机名与 /etc/hosts 解析;如启用防火墙,放行 6443、10250 等必要端口。
四 快速安装依赖命令示例 Debian 12/13
- 安装基础工具与密钥:
- sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
- curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.33/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.33/deb/ /” | tee /etc/apt/sources.list.d/kubernetes.list
- 安装容器运行时(containerd 示例):
- sudo apt-get update && sudo apt-get install -y containerd
- sudo mkdir -p /etc/containerd && containerd config default | tee /etc/containerd/config.toml
- 在配置中设置 SystemdCgroup = true,并修改 sandbox_image = “registry.k8s.io/pause:3.10”(与所用 K8s 版本匹配)
- sudo systemctl enable --now containerd
- 安装 Kubernetes 组件:
- sudo apt-get update && sudo apt-get install -y kubelet kubeadm kubectl
- sudo apt-mark hold kubelet kubeadm kubectl(避免被意外升级)
- 关闭 Swap 与加载内核模块:
- sudo swapoff -a && sudo sed -i ‘/ swap / s/^/#/’ /etc/fstab
- echo -e “overlay\nbr_netfilter” | sudo tee /etc/modules-load.d/containerd.conf && sudo modprobe overlay br_netfilter
- cat <<EOF | sudo tee /etc/sysctl.d/99-k8s-cri.conf
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
EOF
- sudo sysctl --system