kubernetes集群基础环境配置核心是统一、可复现、避坑,所有节点必须关闭防火墙与selinux、禁用swap、配置主机名与hosts解析、加载br_netfilter模块并启用桥接流量、安装并正确配置containerd、安装版本一致的kubeadm/kubelet/kubectl三件套,且需验证内核版本、mac/product_uuid唯一性、cgroup驱动及时间同步。

Linux 运维中安装配置 Kubernetes 集群基础环境,核心是统一、可复现、避坑。不是装完就完事,而是让每个节点具备稳定运行 kubelet 和加入集群的底层能力。重点不在组件本身,而在系统级准备是否到位。
所有节点必须执行的基础系统配置
这一步漏一项,后续 kubeadm init 或 kubeadm join 很可能直接失败,报错信息常指向“预检不通过”。
- 关闭防火墙与 SELinux:
systemctl stop firewalld && systemctl disable firewalldsetenforce 0并修改/etc/selinux/config中SELINUX=disabled - 禁用 Swap:
swapoff -a,再注释/etc/fstab中含swap的行,防止重启后自动启用 - 配置主机名与 hosts 解析:
各节点分别运行hostnamectl set-hostname k8s-master(或k8s-node1);
所有节点统一追加解析记录到/etc/hosts,例如:192.168.1.10 k8s-master192.168.1.11 k8s-node1 - 加载内核模块并启用桥接流量:
modprobe br_netfilter
创建/etc/sysctl.d/k8s.conf,写入:net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1
执行sysctl --system生效
容器运行时:优先选 containerd(K8s v1.24+ 强制要求)
Docker 已不再被 kubeadm 直接支持。containerd 更轻量、更稳定,且与 systemd 集成更好。
- 安装:
Ubuntu:sudo apt-get install -y containerd
CentOS/RHEL:sudo yum install -y containerd - 生成默认配置:
sudo containerd config default | sudo tee /etc/containerd/config.toml - 关键修改:
编辑/etc/containerd/config.toml,将SystemdCgroup = false改为true - 重启并设为开机自启:
sudo systemctl restart containerd && sudo systemctl enable containerd
kubeadm/kubelet/kubectl 三件套安装与对齐
三个组件版本必须完全一致(如 v1.28.12),小版本不同也会导致节点无法注册或控制平面异常。
- 添加官方源(以 Ubuntu 为例):
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list - 安装并锁定版本:
sudo apt-get update && sudo apt-get install -y kubelet=1.28.12-00 kubeadm=1.28.12-00 kubectl=1.28.12-00sudo apt-mark hold kubelet kubeadm kubectl(防止系统升级覆盖) - 启动 kubelet(但先不 start,由 kubeadm 自动触发):
sudo systemctl enable kubelet
关键验证点与常见卡点
执行前快速确认,能省去大量排错时间:
- 检查内核版本:
uname -r≥ 4.18,否则需升级内核 - 确认 MAC 地址和 product_uuid 唯一:
ip link show和sudo cat /sys/class/dmi/id/product_uuid,虚拟机环境易重复 - 验证 cgroup 驱动是否为 systemd:
docker info | grep "Cgroup Driver"(若用 Docker)或sudo crictl info | grep runtimeType+ 查看 containerd 配置 - 确保时间同步:
timedatectl status,建议部署chrony或ntpd,避免证书校验失败











