对于一个包含 3 台 master 节点和 3 台 worker 节点的 Kubernetes 集群,配置过程稍有不同,您不需要在每台机器上都执行完全相同的命令。下面是一个分步指南,用于设置这样的高可用性集群:
步骤1:所有节点
在每台机器上,您需要安装 Kubernetes 组件(kubeadm
, kubelet
, kubectl
),这是集群中每个节点都必须的基础软件:
yum install kubeadm-1.29.* kubelet-1.29.* kubectl-1.29.* -y
systemctl enable --now kubelet
步骤2:仅在第一个 master 节点上
-
初始化第一个 master 节点
运行kubeadm init
命令来初始化集群的第一个 master 节点。这个步骤将设置 Kubernetes 控制平面,并为加入其他节点提供所需的信息,比如 join token 和证书签名请求(CSR)的自动批准。kubeadm init --apiserver-advertise-address <第一个master的IP地址> --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --cri-socket "unix:///var/run/containerd/containerd.sock" --kubernetes-version 1.29.2 --control-plane-endpoint "cluster-endpoint:6443"
-
记录输出信息
kubeadm init
命令执行完成后,会输出一个kubeadm join
命令,其中包含了加入集群所需的 token 和证书哈希信息。请记下这些信息,因为在加入其余的 master 节点和 worker 节点时会用到。
步骤3:其余的 master 节点
在其他的 master 节点上,使用从第一个 master 节点获得的 kubeadm join
命令来加入集群,并加上 --control-plane
标志以将其设为控制平面节点:
kubeadm join <cluster-endpoint:6443> --token <token> --discovery-token-ca-cert-hash <hash> --control-plane --cri-socket "unix:///var/run/containerd/containerd.sock"
这将确保这些节点作为 master 控制平面的一部分加入集群。
步骤4:所有 worker 节点
在所有 worker 节点上,使用从第一个 master 节点获取的 kubeadm join
命令(不加 --control-plane
标志)来加入集群:
kubeadm join <cluster-endpoint:6443> --token <token> --discovery-token-ca-cert-hash <hash> --cri-socket "unix:///var/run/containerd/containerd.sock"
注意
- 确保所有节点都可以相互通信,特别是 Kubernetes 集群内的各个端口。
- 对于高可用性集群,
--control-plane-endpoint
应该指向一个负载均衡器地址,该地址在所有 master 节点之间分发流量。 - 保持系统时间同步,这对于集群稳定性非常重要。
这样,您就可以配置一个包含多个 master 和 worker 节点的高可用 Kubernetes 集群了。如果有任何问题或需要进一步的指导,请随时咨询!