• k8s集群数据的备份和恢复


    以阿里云ACK集群为例进行说明:

    备份

    通过ack-etcd-backup-operator进行备份,这里对备份不做过多说明。

    模拟故障

    1停止ETCD服务

    在3台master几点即etcd服务所在节点,将etcd服务关停

    ~]$	systemctl stop etcd
    ~]$ systemctl status etcd
    

    2 破坏数据

    因为是模拟故障,所以先备份,然后在销毁数据

    ~]$ cp -rf /var/lib/etcd{,.bak}
    ~]$ rm -rf /var/lib/etcd/data.etcd
    

    数据恢复

    1 从oss上获取备份数据

    ~]$ wget ${oss_data_url}
    

    2 执行恢复操作

    分别在3台主机上执行数据恢复,这里需要替换--name,--initial-cluster-token,--initial-advertise-peer-urls,--initial-cluster 的值,这些值可以通过cat /usr/lib/systemd/system/etcd.service查看到。同时替换最后面的数据文件为oss下载的得到的文件。

    ### 举例说明
    
    # 主机 172.16.1.59:
    ETCDCTL_API=3 etcdctl 
    --name=172.16.1.59-name-1 
    --endpoints="https://172.16.1.59:2379" 
    --cacert=/var/lib/etcd/cert/ca.pem 
    --cert=/var/lib/etcd/cert/etcd-server.pem 
    --key=/var/lib/etcd/cert/etcd-server-key.pem 
    --initial-cluster-token 6f2b2a6c-8470-423d-81f9-ed4698da8de6 
    --initial-advertise-peer-urls https://172.16.1.59:2380 
    --initial-cluster 172.16.1.59-name-1=https://172.16.1.59:2380,172.16.1.60-name-2=https://172.16.1.60:2380,172.16.1.61-name-3=https://172.16.1.61:2380 
    --data-dir=/var/lib/etcd/data.etcd snapshot restore etcd_snapshot.db_v1201729_2020-05-12-11:10:54
    
    # 主机 172.16.1.60:
    ETCDCTL_API=3 etcdctl 
    --name=172.16.1.60-name-2 
    --endpoints="https://172.16.1.60:2379" 
    --cacert=/var/lib/etcd/cert/ca.pem 
    --cert=/var/lib/etcd/cert/etcd-server.pem 
    --key=/var/lib/etcd/cert/etcd-server-key.pem 
    --initial-cluster-token 6f2b2a6c-8470-423d-81f9-ed4698da8de6 
    --initial-advertise-peer-urls https://172.16.1.60:2380 
    --initial-cluster 172.16.1.59-name-1=https://172.16.1.59:2380,172.16.1.60-name-2=https://172.16.1.60:2380,172.16.1.61-name-3=https://172.16.1.61:2380 
    --data-dir=/var/lib/etcd/data.etcd snapshot restore etcd_snapshot.db_v1201729_2020-05-12-11:10:54
    
    # 主机 172.16.1.61:
    ETCDCTL_API=3 etcdctl 
    --name=172.16.1.61-name-3 
    --endpoints="https://172.16.1.61:2379" 
    --cacert=/var/lib/etcd/cert/ca.pem 
    --cert=/var/lib/etcd/cert/etcd-server.pem 
    --key=/var/lib/etcd/cert/etcd-server-key.pem 
    --initial-cluster-token 6f2b2a6c-8470-423d-81f9-ed4698da8de6 
    --initial-advertise-peer-urls https://172.16.1.61:2380 
    --initial-cluster 172.16.1.59-name-1=https://172.16.1.59:2380,172.16.1.60-name-2=https://172.16.1.60:2380,172.16.1.61-name-3=https://172.16.1.61:2380 
    --data-dir=/var/lib/etcd/data.etcd snapshot restore etcd_snapshot.db_v1201729_2020-05-12-11:10:54
    

    3 数据目录权限更改

    etcd服务是通过etcd用户来启动的,我们在恢复数据时用的是root用户,所以需要修改一下数据目录的权限。

    ~]$ chown -R etcd:etcd /var/lib/etcd/
    

    4 启动etcd服务

    ~]$ systemctl start etcd
    ~]$ systemctl status etcd
    

    恢复验证

    1 手动验证服务是否恢复

    使用kubelet命令获取集群信息,看看是否恢复。

    ~]$ kubectl get node  # 查看各个节点状态是否都是Ready
    ~]$ kubectl get po --all-namespaces
    

    2 手动触发kubelet重启

    如果步骤1遇到问题。需要我们手动重启kubelet。分别在3台主机上执行,执行完需要等待一会儿。

    ```shell
    

    ~]$ systemctl restart kubelet
    ```

    3 控制台验证

    通过控制台,查看各个功能是否恢复正常,之前创建的服务状态是否正常。

  • 相关阅读:
    用记事本编写C#程序并运行C#代码
    C#传递参数大集合
    JQuery或JavaScript获取网页的宽度、高等
    mybatis
    mysql 函数
    eclipse sts 常规操作
    谷歌浏览器自动翻译当前网页
    推荐Calendar操作日期
    IDEA 快捷键
    eclipse sts 快捷键
  • 原文地址:https://www.cnblogs.com/vinsent/p/13613604.html
Copyright © 2020-2023  润新知