• 转载:Rancher RKE 集群备份与恢复


    此方法直接使用RKE进行集群恢复,它适用于RKE创建并导入的集群或者RKE部署的local集群

    一、备份

    参考官网备份步骤,本文采用的是 RKE HA部署的,三台服务器都是全部角色

    1.1 自动备份

    RKEv0.2以后默认ETCD自动备份没有开启,需要使用额外的配置参数启用etcd-snapshot服务。默认情况下,etcd-snapshot服务为具有etcd角色的每个节点获取快照,并将它们存储到本地磁盘/opt/rke/etcd-snapshot目录中。

    在部署kubernetes的时候已经在rancher-cluster.yml指定了备份间隔和保留份数

    services:
      etcd:
        backup_config:
          enabled: true
          interval_hours: 1
          retention: 30
    

    参数说明:

    interval_hours: 1,快照创建间隔时间(以小时为单位),不加此参数,默认5分钟;不支持自定义单位和小数值。
    retention: 30,etcd备份保留份数;
    

    如果修改这两个参数后,直接重新部署一次即可

    rke up --config ./rancher-cluster.yml
    

    注意:会重启kube-apiserver、kube-scheduler、kube-controller-manager、etcd-rolling-snapshots四个容器。不影响rancher集群的运行。自动备份会在每个etcd节点上的 /opt/rke/etcd-snapshots 目录生成备份文件,只需定时复制一份到远程存储中。

    1.2 手动备份

    从rke v0.2.0开始,当rke 创建集群后,会在配置文件当前目录下生成 rancher-cluster.rkestate 文件,文件中保存了集群的配置信息和各组件使用的证书信息(不用单独备份所有的证书)。

    cd /opt/rancher/deploy
    rke etcd snapshot-save --name etcd_back_0612_1743 --config rancher-cluster.yml
    

    把生成的备份文件,rancher-cluster.yml,rancher-cluster.rkestate 进行备份到远程存储中。

    二、恢复

    参考官网恢复步骤,本文采用的是将三台全部角色都初始化(提前备份快照、rkestate文件,集群配置文件),并都安装好docker服务。

    2.1 恢复准备

    1)需要在进行操作的主机上提前安装RKE安装kubectl

    2)准备备份的ETCD快照文件,rancher-cluster.rkestate文件,rancher-cluster.yml配置文件

    3)在开始还原之前,请确保已停止旧集群节点上的所有kubernetes服务。

    4)建议创建三个全新节点作为集群恢复的目标节点。也可以初始化现有三个节点。

    2.2 准备文件

    1)三台机器都还原初始化,安装docker(步骤略)

    2)先在其中一台新机器上下载最新的版本rke和kubectl

    mkdir -p /opt/rancher/deploy && cd /opt/rancher/deploy
    wget https://docs.rancher.cn/download/rke/v1.0.4-rke_linux-amd64
    wget https://docs.rancher.cn/download/kubernetes/linux-amd64-v1.17.3-kubectl
    mv v1.0.4-rke_linux-amd64 rke
    mv linux-amd64-v1.17.3-kubectl kubectl
    chmod +x ./*
    

    3)复制快照文件

    mkdir -p /opt/rke/etcd-snapshots/
    

    复制备份的最新快照到/opt/rke/etcd-snapshots/目录,可能是zip文件需解压,可能是如下文件。

    2020-02-26T06:45:17Z_etcd
    

    4)将rkestate文件,集群配置文件也放在 /opt/rancher/deploy 目录中,并重命名配置文件

    rancher-cluster.yml
    rancher-cluster.rkestate
    

    修改 rancher-cluster.yml 文件,注释掉etcd部分,nodes只保留一个恢复节点。

    nodes:
    - address: 172.16.5.93
      user: rancher
      role: [ "controlplane", "etcd", "worker" ]
      ssh_key_path: ~/.ssh/id_rsa
    #- address: 172.16.5.94
    #  user: rancher
    #  role: [ "controlplane", "etcd", "worker" ]
    #  ssh_key_path: ~/.ssh/id_rsa
    #- address: 172.16.5.95
    #  user: rancher
    #  role: [ "controlplane", "etcd", "worker" ]
    #  ssh_key_path: ~/.ssh/id_rsa
    
    private_registries:
    - url: reg.nexus.wmq.com
      user: admin
      password: "admin123"
      is_default: true
    
    #services:
    #  etcd:
    #    backup_config:
    #      enabled: true
    #      interval_hours: 1
    #      retention: 30
    

    2.3 免密登入

    1、创建rancher账号并加入docker组(三台都执行)

    useradd rancher -G docker
    

    #设置密码

    passwd rancher
    

    2、root账户可登入(三台都执行)

    vim /etc/ssh/sshd_config

    PasswordAuthentication yes
    
    # 重启ssh
    systemctl restart sshd
    

    3、root账户免登入(rke安装的节点执行)

    ssh-keygen -t rsa
    ssh-copy-id rancher@172.16.5.93
    ssh-copy-id rancher@172.16.5.94
    ssh-copy-id rancher@172.16.5.95
    

    2.4 恢复ETCD数据

    切换到RKE二进制文件所在的目录,并且修改的rancher-cluster-restore.yml文件也需要放在同一路径下。

    运行以下命令还原etcd数据:

    cd /opt/rancher/deploy/
    ./rke etcd snapshot-restore --name 2020-02-26T06:45:17Z_etcd --config rancher-cluster.yml
    

    成功会提示: INFO[0100] Finished restoring snapshot [2020-02-26T06:45:17Z_etcd] on all etcd hosts

    查看集群节点正常,rancher主页也可以访问了。

    ./kubectl --kubeconfig=kube_config_rancher-cluster.yml get nodes
    NAME          STATUS   ROLES                      AGE   VERSION
    172.16.5.93   Ready    controlplane,etcd,worker   23h   v1.17.2
    

    RKE将在恢复节点上创建包含已还原数据的ETCD容器,此容器将保持运行状态,但无法完成etcd初始化。

    cattle-cluster-agent 和cattle-node-agentpods将处于Error或者CrashLoopBackOff状态。查看日志显示如下错误:

    ERROR: https://rancher.qaz123.wmq.com/ping is not accessible (Failed to connect to rancher.qaz123.wmq.com port 443: Connection timed out)
    

    2.5 恢复集群

    通过RKE在恢复节点上启动集群。运行以下命令运行集群:

    ./rke up --config ./rancher-cluster.yml
    

    然后重启恢复节点主机

    reboot
    

    重启后,检查Kubernetes Pods的状态

    ./kubectl --kubeconfig=kube_config_rancher-cluster.yml get pods -A
    

    注意:看节点状态,如果发现其余的残留主机,可以执行下面命令删除掉NotReady 的节点

    ./kubectl --kubeconfig=kube_config_rancher-cluster.yml delete node 172.16.5.94 172.16.5.95
    

    2.6 添加其他节点

    确定 local 集群的 System 项目下的服务都启动正常后,继续添加其他主机。

    编辑RKE配置文件rancher-cluster.yml,添加或者取消其他节点的注释。

    nodes:
    - address: 172.16.5.93
      user: rancher
      role: [ "controlplane", "etcd", "worker" ]
      ssh_key_path: ~/.ssh/id_rsa
    - address: 172.16.5.94
      user: rancher
      role: [ "controlplane", "etcd", "worker" ]
      ssh_key_path: ~/.ssh/id_rsa
    - address: 172.16.5.95
      user: rancher
      role: [ "controlplane", "etcd", "worker" ]
      ssh_key_path: ~/.ssh/id_rsa
    
    private_registries:
    - url: reg.nexus.wmq.com
      user: admin
      password: "admin123"
      is_default: true
    
    #system-images:
    #    kubernetes: rancher/hyperkube:v1.17.2-rancher1
    #
    #services:
    #  etcd:
    #    backup_config:
    #      enabled: true
    #      interval_hours: 1
    #      retention: 30
    

    更新集群

    ./rke up --config ./rancher-cluster.yml
    

    集群启动正常后,查看集群节点状态

    ./kubectl --kubeconfig=kube_config_rancher-cluster.yml get nodes
    NAME          STATUS   ROLES                      AGE   VERSION
    172.16.5.93   Ready    controlplane,etcd,worker   24h   v1.17.2
    172.16.5.94   Ready    controlplane,etcd,worker   84s   v1.17.2
    172.16.5.95   Ready    controlplane,etcd,worker   84s   v1.17.2
  • 相关阅读:
    网络七层协议
    discuz 使用ajax post方式传递数据,body中带有双引号会报非法字符
    处理Highcharts数据过多导致的tooltip提示框数据显示不全问题
    Python和Js打印心形
    合并区间问题
    一个继承的小问题
    kotlin学习(10)反射
    kotlin学习(9)注解
    kotlin学习(8)泛型
    kotlin学习(7)高阶函数
  • 原文地址:https://www.cnblogs.com/jatq/p/13344058.html
Copyright © 2020-2023  润新知