第8章 Hosted Control Plane の高可用性
8.1. 不健全な etcd クラスターの回復 リンクのコピーリンクがクリップボードにコピーされました!
高可用性コントロールプレーンでは、3 つの etcd Pod が etcd クラスター内のステートフルセットの一部として実行されます。etcd クラスターを回復するには、etcd クラスターの健全性をチェックして、正常でない etcd Pod を特定します。
8.1.1. etcd クラスターのステータスの確認 リンクのコピーリンクがクリップボードにコピーされました!
任意の etcd Pod にログインすると、etcd クラスターの健全性ステータスを確認できます。
手順
次のコマンドを入力して、etcd Pod にログインします。
oc rsh -n <hosted_control_plane_namespace> -c etcd <etcd_pod_name>
$ oc rsh -n <hosted_control_plane_namespace> -c etcd <etcd_pod_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、etcd クラスターの健全性ステータスを出力します。
etcdctl endpoint health --cluster -w table
sh-4.4$ etcdctl endpoint health --cluster -w table
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
ENDPOINT HEALTH TOOK ERROR https://etcd-0.etcd-discovery.clusters-hosted.svc:2379 true 9.117698ms
ENDPOINT HEALTH TOOK ERROR https://etcd-0.etcd-discovery.clusters-hosted.svc:2379 true 9.117698ms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.1.2. 障害が発生した etcd Pod の回復 リンクのコピーリンクがクリップボードにコピーされました!
3 ノードクラスターの各 etcd Pod には、データを保存するための独自の永続ボリューム要求 (PVC) があります。データが破損しているか欠落しているために、etcd Pod が失敗する可能性があります。障害が発生した etcd Pod とその PVC を回復できます。
手順
etcd Pod が失敗していることを確認するには、次のコマンドを入力します。
oc get pods -l app=etcd -n <hosted_control_plane_namespace>
$ oc get pods -l app=etcd -n <hosted_control_plane_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 失敗した etcd Pod のステータスは
CrashLoopBackOff
またはError
である可能性があります。次のコマンドを入力して、障害が発生した Pod とその PVC を削除します。
oc delete pvc/<etcd_pvc_name> pod/<etcd_pod_name> --wait=false
$ oc delete pvc/<etcd_pvc_name> pod/<etcd_pod_name> --wait=false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、新しい etcd Pod が起動して実行していることを確認します。
oc get pods -l app=etcd -n <hosted_control_plane_namespace>
$ oc get pods -l app=etcd -n <hosted_control_plane_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow