3 - 自定义集群恢复


根据etcd集群的容错机制,可以从机器重启这样的临时故障中自动恢复。对于永久性故障(比如由于硬件故障导致成员节点无法再连接到集群),它支持最多(N-1)/2个成员节点永久断开连接。 如果超过(N-1)/2个成员节点断开连接,则etcd集群因为无法进行仲裁而无法继续运行。

一: 通过UI恢复集群

功能支持:rancher v2.2.0+

注意:如果有在Rancherv2.2.0之前创建的Kubernetes集群,在升级Rancher之后,您必须编辑更新集群,以便启用更新的快照功能。即使在v2.2.0之前创建了快照,也必须执行此步骤,因为旧的快照无法用于通过UI恢复etcd。

1、先决条件

  • 要使用自定义集群恢复功能,需要在创建集群时开启自动备份功能。如果集群变动比较频繁,可以把备份间隔缩短一些,根据磁盘大小设置保留的副本数。

image-20190526181815439

  • 系统会定时在/opt/rke/etcd-snapshots目录生成备份文件,并且在集群\工具\快照视图下可以查看到历史备份快照。

image-20190526202210288

2、恢复集群

  • 全局\集群视图中,定位到需要数据恢复的集群;

  • 点击集群右侧的省略号菜单,点击从备份恢复;

  • 选择要恢复的备份,点击保存

image-20190526204212567

二:在未备份情况下恢复ETCD集群

适用于rancher v2.2.0以前版本创建的自定义集群

  • 通过UI删除其他etcd节点,只保留一个etcd节点;

  • 在剩下的etcd节点上,运行以下命令:

  1. docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
  2. registry.cn-shanghai.aliyuncs.com/rancher/run-config etcd

运行此命令输出etcd的running命令,保存命令以便后面使用。

  • 停止节点中运行的etcd容器并将其重命名为etcd-old
  1. docker stop etcd
  2. docker rename etcd etcd-old
  • 步骤2中生成的命令进行以下修改:

    • 如果原来ETCD集群拥有多个etcd节点,则需要更改—initial-cluster使其包含剩余的节点;
    • 添加—force-new-cluster到命令的末尾;
  • 运行修改后的命令;

  • 单个节点启动并正常运行后,建议在集群中添加其他etcd节点。如果要重用旧节点,则需要先清理节点,然后再将它们添加回集群。