• LAB04:备份还原ETCD


    LAB-04:备份还原ETCD

    LAB 需求

    针对 etcd 实例 https://127.0.0.1:2379 创建一个快照,保存到 /srv/data/etcd-snapshot.db。在创建快照的过程中,如果卡住了,就键入 ctrl+c 终止,然后重试。
    然后恢复一个已经存在的快照: /var/lib/backup/etcd-snapshot-previous.db
    执行 etcdctl 命令的证书存放在:
      ca证书:   /opt/KUIN00601/ca.crt
      客户端证书:/opt/KUIN00601/etcd-client.crt
      客户端密钥:/opt/KUIN00601/etcd-client.key

    LAB 预配

    # 1、etcdctl 命令
    # 如果没有 etcdctl 命令的话,可以从 docker 中复制 etcdctl 命令,查看 etcd 的 docker 名字
    user1@k8s-master:~$ sudo docker ps | grep etcd
    9c1e60ade311   303ce5db0e90      "etcd --advertise-cl…"   3 hours ago   Up 3 hours      k8s_etcd_etcd-k8s-master_kube-system_4ffc056bc44b10088ef49648e403a455_1

    # 从 etcd 的 docker 中把 etcdctl 文件 copy 出来
    user1@k8s-master:~$ sudo docker cp 9c1e60ade311:/usr/local/bin/etcdctl /usr/local/bin/etcdctl

    # 确认有 etcdctl 命令
    user1@k8s-master:~$ etcdctl version  
    etcdctl version: 3.5.0
    API version: 3.5

    # 2、预配置解决证书问题
    # 把 /etc/kubernetes/pki/etcd 目录下的证书,copy 到 /opt/KUIN000601/ 目录
    # 创建证书的目录
    user1@k8s-master:~$ sudo mkdir /opt/KUIN00601/

    # 把 etcd 的证书 copy 到上面创建的目录中,并且修改名字 
    user1@k8s-master:~$ cd /etc/kubernetes/pki/etcd
    user1@k8s-master:/etc/kubernetes/pki/etcd$ sudo cp ca.crt /opt/KUIN00601/ca.crt
    user1@k8s-master:/etc/kubernetes/pki/etcd$ sudo cp peer.crt /opt/KUIN00601/etcd-client.crt
    user1@k8s-master:/etc/kubernetes/pki/etcd$ sudo cp peer.key /opt/KUIN00601/etcd-client.key

    # 查看 etcd 的证书
    user1@k8s-master:~$ ls -l /opt/KUIN00601/
    total 12
    -rw-r--r-- 1 root root 1017 1月   9 20:38 ca.crt
    -rw-r--r-- 1 root root 1135 1月   9 20:38 etcd-client.crt
    -rw------- 1 root root 1679 1月   9 20:38 etcd-client.key

    # 创建一个备份目录
    user1@k8s-master:~$ sudo mkdir /srv/data/

    # 3、创建还原 /var/lib/backup/etcd-snapshot-previous.db 文件,可以在前面3题完成后(就是把本地备份的文件cp到该目录),创建一个备份,然后cp到该该目录,不影响整体的实验。
    # 创建一个还原的目录
    user1@k8s-master:~$ sudo mkdir /var/lib/backup

    # 把备份的文件 copy 为 etcd-snapshot-previous.db,用于还原的实验(要等前面3题完成时的备份)
    user1@k8s-master:~$ sudo cp /srv/data/etcd-snapshot.db /var/lib/backup/etcd-snapshot-previous.db

    LAB 答案

    # 备份:要求备份到指定路径及指定文件名
    $ sudo ETCDCTL_API=3 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 save /srv/data/etcd-snapshot.db

    # 还原:要求使用指定文件进行还原
    # 1、先将 etcd、api 停止,移动静态 pod 文件
    $ sudo mv /etc/kubernetes/manifests /etc/kubernetes/manifests.bak

    # 2、备份一个原来的 etcd 文件
    $ sudo mv /var/lib/etcd /var/lib/etcd.bak

    # 3、恢复数据
    $ sudo ETCDCTL_API=3 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/etcd

    # 4、启动 etcd、api,把静态 pod 文件移回来
    $ sudo mv /etc/kubernetes/manifests.bak /etc/kubernetes/manifests

    LAB 验证

    # 查看备份
    user1@k8s-master:~$ ETCDCTL_API=3 etcdctl --write-out=table snapshot status /srv/data/etcd-snapshot.db 
    Deprecated: Use `etcdutl snapshot status` instead.

    +----------+----------+------------+------------+
    |   HASH   | REVISION | TOTAL KEYS | TOTAL SIZE |
    +----------+----------+------------+------------+
    | f2bc1e87 |    76745 |       1041 |     5.8 MB |
    +----------+----------+------------+------------+

    # 还原后,验证集群,可以在备份后,还原前创建一个资源,还原后查看资源应该不存在
    $ kubectl get nodes
    $ kubectl get pods

    参考资料

    • https://kubernetes.io/zh/docs/tasks/administer-cluster/configure-upgrade-etcd/
  • 相关阅读:
    【L.M.W.Y.D】Scrum Meeting 2
    【L.M.W.Y.D】Scrum Meeting 1
    L.M.W.Y.D 实验八 团队作业4—团队项目需求建模与系统设计
    L.M.W.Y.D 实验七 团队作业3:团队项目需求分析与原型设计
    L.M.W.Y.D 实验六 团队作业2:健康管理系统
    L.M.W.Y.D 实验五 团队作业1:软件研发团队组建与软件案例分析
    多喝热水 [Alpha] Scrum Meeting 3
    多喝热水 [Alpha] Scrum Meeting 2
    多喝热水 [Alpha] Scrum Meeting 1
    多喝热水 实验八 团队作业4:团队项目需求建模与系统设计
  • 原文地址:https://www.cnblogs.com/quqibinggan/p/16373954.html
Copyright © 2020-2023  润新知