2.3. 确定不健康的 etcd 成员的状态


替换不健康 etcd 成员的步骤取决于 etcd 的以下状态:

  • 机器没有运行或者该节点未就绪
  • etcd pod 处于 crashlooping 状态

此流程决定了 etcd 成员处于哪个状态。这可让您了解替换不健康的 etcd 成员要遵循的步骤。

注意

如果您知道机器没有运行或节点未就绪,但它们应该很快返回健康状态,那么您就不需要执行替换 etcd 成员的流程。当机器或节点返回一个健康状态时,etcd cluster Operator 将自动同步。

先决条件

  • 您可以使用具有 cluster-admin 角色的用户访问集群。
  • 您已找到不健康的 etcd 成员。

流程

  1. 检查 机器是否没有运行:

    $ oc get machines -A -ojsonpath='{range .items[*]}{@.status.nodeRef.name}{"\t"}{@.status.providerStatus.instanceState}{"\n"}' | grep -v running
    ip-10-0-131-183.ec2.internal  stopped 
    1
    Copy to Clipboard Toggle word wrap
    1
    此输出列出了节点以及节点机器的状态。如果状态不是 running则代表机器没有运行

    如果机器没有运行,按照替换机器没有运行或节点没有就绪的非健康 etcd 成员过程进行操作。

  2. 确定 节点是否未就绪

    如果以下任何一种情况是正确的,则代表节点没有就绪

    • 如果机器正在运行,检查节点是否不可访问:

      $ oc get nodes -o jsonpath='{range .items[*]}{"\n"}{.metadata.name}{"\t"}{range .spec.taints[*]}{.key}{" "}' | grep unreachable
      ip-10-0-131-183.ec2.internal	node-role.kubernetes.io/master node.kubernetes.io/unreachable node.kubernetes.io/unreachable 
      1
      Copy to Clipboard Toggle word wrap
      1
      如果节点带有 unreachable 污点,则节点没有就绪
    • 如果该节点仍然可访问,则检查该节点是否列为 NotReady:

      $ oc get nodes -l node-role.kubernetes.io/master | grep "NotReady"
      ip-10-0-131-183.ec2.internal   NotReady   master   122m   v1.17.1 
      1
      Copy to Clipboard Toggle word wrap
      1
      如果节点列表为 NotReady,则 该节点没有就绪

    如果节点没有就绪,按照替换机器没有运行或节点没有就绪的 etcd 成员的步骤进行操作。

  3. 确定 etcd Pod 是否处于 crashlooping 状态

    如果机器正在运行并且节点已就绪,请检查 etcd pod 是否处于 crashlooping 状态。

    1. 验证所有 master 节点是否都被列为 Ready

      $ oc get nodes -l node-role.kubernetes.io/master
      NAME                           STATUS   ROLES    AGE     VERSION
      ip-10-0-131-183.ec2.internal   Ready    master   6h13m   v1.17.1
      ip-10-0-164-97.ec2.internal    Ready    master   6h13m   v1.17.1
      ip-10-0-154-204.ec2.internal   Ready    master   6h13m   v1.17.1
      Copy to Clipboard Toggle word wrap
    2. 检查 etcd pod 的状态是否为 ErrorCrashLoopBackOff:

      $ oc get pods -n openshift-etcd | grep etcd
      etcd-ip-10-0-131-183.ec2.internal                2/3     Error       7          6h9m 
      1
      
      etcd-ip-10-0-164-97.ec2.internal                 3/3     Running     0          6h6m
      etcd-ip-10-0-154-204.ec2.internal                3/3     Running     0          6h6m
      Copy to Clipboard Toggle word wrap
      1
      由于此 pod 的状态是 Error,因此 etcd pod 为 crashlooping 状态

    如果 etcd pod 为 crashlooping 状态,请按照替换 etcd pod 处于 crashlooping 状态的不健康的 etcd 成员的步骤进行操作。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat