centos安装K8s步骤

发布时间:2026/11/4 7:20:01
centos安装K8s步骤

在 CentOS 上安装 K8s,生产环境推荐使用kubeadm配合containerd作为容器运行时。以下是基于 CentOS 7/8 的核心步骤,重点在于系统预处理和运行时配置,这两步最容易出错。

第一步:所有节点(Master和Worker节点都执行)系统预处理

在安装任何组件前,必须完成以下配置,否则 kubelet 无法正常启动。

1. 关闭 Swap
K8s 强制要求关闭 Swap。需同时临时关闭并注释/etc/fstab中的 swap 行,确保重启后依然生效。

2. 关闭 SELinux 与防火墙

setenforce 0 sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config systemctl disable --now firewalld

注意:生产环境若必须开启防火墙,需放行 K8s 组件及 CNI 插件所需的大量端口,复杂度较高,通常建议在内部可信网络关闭防火墙。

3. 加载内核模块与网络参数

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF modprobe overlay && modprobe br_netfilter cat <<EOF | sudo 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

CentOS 的默认源可能不包含较新的 containerd,建议使用 Docker 官方源或 containerd 官方源安装。

1. 安装 containerd

yum install -y yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y containerd.io

2. 关键配置:修改 CGroup 驱动

containerd 默认的 CGroup 驱动是cgroupfs,必须改为systemd以与 kubelet 保持一致,否则集群会不稳定。

containerd config default > /etc/containerd/config.toml sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml systemctl restart containerd && systemctl enable containerd

这一步是 CentOS 安装中最常见的“坑”,如果漏改,后续 Pod 可能无法启动或资源限制失效。

第三步:安装 kubeadm、kubelet、kubectl

1. 添加 K8s 仓库(使用阿里云镜像加速)

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0 repo_gpgcheck=0 EOF

2. 安装组件并锁定版本

yum install -y kubelet kubeadm kubectl systemctl enable kubelet

注意:kubelet版本不能高于控制平面版本,安装后kubelet处于 crashloop 状态是正常的,等待kubeadm init下发配置后才会正常。

第四步:初始化控制平面(仅 Master 节点)

1. 执行初始化
你需要根据选用的 CNI 插件决定--pod-network-cidr。若用 Flannel,通常用10.244.0.0/16;若用 Calico,常用192.168.0.0/16。

kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository=registry.aliyuncs.com/google_containers

(--image-repository指向阿里云镜像,避免拉取registry.k8s.io失败)

2. 配置 kubectl 权限
初始化成功后,按提示执行:

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

第五步:安装网络插件与加入节点

1. 安装 CNI 插件
在 Master 节点执行。以下以 Flannel 为例:

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

安装后检查kubectl get pods -n kube-system,确认 CoreDNS 变为Running,说明网络就绪。

2. Worker 节点加入
在 Master 节点生成加入命令:

kubeadm token create --print-join-command

复制输出的kubeadm join ...命令,在每个 Worker 节点上以 root 执行即可。

验证

在 Master 节点执行kubectl get nodes,所有节点状态应为Ready。若 Worker 节点长期为NotReady,优先检查 Worker 上的 containerd 状态以及SystemdCgroup是否已正确改为true。

Master 节点:

Worker 节点:

OK !