替换失败的节点

etcd 集群通过容忍少数成员故障实现高可用性。但是,要改善集群的整体健康状况,请立即替换失败的成员。当多个成员失败时,逐个替换它们。替换失败成员需要两个步骤:删除失败成员和添加新成员。
虽然 etcd 在内部保留唯一的成员 ID,但建议为每个成员使用唯一的名称,以避免人为错误。例如,考虑一个三成员的 etcd 集群。让 URL 为:member1=http://10.0.0.1, member2=http://10.0.0.2 和 member3=http://10.0.0.3。当 member1 失败时,将其替换为 member4=http://10.0.0.4。

(1)获取失败的 member1 的成员 ID:

  1. etcdctl --endpoints=http://10.0.0.2,http://10.0.0.3 member list

显示以下信息:

  1. 8211f1d0f64f3269, started, member1, http://10.0.0.1:2380, http://10.0.0.1:2379
  2. 91bc3c398fb3c146, started, member2, http://10.0.0.2:2380, http://10.0.0.2:2379
  3. fd422379fda50e48, started, member3, http://10.0.0.3:2380, http://10.0.0.3:2379

(2)移除失败的成员

  1. etcdctl member remove 8211f1d0f64f3269

显示以下信息:

  1. Removed member 8211f1d0f64f3269 from cluster

(3)增加新成员:

  1. ./etcdctl member add member4 --peer-urls=http://10.0.0.4:2380

显示以下信息:

  1. Member 2be1eb8f84b7f63e added to cluster ef37ad9dc622a7c4

(4)在 IP 为 10.0.0.4 的机器上启动新增加的成员:

  1. export ETCD_NAME="member4"
  2. export ETCD_INITIAL_CLUSTER="member2=http://10.0.0.2:2380,member3=http://10.0.0.3:2380,member4=http://10.0.0.4:2380"
  3. export ETCD_INITIAL_CLUSTER_STATE=existing
  4. etcd [flags]

(5)其他更新:

  1. 更新其 --etcd-servers 参数,使 Kubernetes 知道配置进行了更改,然后重新启动 Kubernetes API 服务器。
  2. 如果在 deployment 中使用了负载均衡,更新负载均衡配置。

备份Etcd集群

所有 Kubernetes 对象都存储在 etcd 上。定期备份 etcd 集群数据对于在灾难场景(例如丢失所有主节点)下恢复 Kubernetes 集群非常重要。快照文件包含所有 Kubernetes 状态和关键信息。为了保证敏感的 Kubernetes 数据的安全,可以对快照文件进行加密。

备份 etcd 集群可以通过两种方式完成:etcd 内置快照和卷快照。

内置快照

etcd 支持内置快照,因此备份 etcd 集群很容易。快照可以从使用 etcdctl snapshot save 命令的活动成员中获取,也可以通过从 etcd 数据目录复制 member/snap/db 文件,该 etcd 数据目录目前没有被 etcd 进程使用。获取快照通常不会影响成员的性能。
下面是一个示例,用于获取 $ENDPOINT 所提供的键空间的快照到文件 snapshotdb

  1. ETCDCTL_API=3 etcdctl --endpoints $ENDPOINT snapshot save snapshotdb
  2. # exit 0
  3. # verify the snapshot
  4. ETCDCTL_API=3 etcdctl --write-out=table snapshot status snapshotdb
  5. +----------+----------+------------+------------+
  6. | HASH | REVISION | TOTAL KEYS | TOTAL SIZE |
  7. +----------+----------+------------+------------+
  8. | fe01cf57 | 10 | 7 | 2.1 MB |
  9. +----------+----------+------------+------------+

卷快照

如果运行在云上,可以直接使用卷快照。