如果 rancher 是 HA 架构部署,在 HA 架构下,rancher 的数据是保存在 rke local K8S 集群中。所以在 rancher HA 架构下只需要通过 RKE 恢复 local 集群数据,即可同时恢复 rancher 的数据。

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

恢复准备

提示

  • 需要在进行操作的主机上提前安装 RKE、RKE 下载和安装 kubectl。
  • 在开始还原之前,请确保已停止旧集群节点上的所有 kubernetes 服务。
  • 建议创建三个全新节点作为集群恢复的目标节点。有关节点需求,请参阅HA 安装。您也可以使用现有节点,清除 Kubernetes 和 Rancher 配置,这将破坏这些节点上的数据请做好备份,点击了解节点初始化。

准备恢复节点并复制最新快照

假设集群中一个或者多个 etcd 节点发生故障,或者整个集群数据丢失,则需要进行 etcd 集群恢复。

添加恢复节点并复制最新快照:

  1. 恢复节点可以是全新的节点,或者是之前集群中经过初始化的某个节点;

  2. 通过远程终端登录恢复节点

  3. 创建快照目录:

    mkdir -p /opt/rke/etcd-snapshots/
  4. 复制备份的最新快照/opt/rke/etcd-snapshots/ 目录

    • 如果使用 rke 0.2 之前版本做的备份,需拷贝 pki.bundle.tar.gz/opt/rke/etcd-snapshots/ 目录下;
    • 如果使用 rke 0.2 以及以后版本做的备份,拷贝 xxx..rkestate 文件到 rke 配置文件相同目录下;

设置 RKE 配置文件

创建原始 rancher-cluster.yml 文件的副本,比如:

cp rancher-cluster.yml rancher-cluster-restore.yml

对副本配置文件进行以下修改:

  • 注释 serviceetcd 的配置;

  • 删除或注释掉整个 addons:部分,Rancher 部署和设置配置已在 etcd 数据库中,恢复不再需要;

  • nodes:部分添加恢复节点,注释掉其他节点;

    例: rancher-cluster-restore.ymlnodes:- address: 52.15.238.179     # `添加恢复节点`  user: ubuntu  role: [ etcd, controlplane, worker ]# 注释掉其他节点;# - address: 52.15.23.24#   user: ubuntu#   role: [ etcd, controlplane, worker ]# - address: 52.15.238.133#   user: ubuntu#   role: [ etcd, controlplane, worker ]# 注释掉 `addons:`部分# addons: |-#   ---#   kind: Namespace#   apiVersion: v1#   metadata:#   ---...

    恢复 ETCD 数据

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

  2. 根据系统类型,选择运行以下命令还原 etcd 数据:

    # MacOS./rke etcd snapshot-restore --name <snapshot>.db --config rancher-cluster-restore.yml# Linux./rke etcd snapshot-restore --name <snapshot>.db --config rancher-cluster-restore.yml

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

恢复集群

通过 RKE 在恢复节点节点上启动集群。根据系统类型,选择运行以下命令运行集群:

# MacOS./rke up --config ./rancher-cluster-restore.yml# Linux./rke up --config ./rancher-cluster-restore.yml

查看节点状态

RKE 运行完成后会创建 kubectl 的配置文件 kube_config_rancher-cluster-restore.yml,可通过这个配置文件查询 K8S 集群节点状态:

kubectl --kubeconfig=kube_config_rancher-cluster-restore.yml  get nodes

NAME            STATUS    ROLES                      AGE       VERSION52.15.238.179   Ready     controlplane,etcd,worker    1m       v1.10.518.217.82.189   NotReady  controlplane,etcd,worker   16d       v1.10.518.222.22.56    NotReady  controlplane,etcd,worker   16d       v1.10.518.191.222.99   NotReady  controlplane,etcd,worker   16d       v1.10.5

清理旧节点

通过 kubectl 从集群中删除旧节点

kubectl --kubeconfig=kube_config_rancher-cluster-restore.yml  delete node 18.217.82.189 18.222.22.56 18.191.222.99

重启 恢复节点

恢复节点重启后,检查 Kubernetes Pods 的状态

kubectl --kubeconfig=kube_config_rancher-cluster-restore.yml  get pods --all-namespaces

NAMESPACE       NAME                                    READY     STATUS    RESTARTS   AGEcattle-system   cattle-cluster-agent-766585f6b-kj88m    0/1       Error     6          4mcattle-system   cattle-node-agent-wvhqm                 0/1       Error     8          8mcattle-system   rancher-78947c8548-jzlsr                0/1       Running   1          4mingress-nginx   default-http-backend-797c5bc547-f5ztd   1/1       Running   1          4mingress-nginx   nginx-ingress-controller-ljvkf          1/1       Running   1          8mkube-system     canal-4pf9v                             3/3       Running   3          8mkube-system     cert-manager-6b47fc5fc-jnrl5            1/1       Running   1          4mkube-system     kube-dns-7588d5b5f5-kgskt               3/3       Running   3          4mkube-system     kube-dns-autoscaler-5db9bbb766-s698d    1/1       Running   1          4mkube-system     metrics-server-97bc649d5-6w7zc          1/1       Running   1          4mkube-system     tiller-deploy-56c4cf647b-j4whh          1/1       Running   1          4m

直到 Rancher 服务器启动并且 DNS/负载均衡器指向新集群,cattle-cluster-agent 和 cattle-node-agentpods 将处于 Error 或者 CrashLoopBackOff 状态。

删除残留文件

集群恢复有可能会导致一些组件对应的 SA 鉴权失效,通过查看 kubectl --kubeconfig=kube_config_rancher-cluster-restore.yml get pods --all-namespaces 可以看到很多 pod 一直无法正常运行,查看 pod 日志可以看到 Authentication failed 等信息。这个时候需要删除一些旧的认证配置然后重新生成。

kubeconfig=kube_config_cluster.yml

# 重建 SA Token 密文kubectl --kubeconfig=$kubeconfig -n kube-system get secrets | \grep 'kubernetes.io/service-account-token'| awk '{print $1}' | \grep -E 'coredns|flannel|metrics-server|horizontal|canal|calico' | \xargs kubectl -n kube-system --kubeconfig=$kubeconfig delete --force --grace-period=0 secrets

kubectl --kubeconfig=$kubeconfig -n cattle-system get secrets | \grep 'kubernetes.io/service-account-token'| awk '{print $1}' | grep -E 'rancher|cattle' | \xargs kubectl -n cattle-system --kubeconfig=$kubeconfig delete --force --grace-period=0 secrets

kubectl --kubeconfig=$kubeconfig -n ingress-nginx  get secrets | \grep 'kubernetes.io/service-account-token'| awk '{print $1}' | \grep -E 'nginx-ingress-serviceaccount' | \xargs kubectl -n ingress-nginx --kubeconfig=$kubeconfig delete --force --grace-period=0 secrets

# 重建 kube-system 命名空间的 podkubectl -n kube-system --kubeconfig=$kubeconfig get pod | awk '{print $1}' | \grep -E 'coredns|flannel|metrics-server|horizontal|canal|calico' | \xargs kubectl -n kube-system --kubeconfig=$kubeconfig delete --force --grace-period=0 pod

# 重建 cattle-system 命名空间的 podkubectl -n cattle-system --kubeconfig=$kubeconfig get pod | awk '{print $1}' | \grep -E 'rancher|cattle-node|cattle-cluster-agent' | \xargs kubectl -n cattle-system --kubeconfig=$kubeconfig delete --force --grace-period=0 pod

# 重建 ingress-nginx 命名空间的 podkubectl -n ingress-nginx --kubeconfig=$kubeconfig get pod | awk '{print $1}' | \grep -E 'nginx-ingress-controller' | \xargs kubectl -n ingress-nginx --kubeconfig=$kubeconfig delete --force --grace-period=0 pod

添加其他节点

  1. 编辑 RKE 配置文件 rancher-cluster-restore.yml,添加或者取消其他节点的注释,addons 保持注释状态。

    例:rancher-cluster-restore.ymlnodes:- address: 52.15.238.179     # `恢复节点`  user: ubuntu  role: [ etcd, controlplane, worker ]- address: 52.15.23.24  user: ubuntu  role: [ etcd, controlplane, worker ]- address: 52.15.238.133  user: ubuntu  role: [ etcd, controlplane, worker ]
    
    # addons: |-#   ---#   kind: Namespace...
  2. 更新集群

    根据系统类型,选择运行以下命令更新集群:

    # MacOS./rke up --config ./rancher-cluster-restore.yml# Linux./rke up --config ./rancher-cluster-restore.yml

http://www.taodudu.cc/news/show-5061756.html

相关文章:

  • 使用rke安装高可用k8s集群
  • RKE2安装kubernetes(2)
  • 使用rancher rke2配置高可用k8s集群
  • 使用RKE部署高可用Rancher
  • RKE 升级kubernetes 版本
  • RKE部署高可用Kubernetes集群
  • RKE部署K8S
  • RKE部署Kubernetes集群
  • 再战 k8s(十八):RKE
  • RKE学习手记
  • 使用RKE安装K8S集群
  • RKE安装部署K8S集群、Rancher
  • 关于jq工具安装shell脚本
  • jq/h5 实现实时获取大文件下载进度
  • 路由器的口
  • 详谈四大主流CPU体系架构
  • 从LLVM说起,有关CPU架构,JIT等
  • 嵌入式第一堂
  • 嵌入式第一周扩展
  • 「硬见小百科」很全的CPU处理器技术架构解析
  • openwrt (一)入手
  • Linux ARM平台开发系列讲解(网络篇) 2.1 Marvell 88EA6321/6320 Switch 数据手册阅读之了解芯片功能
  • summary of 马维尔
  • creo安装后打开提示license错误
  • PRO/E产品设计如何将两个零件合并在一起
  • ProE打开服务器文件路径添加,【1人回答】PROE 5.0 config.pro 配置问题 自动搜索路径-3D溜溜网...
  • Creo(proe)快捷键设置
  • 系统回溯信息:遇到严重错误。已将回溯写入...PTC... raceback.log请将其发送给|技术支持|。
  • Solidworks、Proe、Creo、UG史上最全的全套教学视频240G
  • artcam2008 stp 教程_ArtCAM 中文版使用教程

rancher rke 集群恢复相关推荐

  1. rancher导入集群时证书报错

    rancher导入集群时证书报错 现象 导入集群时,cattle-cluster-agent报错如下: time="2022-06-28T08:00:28Z" level=erro ...

  2. Rancher docker集群

    Rancher相对shipyard还是比较强大的,适合企业级的应用使用. 使用步骤 运行Rancher容器 sudo docker run -d --restart=unless-stopped -p ...

  3. Rancher搭建集群

    此次的主要内容是:新建4台虚拟机,docker安装配置rancher,一台主机 +两台从机 + 一台NFS网络存储. 主机 rancher-server xxx.xxx.xxx.200 8c-8g-3 ...

  4. mysql galera 恢复_galera mariadb集群恢复策略

    1 galera mariadb 首先MariaDB是一个数据库,可以看成是MySQL的一个分支,由于MySQL被SUN收购,所以MySQL面临着闭源的风险,当时MySQL之父Widenius并没有加 ...

  5. mysql cluster 宕机 恢复_mysql cluster 集群恢复不起来,还请大神赐教?报错-问答-阿里云开发者社区-阿里云...

    mysql cluster 集群原本使用的几乎全是内存表,后来随着数据的增长,把大的内存表迁移到磁盘表了,之后集群出现6050错误,整个集群挂掉:之后重新启动集群一直启动不起来... ----以下是集 ...

  6. mysql 主从 锁库_mysql 5.7.21 主从集群恢复GTID方式(不锁库)

    从库损坏后,进行恢复 1.查看主加标记点 show master status\G 记录下POST的值 2.备注主库数据 mysqldump -u root -p -S /data/mysql/mys ...

  7. Rancher入门到精通-2.0 安装rancher及集群添加

    基本环境docker 安装rancher docker run -d --restart=unless-stopped \ > -p 80:80 -p 443:443 \ > -v /wo ...

  8. Galera Cluster for MySQL 集群恢复

    node1: 1.rm -rf grastate.dat 2.mysqld_safe --wsrep-recover 3.galera_new_cluster node2: systemctl res ...

  9. rancher k8s集群pod一直处于Pending状态

    资源.docker.kubelet.调度器都没有发现问题 解决:到调度节点重启kubelet docker restart kubelet

最新文章

  1. pythonpandas设置索引_python – pandas:使用(row,col)索引设置值
  2. MMDetection-配置文件
  3. apache zookeeper java_zookeeper启动报错java.net.NoRouteToHostException
  4. 提现接口网站 php,API提现接口
  5. braft中AppendEntries逻辑
  6. 免费前端网站页面模板
  7. 内网地址(私有地址、私有IP地址空间)
  8. Python学习记录—— 绘制百分比堆积柱状图
  9. android 软件安全与逆向分析(非虫)读书笔记
  10. 华为教父任正非的别样视野(转)
  11. 电脑预装Office2016打开Word时点击保存弹出“word无法启动转换器RECOVR32.CNV”对话框问题的修复方法
  12. 一些我们关于端到端语音翻译的思考和尝试
  13. 摄像头ip分享论坛_谁的SIP软交换呼叫中心终端摄像头正在公网裸奔
  14. 用C语言实现扫雷游戏(详解)
  15. python批量修改文件扩展名
  16.  Meltdown论文翻译【转】
  17. win10系统下找不到hosts文件解决方案
  18. PMP报考一定要报培训班吗?
  19. Java 开发工具包 Java SE Development Kit 8/11LTS/15
  20. 调用支付宝第三方接口(沙箱环境) Spring Boot+Maven

热门文章

  1. AIFF-C压缩格式容器规范解析
  2. Bitnami Redmine安装配置指南
  3. 网厨管理java_点菜网---Java开源生鲜电商平台-技术选型(源码可下载)
  4. iOS Xcode启动模拟器之后电脑卡顿的原因
  5. 经纬恒润位列“2021北京民营企业科技创新百强榜单”第40名
  6. LNMP一键部署基于PHP和MYSQL的网站
  7. asp.net mysql连接字符串_【转】ASP.NET数据库连接字符串总结
  8. Fel表达式计算引擎学习 侵删
  9. java矢量图_你见过js画出这样的矢量图以及动画特效吗?
  10. Java中Double保留自定义小数位的几种方法