第2章 失敗したマスターホストの置き換え
本書では、単一 etcd メンバーを置き換えるプロセスについて説明します。この手順では、クラスターに依然として etcd のクォーラム(定足数)が存在することを前提としています。
大多数のマスターホストが失われ、etcd のクォーラム(定足数)の損失が発生した場合は、この手順ではなく、失われたマスターホストからの回復に向けた障害復旧手順を実行する必要があります。
コントロールプレーンの証明書が置き換えているメンバーで有効でない場合は、この手順ではなく、期限切れのコントロールプレーン証明書からの回復手順を実行する必要があります。
単一マスターホストを置き換えるには、以下を実行します。
- etcd クラスターからメンバーを削除します。
- マスターホストの etcd 証明書が有効な場合は、メンバーを etcd クラスターに戻します。
- マスターホストの etcd 証明書がない場合やそれらが有効でなくなった場合は、etcd 証明書を生成し、メンバーを etcd クラスターに追加します。
2.1. 失敗したマスターホストの etcd クラスターからの削除
以下の手順に従って、失敗したマスターホストを etcd クラスターから削除します。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 - アクティブなマスターホストへの SSH アクセスがある。
手順
etcd に関連付けられた Pod の一覧を表示します。
クラスターにアクセスできるターミナルで、以下のコマンドを実行します。
$ oc get pods -n openshift-etcd NAME READY STATUS RESTARTS AGE etcd-member-ip-10-0-128-73.us-east-2.compute.internal 2/2 Running 0 15h etcd-member-ip-10-0-147-172.us-east-2.compute.internal 2/2 Running 7 122m etcd-member-ip-10-0-171-108.us-east-2.compute.internal 2/2 Running 0 15h
- アクティブなマスターホストにアクセスします。
etcd-member-remove.sh
スクリプトを実行し、削除する etcd メンバーの名前を渡します。[core@ip-10-0-128-73 ~]$ sudo -E /usr/local/bin/etcd-member-remove.sh etcd-member-ip-10-0-147-172.us-east-2.compute.internal Downloading etcdctl binary.. etcdctl version: 3.3.10 API version: 3.3 etcd client certs already backed up and available ./assets/backup/ Member 23e4736df4451b32 removed from cluster 6e25bab1bb556673 etcd member etcd-member-ip-10-0-147-172.us-east-2.compute.internal with 23e4736df4451b32 successfully removed..
etcd メンバーがクラスターから正常に削除されていることを確認します。
実行中の etcd コンテナーに接続します。
[core@ip-10-0-128-73 ~] id=$(sudo crictl ps --name etcd-member | awk 'FNR==2{ print $1}') && sudo crictl exec -it $id /bin/sh
etcd コンテナーで、etcd に接続するために必要な変数をエクスポートします。
sh-4.2# export ETCDCTL_API=3 ETCDCTL_CACERT=/etc/ssl/etcd/ca.crt ETCDCTL_CERT=$(find /etc/ssl/ -name *peer*crt) ETCDCTL_KEY=$(find /etc/ssl/ -name *peer*key)
etcd コンテナーで、
etcdctl member list
を実行し、削除されたメンバーが一覧表示されていないことを確認します。sh-4.2# etcdctl member list -w table +------------------+---------+------------------------------------------+------------------------------------------------------------------+---------------------------+ | ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS | +------------------+---------+------------------------------------------+------------------------------------------------------------------+---------------------------+ | 29e461db6be4eaaa | started | etcd-member-ip-10-0-128-73.us-east-2.compute.internal | https://etcd-2.clustername.devcluster.openshift.com:2380 | https://10.0.128.73:2379 | | cbe982c74cbb42f | started | etcd-member-ip-10-0-171-108.us-east-2.compute.internal | https://etcd-1.clustername.devcluster.openshift.com:2380 | https://10.0.171.108:2379 | +------------------+---------+------------------------------------------+------------------------------------------------------------------+---------------------------+