自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

數(shù)據(jù)無憂,一學(xué)就會:掌握CKA認證必備的etcd備份與還原秘籍!

云計算 數(shù)據(jù)庫
etcd是一致且高可用的鍵值存儲,用作Kubernetes 所有集群數(shù)據(jù)的后臺數(shù)據(jù)庫。是一個非常重要的部件,因此,需要對這個部件進行備份,方便后續(xù)出現(xiàn)問題能盡快的恢復(fù)。

etcd是一致且高可用的鍵值存儲,用作Kubernetes 所有集群數(shù)據(jù)的后臺數(shù)據(jù)庫。是一個非常重要的部件,因此,需要對這個部件進行備份,方便后續(xù)出現(xiàn)問題能盡快的恢復(fù)。

1.etcd基本使用方式

下面通過Kubernetes 練習(xí)環(huán)境Killercoda[1]進行實操。使用github賬號登錄到Killercoda平臺上,該平臺目前使用的是最新版本的Kubernetes。

Killercoda平臺

該系統(tǒng)上也安裝了etcd cli客戶端,如果沒有安裝,可以執(zhí)行下面的命令進行安裝:

apt install etcd-client

etcdcli 客戶端與etcd采用證書方式進行通信,kubeadm方式部署的Kubernetes可以通過yaml文件查看etcd的證書路徑。

etcd組件yaml

--initial-advertise-peer-urls:集群間會通告,此為通告地址,聲明節(jié)點端口,2380集群中使用,2379客戶端使用。

或者使用kubectl get pods etcd-controlplane -o yaml -n kube-system方式查看證書的路徑信息。如下圖:

etcd組件yaml

2.創(chuàng)建Nginx

通過下面的命令創(chuàng)建具有多個副本的 nginx 部署,這些副本將用于驗證 etcd 數(shù)據(jù)的恢復(fù)。

kubectl create deployment nginx \
--image=nginx \
--replicas=3

驗證新部署的 Pod 是否處于運行狀態(tài):

查看Pod狀態(tài)

3.備份Etcd數(shù)據(jù)

為 etcd 備份創(chuàng)建一個備份目錄mkdir etcd-backup運行以下命令進行 etcd 備份。

export ETCDCTL_API=3 
etcdctl \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
snapshot save ./etcd-backup/etcdbackup.db

執(zhí)行完如下圖:

備份etcd

4.驗證備份數(shù)據(jù)

運行以下命令,以從新備份數(shù)據(jù)中獲取密鑰列表和詳細信息:

etcdctl --write-out=table snapshot status ./etcd-backup/etcdbackup.db

執(zhí)行完命令后如下圖:

5.將備份恢復(fù)到集群

(1) 在這里,我們將刪除之前創(chuàng)建的 nginx 部署,然后恢復(fù)備份,以便恢復(fù) nginx 部署。

controlplane $ kubectl delete deployments.apps nginx
deployment.apps "nginx" deleted

(2) 將數(shù)據(jù)從備份恢復(fù),執(zhí)行如下命令:

controlplane $ export ETCDCTL_API=3
controlplane $  mkdir -p /var/lib/restore
controlplane $  etcdctl snapshot restore etcd-backup/etcdbackup.db --data-dir=/var/lib/restore

--data-dir:是指定把數(shù)據(jù)還原到那個目錄下。

執(zhí)行完上述命令會在指定的目錄下生成etcd數(shù)據(jù)文件,如下圖:

還原備份

(3) 現(xiàn)在我們需要停止所有正在運行的Kubernetes組件以更新etcd數(shù)據(jù)。為此,我們在/etc/kubernetes/manifests/文件夾中放置了kubernetes組件的清單文件,我們將臨時將此文件移出此路徑,kubelet將自動刪除這些pod。

mkdir tmp
mv /etc/kubernetes/manifests/* tmp/

把/etc/kubernetes/manifests/目錄下的組件yaml文件,移走容器就開始刪除。可以通過crictl ps -a查看.

(4) 等待組件容器刪除后,我們需要修改etcd.yaml組件的etcd-data中的hostPath路徑參數(shù)

...省略...
  volumes:
  -hostPath:
      path:/etc/kubernetes/pki/etcd
      type:DirectoryOrCreate
    name:etcd-certs
  -hostPath:
      path:/var/lib/restore
      type:DirectoryOrCreate
    name:etcd-data
status:{}

/var/lib/restore就是數(shù)據(jù)還原的路徑。

(5) 驗證k8s集群是否正常

controlplane $ kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE   ERROR
controller-manager   Healthy   ok        
scheduler            Healthy   ok        
etcd-0               Healthy   ok        
controlplane $ kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
nginx-7854ff8877-6t6dl   1/1     Running   0          46m
nginx-7854ff8877-l6dq8   1/1     Running   0          46m
nginx-7854ff8877-pbkq9   1/1     Running   0          46m

6.CKA真題講解

CKA真題-etcd備份還原

中文解析:

此項目無需更改配置環(huán)境,但是,在執(zhí)行此項目之前,請確保您已返回初始節(jié)點。etcd 這道題真實考試為第4題,用的集群是真實考試時的上一題的集群,即真題第3題 mk8s,所以無需再切換集群了。

Task \

(1)首先,為運行在https://127.0.0.1:2379上的現(xiàn)有 etcd 實例創(chuàng)建快照并將快照保存到 /srv/data/etcd-snapshot.db 文件。

(2)為給定實例創(chuàng)建快照預(yù)計能在幾秒鐘內(nèi)完成。如果該操作似乎掛起,則命令可能有問題。用CTRL + C 來取消操作然后重試。

(3)然后還原位于/var/lib/backup/etcd-snapshot-previous.db的現(xiàn)有先前快照。

(4)提供了以下TLS證書和密鑰,以通過etcdctl 連接到服務(wù)器:

  • CA證書: /opt/KUIN00601/ca.crt
  • 客戶端證書: /opt/KUIN00601/etcd-client.crt
  • 客戶端密鑰: /opt/KUIN00601/etcd-client.key

etcd備份還原官方文檔[2]

(1) 備份

如果不使用 export ETCDCTL_API=3,而使用ETCDCTL_API=3,則下面每條 etcdctl 命令前都要加ETCDCTL_API=3。

如果執(zhí)行時,提示permission denied,則是權(quán)限不夠,命令最前面加 sudo 即可。

export ETCDCTL_API=3

先檢查考試環(huán)境有沒有題目說的目錄 /srv/data/,沒有的話則需要自己創(chuàng)建:

mkdir -p /srv/data

備份時etcdctl客戶端需要帶上證書,,用題目給的三個證書:

etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=/opt/KUIN00601/ca.crt
--cert=/opt/KUIN00601/etcd-client.crt
--key=/opt/KUIN00601/etcd-client.key
save  /srv/data/etcd-snapshot.db

可以使用etcdctl --write-out=table snapshot status /srv/data/etcd-snapshot.db驗證備份的數(shù)據(jù)。

(2) 還原操作

先創(chuàng)建一個還原數(shù)據(jù)存儲的目錄:

mkdir -p /var/lib/restore

執(zhí)行還原操作,并指定還原數(shù)據(jù)存儲目錄:

etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=/opt/KUIN00601/ca.crt
--cert=/opt/KUIN00601/etcd-client.crt
--key=/opt/KUIN00601/etcd-client.key
snapshot restore   /var/lib/backup/etcd-snapshot-previous.db \
--data-dir=/var/lib/restore

移走/etc/kubernetes/manifests/到臨時目錄下tmp:

mkdir -p /home/tmp
mv /etc/kubernetes/manifests/*.yaml /home/tmp

在/home/tmp目錄下編輯etcd.yaml文件,修改etcd-data的hostPath路徑為/var/lib/restore:

volumes:
  -hostPath:
      path:/etc/kubernetes/pki/etcd
      type:DirectoryOrCreate
    name:etcd-certs
  -hostPath:
      path:/var/lib/restore
      type:DirectoryOrCreate
    name:etcd-data
status:{}

重新把/home/tmp目錄下的組件文件移動/etc/kubernetes/manifests/:

mv /home/tmp/*.yaml  /etc/kubernetes/manifests/

(3) 驗證操作

驗證k8s集群是否正常:

controlplane $ kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE   ERROR
controller-manager   Healthy   ok        
etcd-0               Healthy   ok        
scheduler            Healthy   ok

到此整個etcd備份與還原操作就完成了。

參考資料:

  • [1]Killercoda: https://killercoda.com/playgrounds/scenario/kubernetes
  • [2]etcd備份還原官方文檔: https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/configure-upgrade-etcd/#backing-up-an-etcd-cluster
責(zé)任編輯:趙寧寧 來源: 攻城獅成長日記
相關(guān)推薦

2024-03-04 18:42:11

網(wǎng)絡(luò)策略k8s網(wǎng)絡(luò)通信

2024-05-23 13:49:00

Kuberneteetcd集群

2025-03-11 14:09:04

2013-05-08 10:01:55

SQL Server 數(shù)據(jù)備份備份與還原

2010-08-12 11:24:55

CISCO路由器備份與還原

2011-08-17 16:12:25

Windows7系統(tǒng)備份備份和還原

2020-08-28 13:49:13

數(shù)據(jù)統(tǒng)計學(xué)面試

2022-08-05 08:48:33

KubernetesEtcd數(shù)據(jù)

2010-05-17 15:58:05

MySQL Admin

2010-01-22 11:21:37

2010-01-25 12:58:26

2017-07-10 16:00:47

Mysql數(shù)據(jù)備份數(shù)據(jù)還原

2011-03-10 08:42:15

SQL Server備份還原

2010-05-18 10:27:50

MySQL數(shù)據(jù)庫

2011-07-12 10:24:11

域控制器

2009-12-24 09:07:52

Windows 7系統(tǒng)還原

2010-01-22 09:01:02

2011-03-03 16:10:04

Mysql數(shù)據(jù)庫備份還原

2025-03-21 08:20:00

數(shù)據(jù)清洗Python編程

2010-05-31 10:56:48

MySQL數(shù)據(jù)庫
點贊
收藏

51CTO技術(shù)棧公眾號