在 CentOS 上把节点加入 Kubernetes(k8s)集群,通常有以下几种场景。下面以 kubeadm 方式(最常见)为例说明。
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭 SELinux
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 关闭 swap
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
yum install -y containerd
systemctl enable --now containerd
cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
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:xxxxxx
如果 token 已过期,可重新生成
在 新节点(CentOS) 上执行 Master 输出的命令:
kubeadm join 192.168.1.10:6443 \
--token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:xxxxxx
在 Master 上执行:
kubectl get nodes
节点状态从 NotReady → Ready(需安装 CNI 网络插件,如 Calico / Flannel)
✅ 未安装网络插件
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
swapoff -a
确保 Master 的 6443 端口可达
join 命令中需指定 --control-plane(仅控制平面节点)
如果你目前是:
可以告诉我具体环境,我可以给你更精确的步骤。