kubeadm 创建高可用k8s集群(实战)

半兽人 发表于: 2021-01-26   最后更新时间: 2021-01-27  

环境

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

开始前[必做]

为 kube-apiserver 创建负载均衡器

首先,您需要安装keepalivedhaproxykube-ovn来生成一个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://docs.projectcalico.org/manifests/tigera-operator.yaml

## 注意,如果你init配置的是 --pod-network-cidr=192.168.0.0/16,那就不用改,直接运行即可,否则你需要把文件先下下来来,改成你配置的,在创建
kubectl create -f https://docs.projectcalico.org/manifests/custom-resources.yaml

验证集群

当以上操作全部完成之后,可执行

kubectl get pods -A

确认所有组件都是Running状态。

然后输入:

kubectl get nodes

确认所有节点节点为Ready



您需要解锁本帖隐藏内容请: 点击这里
本帖隐藏的内容




上一条: kubeadm 创建 k8s集群(实战)
下一条: kubeadm清理Kubernetes(k8s)集群