Debian与Kubernetes安装顺序的重要性
核心结论
- 并不存在“先装 Debian 还是先装 Kubernetes”的选择,因为 Kubernetes 是运行在操作系统之上的容器编排层。正确做法是:先在 Debian 上完成系统准备与容器运行时安装,再部署 Kubernetes 组件(kubeadm/kubelet/kubectl) 并初始化集群。这个顺序是必要且通用的前置依赖关系。
推荐安装顺序
- 系统更新与基础准备:更新 Debian 软件源并升级系统,确保内核与基础工具处于较新稳定状态。
- 安装容器运行时:安装并启动 Docker/containerd,这是 Kubernetes 运行 Pod 的底层依赖。
- 关闭 Swap:执行 swapoff -a 并在 /etc/fstab 中注释 Swap 行,避免 kubelet 因 Swap 而报错或性能异常。
- 安装 Kubernetes 组件:部署 kubeadm、kubelet、kubectl,并建议用 apt-mark hold 锁定版本,防止被系统更新意外升级。
- 初始化控制平面:在主节点执行 kubeadm init(可按需指定 –pod-network-cidr 等参数)。
- 配置 kubectl:将 /etc/kubernetes/admin.conf 复制到用户目录,便于使用 kubectl 管理集群。
- 安装网络插件:部署如 Flannel 等 CNI 插件,确保 Pod 之间网络互通。
- 加入工作节点:在各工作节点执行 kubeadm join 加入集群,完成多节点部署。
为什么顺序很重要
- 依赖关系:没有容器运行时(如 Docker/containerd),kubelet 无法拉起容器镜像,集群初始化会直接失败。
- 系统参数:未关闭 Swap 或未加载 br_netfilter/overlay 等内核模块、未开启 ip_forward/bridge-nf-call-iptables,会导致节点 NotReady、网络不通或 kube-proxy 异常。
- 网络就绪:未安装 CNI 网络插件 前,Pod 无法获得 IP,跨节点通信与 Service 访问都会失败。
- 版本稳定性:先装好并“锁定” kubelet/kubeadm/kubectl 版本,可避免与系统或其他组件升级带来的不兼容与滚动故障。
常见误区与提示
- 在 kubeadm init 之后再装容器运行时或网络插件,会导致控制平面组件无法正常工作或一直处于 Pending 状态。
- 忽略 Swap 关闭 与内核模块加载,常见现象是节点 NotReady 或 Pod 无法启动。
- 防火墙/安全组未放行关键端口(如 6443、10250 等),节点无法加入或 kubelet 健康检查失败。
- 使用过旧或不受支持的 Debian/Kubernetes 版本组合,可能遇到依赖冲突与功能缺失,生产环境建议使用 Debian 12 等稳定版本并匹配受支持的 K8s 版本。