前兩天嘗試在單 master 節點的情境下,進行 kubernetes 的備份。
因為 kubernetes 在 control plane 故障的情形下,工作負載還是能正常執行,因此在地端的主機資源數量不多,無法準備多台主機以提高 master 節點的冗餘時,使用單 master 節點搭配定期的備份,也是一個可選擇的方案。
但是如果主機資源充足的情形下,則可以直接部署 master 群集,以提高 control plane 的可用性。
接下來,使用以下配置進行 master 群集部署:
master1: 10.13.13.101
master2: 10.13.13.106
master3: 10.13.13.107
kube-apiserver: 10.13.13.201
使用新版本的 kubeadm 1.16.1,支援直接部署 control plane cluster 的參數:
在 master1 上執行:
$ sudo kubeadm init \
--pod-network-cidr 10.244.0.0/16 \
--apiserver-advertise-address 10.13.13.101 \
--control-plane-endpoint '10.13.13.201:6443' \
--upload-certs
執行完畢後,除原本加入 worker 節點的指令外,還可得到加入 control plan 節點的指令,類似以下訊息:
...
You can now join any number of control-plane node by running the following command on each as a root:
kubeadm join 192.168.0.200:6443 --token 9vr73a.a8uxyaju799qwdjv --discovery-token-ca-cert-hash sha256:7c2e69131a36ae2a042a339b33381c6d0d43887e2de83720eff5359e26aec866 --control-plane --certificate-key f8902e114ef118304e561c3ecd4d0b543adc226b7a07f675f56564185ffe0c07
Please note that the certificate-key gives access to cluster sensitive data, keep it secret!
As a safeguard, uploaded-certs will be deleted in two hours; If necessary, you can use kubeadm init phase upload-certs to reload certs afterward.
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.0.200:6443 --token 9vr73a.a8uxyaju799qwdjv --discovery-token-ca-cert-hash sha256:7c2e69131a36ae2a042a339b33381c6d0d43887e2de83720eff5359e26aec866
在其它要加入 control plan 的節點上,執行其中的指令:
$ sudo kubeadm join 10.13.13.201:6443 \
--token 9vr73a.a8uxyaju799qwdjv \
--discovery-token-ca-cert-hash sha256:7c2e69131a36ae2a042a339b33381c6d0d43887e2de83720eff5359e26aec866 \
--control-plane \
--certificate-key f8902e114ef118304e561c3ecd4d0b543adc226b7a07f675f56564185ffe0c07