1. 程式人生 > 實用技巧 >第9章:K8s叢集證書續簽,Etcd資料庫備份與恢復

第9章:K8s叢集證書續簽,Etcd資料庫備份與恢復

K8s叢集證書續簽,Etcd資料庫備份與恢復

K8s 叢集證書續簽(kubeadm)

ETCD證書
自簽證書頒發機構(CA) :
• ca.crt
• ca.key
etcd叢集中相互通訊使用的客戶端證書:
• peer.crt
• peer.key
pod中定義Liveness探針使用的客戶端證書:
• healthcheck-client.crt
• healthcheck-client.key
etcd節點服務端證書:
• server.crt
• server.key

K8S證書:
自簽證書頒發機構(CA) :
• ca.crt

• ca.key
apiserver元件服務端證書:
• apiserver.crt
• apiserver.key
apiserver連線etcd客戶端證書:
• apiserver-etcd-client.crt
• apiserver-etcd-client.key
apiserver訪問kubelet 客戶端證書:
• apiserver-kubelet-client.crt
• apiserver-kubelet-client.key
匯聚層(aggregator)證書:
• front-proxy-ca.crt
• front-proxy-ca.key
代理端使用的客戶端證書,用作代理使用者與 kube-apiserver 認證:
• front-proxy-client.crt
• front-proxy-client.key
kubelet證書:已預設啟用自動輪轉。

檢查客戶端證書過期時間:
kubeadm alpha certs check-expiration
續簽所有證書:
kubeadm alpha certs renew all
cp /etc/kubernetes/admin.conf /root/.kube/config
檢視當前目錄所有證書有效時間:
ls |grep crt |xargs -I {} openssl x509 -text -in
{} |grep Not

Etcd資料庫備份與恢復

Kubernetes 使用 Etcd 資料庫實時儲存叢集中的資料,安全起見,一定要備份!

kubeadm部署方式:

備份:
ETCDCTL_API=3 etcdctl \
snapshot save snap.db \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/peer.crt \
--key=/etc/kubernetes/pki/etcd/peer.key

可以不用指定證書,操作的時候恢復後起不來


恢復:
1、先暫停kube-apiserver和etcd容器
mv /etc/kubernetes/manifests /etc/kubernetes/manifests.bak        # mv etcd.yaml kube-apiserver.yaml /tmp/ # 移走這兩個就可以
mv /var/lib/etcd/ /var/lib/etcd.bak
2、恢復
ETCDCTL_API=3 etcdctl \
snapshot restore snap.db \
--data-dir=/var/lib/etcd
3、啟動kube-apiserver和etcd容器
mv /etc/kubernetes/manifests.bak /etc/kubernetes/manifests

二進位制部署方式:

備份:
ETCDCTL_API=3 etcdctl \
snapshot save snap.db \
--endpoints=https://192.168.31.71:2379 \
--cacert=/opt/etcd/ssl/ca.pem \
--cert=/opt/etcd/ssl/server.pem \
--key=/opt/etcd/ssl/server-key.pem


恢復:
1、先暫停kube-apiserver和etcd
systemctl stop kube-apiserver
systemctl stop etcd
mv /var/lib/etcd/default.etcd /var/lib/etcd/default.etcd.bak
2、在每個節點上恢復
ETCDCTL_API=3 etcdctl snapshot restore snap.db \
--name etcd-1 \
--initial-cluster="etcd-1=https://192.168.31.71:2380,etcd-
2=https://192.168.31.72:2380,etcd-3=https://192.168.31.73:2380" \
--initial-cluster-token=etcd-cluster \
--initial-advertise-peer-urls=https://192.168.31.71:2380 \
--data-dir=/var/lib/etcd/default.etcd
3、啟動kube-apiserver和etcd
systemctl start kube-apiserver
systemctl start etcd