kubeadm-prerequisites 是一份围绕 kubeadm 安装前节点准备的技能资料。其核心原则是:kubeadm 不会负责创建机器,而是要求节点上已经配置好 containerd、kubelet 和内核设置。
用途
- 为新节点加入 Kubernetes 集群做准备
- 排查 kubeadm pre-flight 检查失败
- 配置 containerd 并启用 SystemdCgroup
- 配置内核模块与参数
使用场景 资料建议在以下情况使用:准备新节点、处理 pre-flight 检查失败、设置 containerd 的 SystemdCgroup、配置内核模块和参数。
预检要求概要 资料列出的检查项包括:Swap 已禁用、containerd 正在运行、所需端口空闲、至少 2 个 CPU、至少 2GB 内存、主机名唯一、br_netfilter 已加载,并分别给出检查命令与修复方式。
系统配置
- 关闭 Swap:使用 swapoff -a,并从 /etc/fstab 中移除;原因是启用 Swap 会影响调度器对内存的判断和 OOM 处理。
- SELinux:将状态设为 Permissive,原因是 Enforcing 模式可能阻止容器访问文件系统。
- 防火墙:实验中可直接关闭 firewalld;生产环境则需开放控制平面与工作节点所需端口(如 6443、2379-2380、10250、10259、10257、30000-32767)。
- 时间同步:启用 NTP,并可用 chronyc 检查;原因是证书有效性依赖准确时间。
内核配置
- 加载 overlay 与 br_netfilter 模块,并写入 /etc/modules-load.d/k8s.conf 以持久化。
- 设置 net.bridge.bridge-nf-call-iptables、net.bridge.bridge-nf-call-ip6tables、net.ipv4.ip_forward 参数并写入 /etc/sysctl.d/k8s.conf,随后执行 sysctl --system。
containerd 安装与配置
- 添加 Docker 仓库,安装 containerd.io,生成默认配置。
- 关键步骤是将 SystemdCgroup 设为 true,使 kubelet 与 containerd 使用相同的 cgroup 驱动。
- 启动并启用 containerd,确认 socket 存在。
Kubernetes 组件安装
- 添加 Kubernetes 仓库,安装 kubelet、kubeadm、kubectl。
- 启用 kubelet;资料说明在执行 kubeadm init 或 kubeadm join 之前,kubelet 会反复崩溃重启,这是预期行为。
- 配置 /etc/crictl.yaml 指向 containerd socket,并用 crictl info 验证。
hosts 文件 资料提示移除有问题的 localhost 映射,并添加集群节点记录。
版本兼容 提供 Kubernetes 1.32 至 1.35 与 containerd 的兼容版本表,以及 containerd 1.x 对应 config.toml version = 2、2.x 对应 version = 3 的说明。
常见 pre-flight 失败 列出 CRI、Swap、Port-6443、NumCPU、Mem、FileContent、SystemVerification 等报错的原因与修复方法,并附带一个 Bash 验证脚本,用于检查 Swap、SELinux、防火墙、containerd、br_netfilter、ip_forward、SystemdCgroup 与 kubelet 状态。
一键准备步骤 资料给出以 root 在每个节点执行的完整命令序列,覆盖系统配置、内核模块、内核参数、containerd、Kubernetes 组件与 crictl。
限制 资料未提供收费、价格、平台支持范围等信息,暂未提供。