[英]How to backup and restore a kubernetes master node?
有一個k8s單主節點,我需要在不同ip地址的不同服務器上備份和恢復。 我用谷歌搜索了這個話題並找到了一個解決方案 -https://elastisys.com/2018/12/10/backup-kubernetes-how-and-why/
一切看起來都很簡單; 因此,我按照說明獲取了證書副本和 etcd 數據庫的快照。 然后我使用第二個腳本在不同的服務器上恢復節點。 這次並不順利。 它給了我一堆與證書和服務器的本地 IP 地址不匹配相關的錯誤。
據我了解,當 kubernetes 集群初始化時,它會創建一組分配給原始服務器 ip 地址的證書,我不能只是備份它並在其他地方恢復。
那么,如何備份一個k8s主節點並恢復呢?
確保您向 kubeadm init 命令( --ignore-preflight-errors=DirAvailable--var-lib-etcd
)添加了一個額外的標志,以確認我們想要使用預先存在的數據。
執行以下步驟:
/etc/kubernetes
中所有配置文件中的 IP 地址/etc/kubernetes/pki
/etc/kubernetes/pki
有舊的IP地址作為ALT名-第1步1.
/etc/kubernetes/pki# for f in $(find -name "*.crt"); do openssl x509 -in $f -text -noout > $f.txt; done
/etc/kubernetes/pki# grep -Rl 12\\.34\\.56\\.78 .
./apiserver.crt.txt
./etcd/peer.crt.txt
/etc/kubernetes/pki# for f in $(find -name "*.crt"); do rm $f.txt; done
2.
/etc/kubernetes/pki# rm apiserver.crt apiserver.key
/etc/kubernetes/pki# kubeadm alpha phase certs apiserver
...
/etc/kubernetes/pki# rm etcd/peer.crt etcd/peer.key
/etc/kubernetes/pki# kubeadm alpha phase certs etcd-peer
... 3.
$ kubectl -n kube-system get cm -o yaml | less
...
$ kubectl -n kube-system edit cm ...
看看這里: master-backup 。
更新:
在更換主節點和更改 IP 期間,您無法聯系 api-server 來更改步驟 4 中的配置映射。此外,如果您有單個主節點,則工作節點之間的 k8s 集群連接將被中斷,直到新主節點啟動。
為了確保在更換主節點期間主節點和工作節點之間的連接,您必須創建HA 集群。
該證書是為 {your-old-IP-here} 簽名的,因此 {your-new-ip-here} 無法進行安全通信
您可以事先在證書中添加更多 IP...
api-server 證書是為主機名 kubernetes 簽名的,因此您可以將其作為別名添加到/etc/hosts
的新 IP 地址,然后執行 k ubectl --server=https://kubernetes:6443 ....
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.