温馨提示×

CentOS K8s如何添加节点

小樊
52
2026-07-21 08:57:35
栏目: 智能运维

CentOS 上向 Kubernetes(k8s)集群添加节点,通常取决于你使用的 集群安装方式。下面我按 最常见场景 给你一个完整、可操作的说明。


一、前提条件(新增节点必须满足)

1️⃣ 系统要求

  • OS:CentOS 7 / 8 / Stream
  • CPU ≥ 2 核
  • 内存 ≥ 2GB
  • 磁盘 ≥ 20GB
  • 新节点时间同步(NTP)
  • 主机名不可重复
  • 防火墙 / SELinux 配置一致

2️⃣ 基础环境(所有节点都要)

# 关闭 SELinux
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

# 关闭 swap
swapoff -a
sed -i '/swap/d' /etc/fstab

# 设置主机名(每个节点不同)
hostnamectl set-hostname node02

# 配置 hosts(可选但推荐)
cat >> /etc/hosts <<EOF
192.168.1.10 master
192.168.1.11 node01
192.168.1.12 node02
EOF

二、安装容器运行时(containerd 示例)

⚠️ Kubernetes 1.24+ 不再支持 docker

yum install -y containerd
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml

# 启用 systemd cgroup
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml

systemctl enable --now containerd

三、安装 kubeadm / kubelet / kubectl

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
EOF

yum install -y kubelet kubeadm kubectl
systemctl enable kubelet

四、在 Master 节点生成加入命令

✅ 方式一(推荐)

Master 节点执行:

kubeadm token create --print-join-command

输出示例:

kubeadm join 192.168.1.10:6443 \
  --token abcdef.0123456789abcdef \
  --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxx

✅ 方式二(token 过期时)

kubeadm token create
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | \
  openssl rsa -pubin -outform der 2>/dev/null | \
  openssl dgst -sha256 -hex

然后手动拼接 join 命令。


五、在新节点执行加入集群

kubeadm join 192.168.1.10:6443 \
  --token abcdef.0123456789abcdef \
  --discovery-token-ca-cert-hash sha256:xxxxxxxx

✅ 成功后你会看到:

This node has joined the cluster

六、在 Master 验证节点是否加入

kubectl get nodes

输出示例:

NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   10d   v1.28.2
node01   Ready    <none>   10d   v1.28.2
node02   Ready    <none>   1m    v1.28.2

七、给新节点打标签(可选)

kubectl label node node02 node-role.kubernetes.io/worker=worker

八、常见问题排查

❌ 节点 NotReady

journalctl -u kubelet -f
kubectl describe node node02

常见原因:

  • 网络插件未安装(Calico / Flannel)
  • containerd 未启动
  • 防火墙未放行 6443 / 10250

❌ token 过期

kubeadm token list
kubeadm token create

九、如果你使用的是其他安装方式

安装方式 添加节点方式
kubeadm 如上
kubespray 修改 inventory 重新跑 ansible
Rancher UI 一键添加
二进制 手动拷贝 kubelet / kubeconfig

十、我可以进一步帮你

你可以直接告诉我:

  1. ✅ Kubernetes 版本
  2. ✅ CentOS 版本
  3. ✅ 安装方式(kubeadm / 二进制 / Rancher)
  4. ✅ 是否为高可用集群

我可以给你 完全定制化的操作步骤

0