$ oc rsh -n openshift-etcd -c etcd <etcd_pod_name>
在高可用性控制平面中,三个 etcd Pod 作为 etcd 集群中状态集的一部分运行。要恢复 etcd 集群,请通过检查 etcd 集群健康状况来识别不健康的 etcd Pod。
您可以通过登录任何 etcd Pod 来检查 etcd 集群健康状况。
通过输入以下命令登录 etcd Pod
$ oc rsh -n openshift-etcd -c etcd <etcd_pod_name>
通过输入以下命令打印 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 | |
+-----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
3 节点集群的每个 etcd Pod 都有其自己的持久卷声明 (PVC) 来存储其数据。etcd Pod 可能会由于数据损坏或丢失而失败。您可以恢复失败的 etcd Pod 及其 PVC。
要确认 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` 状态。
通过输入以下命令删除失败的 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