环境
centerOS 7.5
master:
- m1: 10.0.19.91
- m2: 10.0.19.92
- m3: 10.0.19.93
node:
- n1: 10.0.19.127
- n2: 10.0.19.128
负载均衡地址和端口:
- 10.0.19.1:8443
开始前[必做]
- 安装kubeadm
- 每个节点已安装容器运行时,如果没有,参考:容器运行时安装(docker或continerd)。
- 每个节点已安装kubelet kubeadm kubectl,如果没有,参考:安装kubelet kubeadm kubectl(国内镜像源)
为 kube-apiserver 创建负载均衡器
首先,您需要安装keepalived
和haproxy
或kube-VIP
来生成一个VIP
地址,参考下面链接:
安装成功后,测试连接:
nc -v 10.0.19.1 8443
安装多个控制平面和 etcd 节点
初始化控制平面(国内镜像源):
sudo kubeadm init --control-plane-endpoint "10.0.19.1:8443" \
--upload-certs \
--image-repository registry.aliyuncs.com/google_containers \
--pod-network-cidr=192.168.0.0/16
--upload-certs
用来将在所有控制节点实例之间的共享证书上传到集群。
命令完成后,您应该会看到类似以下内容:
...
现在,您可以通过以下命令来加入任意数量的控制平面节点:
kubeadm join 10.0.19.1:8443 --token 9vr73a.a8uxyaju799qwdjv --discovery-token-ca-cert-hash sha256:7c2e69131a36ae2a042a339b33381c6d0d43887e2de83720eff5359e26aec866 --control-plane --certificate-key f8902e114ef118304e561c3ecd4d0b543adc226b7a07f675f56564185ffe0c07
请注意,证书密钥可以访问集群内敏感数据,请保密!
为了安全起见,将在两个小时内删除上传的证书; 如有必要,您可以使用 kubeadm 初始化上传证书阶段,之后重新加载证书。
然后,您可以通过以下命令来加入任意数量的工作节点:
kubeadm join 10.0.19.1:8443 --token 9vr73a.a8uxyaju799qwdjv --discovery-token-ca-cert-hash sha256:7c2e69131a36ae2a042a339b33381c6d0d43887e2de83720eff5359e26aec866
将此输出复制到文本文件中。稍后您将需要它来将控制平面节点
和工作节点
加入集群。
加入控制平面节点
kubeadm join 10.0.19.1:8443 --token 9vr73a.a8uxyaju799qwdjv --discovery-token-ca-cert-hash sha256:7c2e69131a36ae2a042a339b33381c6d0d43887e2de83720eff5359e26aec866 --control-plane --certificate-key f8902e114ef118304e561c3ecd4d0b543adc226b7a07f675f56564185ffe0c07
加入工作节点
kubeadm join 10.0.19.1:8443 --token 9vr73a.a8uxyaju799qwdjv --discovery-token-ca-cert-hash sha256:7c2e69131a36ae2a042a339b33381c6d0d43887e2de83720eff5359e26aec866
要重新上传证书并生成新的解密密钥,请在已加入集群节点的控制平面上使用以下命令:
sudo kubeadm init phase upload-certs --upload-certs
安装 Pod 网络附加组件
calico
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/tigera-operator.yaml
## 注意,如果你init配置的是 --pod-network-cidr=192.168.0.0/16,那就不用改,直接运行即可,否则你需要把文件先下下来来,改成你配置的,在创建
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/custom-resources.yaml
验证集群
当以上操作全部完成之后,可执行
kubectl get pods -A
确认所有组件都是Running
状态。
然后输入:
kubectl get nodes
确认所有节点节点为Ready
。