在 Kubernetes 集群中,主节点(也称为控制平面节点)和工作节点是不同的角色,它们有不同的组件和功能。因此,在将主节点添加到现有集群时,需要采取一些特殊的步骤。
以下是将新主节点加入 Kubernetes 集群的大致步骤:
- 在新主节点上安装 Docker 和 kubeadm
- 使用
kubeadm init
命令初始化新主节点并生成一个 join token,例如:
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
其中 --pod-network-cidr
参数指定了网络插件所使用的 IP 地址段。
- 将新主节点上生成的 join token 复制下来,并在其他节点上运行
kubeadm join
命令以将其加入到集群中,例如:
sudo kubeadm join <master-node-ip>:<master-node-port> --token <token> --discovery-token-ca-cert-hash <hash>
其中 <master-node-ip>
和 <master-node-port>
是已有主节点的 IP 地址和端口号,<token>
和 <hash>
是通过 kubeadm init
命令生成的 join token 和 CA 证书哈希值。
- 如果一切顺利,您应该会看到类似以下输出:
[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
[kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.15" ConfigMap in the kube-system namespace
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[...]
[kubelet] Configured RBAC rules to allow Node Client /discovery API Group
[kubelet] Starting client certificate rotation controller
[kubelet] Started Kubernetes client certificate rotation.
[kubelet] Node joined Kubernetes cluster
- 现在您应该已经成功将新主节点加入了 Kubernetes 集群。可以通过运行
kubectl get nodes
命令来验证节点是否处于就绪状态,并且集群中的 Pod 是否可以正常调度到这个节点上。