×

在高可用性控制平面中,三个 etcd Pod 作为 etcd 集群中状态集的一部分运行。要恢复 etcd 集群,请通过检查 etcd 集群健康状况来识别不健康的 etcd Pod。

检查 etcd 集群的状态

您可以通过登录任何 etcd Pod 来检查 etcd 集群健康状况。

步骤
  1. 通过输入以下命令登录 etcd Pod

    $ oc rsh -n openshift-etcd -c etcd <etcd_pod_name>
  2. 通过输入以下命令打印 etcd 集群的健康状况

    sh-4.4# etcdctl endpoint status -w table
    示例输出
    +------------------------------+-----------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
    |          ENDPOINT            |       ID        | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |
    +------------------------------+-----------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
    | https://192.168.1xxx.20:2379 | 8fxxxxxxxxxx    |  3.5.12 |  123 MB |     false |      false |        10 |     180156 |             180156 |        |
    | https://192.168.1xxx.21:2379 | a5xxxxxxxxxx    |  3.5.12 |  122 MB |     false |      false |        10 |     180156 |             180156 |        |
    | https://192.168.1xxx.22:2379 | 7cxxxxxxxxxx    |  3.5.12 |  124 MB |      true |      false |        10 |     180156 |             180156 |        |
    +-----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+

恢复失败的 etcd Pod

3 节点集群的每个 etcd Pod 都有其自己的持久卷声明 (PVC) 来存储其数据。etcd Pod 可能会由于数据损坏或丢失而失败。您可以恢复失败的 etcd Pod 及其 PVC。

步骤
  1. 要确认 etcd Pod 是否失败,请输入以下命令

    $ oc get pods -l app=etcd -n openshift-etcd
    示例输出
    NAME     READY   STATUS             RESTARTS     AGE
    etcd-0   2/2     Running            0            64m
    etcd-1   2/2     Running            0            45m
    etcd-2   1/2     CrashLoopBackOff   1 (5s ago)   64m

    失败的 etcd Pod 可能具有 `CrashLoopBackOff` 或 `Error` 状态。

  2. 通过输入以下命令删除失败的 Pod 及其 PVC

    $ oc delete pods etcd-2 -n openshift-etcd
验证
  • 通过输入以下命令验证新的 etcd Pod 是否正在运行

    $ oc get pods -l app=etcd -n openshift-etcd
    示例输出
    NAME     READY   STATUS    RESTARTS   AGE
    etcd-0   2/2     Running   0          67m
    etcd-1   2/2     Running   0          48m
    etcd-2   2/2     Running   0          2m2s