6.6.2. 異常な etcd メンバーを削除する


最初に異常な etcd メンバーを削除して、障害が発生したコントロールプレーンノードの削除を開始します。

手順

  1. 次のコマンドを実行して etcd Pod をリスト表示し、影響を受けるノード上にない Pod をメモします。

    $ oc -n openshift-etcd get pods -l k8s-app=etcd -o wide

    出力例

    etcd-openshift-control-plane-0   5/5   Running   11   3h56m   192.168.10.9    openshift-control-plane-0  <none>           <none>
    etcd-openshift-control-plane-1   5/5   Running   0    3h54m   192.168.10.10   openshift-control-plane-1   <none>           <none>
    etcd-openshift-control-plane-2   5/5   Running   0    3h58m   192.168.10.11   openshift-control-plane-2   <none>           <none>

  2. 次のコマンドを実行して、実行中の etcd コンテナーに接続します。

    $ oc rsh -n openshift-etcd <etcd_pod>

    <etcd_pod> は、正常なノードの 1 つに関連付けられている etcd Pod の名前に置き換えます。

    コマンドの例

    $ oc rsh -n openshift-etcd etcd-openshift-control-plane-0

  3. 次のコマンドを実行して、etcd メンバーのリストを表示します。異常な etcd メンバーの ID と名前をメモしてください。これらの値は後で必要になります。

    sh-4.2# etcdctl member list -w table

    出力例

    +------------------+---------+------------------------------+---------------------------+---------------------------+
    |        ID        | STATUS  |             NAME             |        PEER ADDRS         |       CLIENT ADDRS        |
    +------------------+---------+------------------------------+---------------------------+---------------------------+
    | 6fc1e7c9db35841d | started | openshift-control-plane-2    | https://10.0.131.183:2380 | https://10.0.131.183:2379 |
    | 757b6793e2408b6c | started | openshift-control-plane-1    | https://10.0.164.97:2380  | https://10.0.164.97:2379  |
    | ca8c2990a0aa29d1 | started | openshift-control-plane-0    | https://10.0.154.204:2380 | https://10.0.154.204:2379 |
    +------------------+---------+------------------------------+---------------------------+---------------------------+

    重要

    etcdctl endpoint health コマンドは、置換が完了して新しいメンバーが追加されるまで、削除されたメンバーをリスト表示します。

  4. 次のコマンドを実行して、異常な etcd メンバーを削除します。

    sh-4.2# etcdctl member remove <unhealthy_member_id>

    <unhealthy_member_id> は、異常なノード上の etcd メンバーの ID に置き換えます。

    コマンドの例

    sh-4.2# etcdctl member remove 6fc1e7c9db35841d

    出力例

    Member 6fc1e7c9db35841d removed from cluster b23536c33f2cdd1b

  5. 次のコマンドを実行してメンバーリストを再度表示し、メンバーが削除されたことを確認します。

    sh-4.2# etcdctl member list -w table

    出力例

    +------------------+---------+------------------------------+---------------------------+---------------------------+
    |        ID        | STATUS  |             NAME             |        PEER ADDRS         |       CLIENT ADDRS        |
    +------------------+---------+------------------------------+---------------------------+---------------------------+
    | 757b6793e2408b6c | started | openshift-control-plane-1    | https://10.0.164.97:2380  | https://10.0.164.97:2379  |
    | ca8c2990a0aa29d1 | started | openshift-control-plane-0    | https://10.0.154.204:2380 | https://10.0.154.204:2379 |
    +------------------+---------+------------------------------+---------------------------+---------------------------+

    重要

    メンバーを削除した後、残りの etcd インスタンスが再起動している間、クラスターに短時間アクセスできない場合があります。

  6. 次のコマンドを実行して、etcd Pod への rsh セッションを終了します。

    sh-4.2# exit
  7. 次のコマンドを実行して、etcd クォーラムガードをオフにします。

    $ oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": {"useUnsupportedUnsafeNonHANonProductionUnstableEtcd": true}}}'

    このコマンドにより、シークレットを正常に再作成し、静的 Pod をロールアウトできるようになります。

  8. 次のコマンドを実行して、削除された、異常な etcd メンバーのシークレットをリスト表示します。

    $ oc get secrets -n openshift-etcd | grep <node_name>

    <node_name> は、etcd メンバーを削除した障害が発生したノードの名前に置き換えます。

    コマンドの例

    $ oc get secrets -n openshift-etcd | grep openshift-control-plane-2

    出力例

    etcd-peer-openshift-control-plane-2             kubernetes.io/tls   2   134m
    etcd-serving-metrics-openshift-control-plane-2  kubernetes.io/tls   2   134m
    etcd-serving-openshift-control-plane-2          kubernetes.io/tls   2   134m

  9. 削除された影響を受けるノードに関連付けられているシークレットを削除します。

    1. 次のコマンドを実行して、ピアシークレットを削除します。

      $ oc delete secret -n openshift-etcd etcd-peer-<node_name>

      <node_name> は、影響を受けるノードの名前に置き換えます。

    2. 次のコマンドを実行して、サービングシークレットを削除します。

      $ oc delete secret -n openshift-etcd etcd-serving-<node_name>

      <node_name> は、影響を受けるノードの名前に置き換えます。

    3. 次のコマンドを実行して、メトリクスシークレットを削除します。

      $ oc delete secret -n openshift-etcd etcd-serving-metrics-<node_name> 
      1

      <node_name> は、影響を受けるノードの名前に置き換えます。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る