在 CentOS 上向 Kubernetes(k8s)集群添加节点,通常取决于你使用的 集群安装方式。下面我按 最常见场景 给你一个完整、可操作的说明。
# 关闭 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
⚠️ 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
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 节点执行:
kubeadm token create --print-join-command
输出示例:
kubeadm join 192.168.1.10:6443 \
--token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxx
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
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
journalctl -u kubelet -f
kubectl describe node node02
常见原因:
kubeadm token list
kubeadm token create
| 安装方式 | 添加节点方式 |
|---|---|
| kubeadm | 如上 |
| kubespray | 修改 inventory 重新跑 ansible |
| Rancher | UI 一键添加 |
| 二进制 | 手动拷贝 kubelet / kubeconfig |
你可以直接告诉我:
我可以给你 完全定制化的操作步骤 ✅