This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.2.2. メンバーをクラスターに戻す
etcd クラスターからメンバーを削除した後に、以下のいずれかの手順を使用してメンバーをクラスターに追加します。
- マスターホストの etcd 証明書が有効な場合は、メンバーを etcd クラスターに戻します。
- マスターホストの etcd 証明書がない場合やそれらが有効でなくなった場合は、etcd 証明書を生成し、メンバーを etcd クラスターに追加します。
2.2.1. マスターホストを etcd クラスターに戻す リンクのコピーリンクがクリップボードにコピーされました!
マスターホストを etcd クラスターに追加するには、以下の手順に従います。この手順では、事前にマスターホストをクラスターから削除し、TLS 証明書や DNS などのその etcd 依存関係が有効であることを前提とします。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 - etcd クラスターに追加するマスターホストへの SSH アクセスがある。
- 既存のアクティブな etcd メンバーの IP アドレスがある。
手順
etcd クラスターに追加するマスターホストにアクセスします。
重要この手順は、etcd クラスターに追加されるマスターホストで実行する必要があります。
etcd-member-add.sh
スクリプトを実行し、2 つのパラメーターを渡します。- 既存の etcd メンバーの IP アドレス
- 追加する etcd メンバーの名前
Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcd メンバーが正常に etcd クラスターに追加されたことを確認します。
実行中の etcd コンテナーに接続します。
[core@ip-10-0-147-172 ~] id=$(sudo crictl ps --name etcd-member | awk 'FNR==2{ print $1}') && sudo crictl exec -it $id /bin/sh
[core@ip-10-0-147-172 ~] id=$(sudo crictl ps --name etcd-member | awk 'FNR==2{ print $1}') && sudo crictl exec -it $id /bin/sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcd コンテナーで、etcd に接続するために必要な変数をエクスポートします。
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)
sh-4.3# 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)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcd コンテナーで、
etcdctl member list
を実行し、新規メンバーが一覧表示されていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新規メンバーが起動するまで最長 10 分の時間がかかる可能性があります。
etcd コンテナーで、
etcdctl endpoint health
を実行し、新規メンバーの状態が正常であることを確認します。etcdctl endpoint health --cluster
sh-4.3# etcdctl endpoint health --cluster https://10.0.128.73:2379 is healthy: successfully committed proposal: took = 4.5576ms https://10.0.147.172:2379 is healthy: successfully committed proposal: took = 5.1521ms https://10.0.171.108:2379 is healthy: successfully committed proposal: took = 4.2631ms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
新規メンバーが etcd に関連付けられた Pod の一覧にあり、そのステータスが
Running
であることを確認します。クラスターにアクセスできるターミナルで、以下のコマンドを実行します。
oc get pods -n openshift-etcd
$ 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.2. etcd 証明書の生成およびメンバーのクラスターへの追加 リンクのコピーリンクがクリップボードにコピーされました!
ノードが新規であるか、またはノードの etcd 証明書が有効でなくなった場合、メンバーを etcd クラスターに追加する前に etcd 証明書を生成する必要があります。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 - etcd クラスターに追加する新規マスターホストへの SSH アクセスがある。
- 正常なマスターホストの 1 つへの SSH アクセスがある。
- 正常なマスターホストのいずれかの IP アドレスがある。
手順
正常なマスターノードのいずれかに一時的な etcd 証明書の署名側のサービスを設定します。
正常なマスターノードの 1 つにアクセスし、以下のコマンドを使用して
cluster-admin
ユーザーとしてクラスターにログインします。sudo oc login https://localhost:6443
[core@ip-10-0-143-125 ~]$ sudo oc login https://localhost:6443 Authentication required for https://localhost:6443 (openshift) Username: kubeadmin Password: Login successful.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kube-etcd-signer-server
イメージのプル仕様を取得します。export KUBE_ETCD_SIGNER_SERVER=$(sudo oc adm release info --image-for kube-etcd-signer-server --registry-config=/var/lib/kubelet/config.json)
[core@ip-10-0-143-125 ~]$ export KUBE_ETCD_SIGNER_SERVER=$(sudo oc adm release info --image-for kube-etcd-signer-server --registry-config=/var/lib/kubelet/config.json)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow tokenize-signer.sh
スクリプトを実行します。-E
フラグをsudo
に渡し、環境変数がスクリプトに適切に渡されるようにします。sudo -E /usr/local/bin/tokenize-signer.sh ip-10-0-143-125
[core@ip-10-0-143-125 ~]$ sudo -E /usr/local/bin/tokenize-signer.sh ip-10-0-143-125
1 Populating template /usr/local/share/openshift-recovery/template/kube-etcd-cert-signer.yaml.template Populating template ./assets/tmp/kube-etcd-cert-signer.yaml.stage1 Tokenized template now ready: ./assets/manifests/kube-etcd-cert-signer.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 署名側のデプロイ先となる正常なマスターのホスト名。
生成されたファイルを使用して、署名側の Pod を作成します。
sudo oc create -f assets/manifests/kube-etcd-cert-signer.yaml
[core@ip-10-0-143-125 ~]$ sudo oc create -f assets/manifests/kube-etcd-cert-signer.yaml pod/etcd-signer created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 署名側がこのマスターノードでリッスンしていることを確認します。
ss -ltn | grep 9943
[core@ip-10-0-143-125 ~]$ ss -ltn | grep 9943 LISTEN 0 128 *:9943 *:*
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
新規マスターホストを etcd クラスターに追加します。
クラスターに追加される新規マスターホストにアクセスし、以下のコマンドを使用して
cluster-admin
ユーザーとしてクラスターにログインします。sudo oc login https://localhost:6443
[core@ip-10-0-156-255 ~]$ sudo oc login https://localhost:6443 Authentication required for https://localhost:6443 (openshift) Username: kubeadmin Password: Login successful.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcd-member-recover.sh
スクリプトで必要な 2 つの環境変数をエクスポートします。export SETUP_ETCD_ENVIRONMENT=$(sudo oc adm release info --image-for machine-config-operator --registry-config=/var/lib/kubelet/config.json)
[core@ip-10-0-156-255 ~]$ export SETUP_ETCD_ENVIRONMENT=$(sudo oc adm release info --image-for machine-config-operator --registry-config=/var/lib/kubelet/config.json)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow export KUBE_CLIENT_AGENT=$(sudo oc adm release info --image-for kube-client-agent --registry-config=/var/lib/kubelet/config.json)
[core@ip-10-0-156-255 ~]$ export KUBE_CLIENT_AGENT=$(sudo oc adm release info --image-for kube-client-agent --registry-config=/var/lib/kubelet/config.json)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcd-member-recover.sh
スクリプトを実行します。-E
フラグをsudo
に渡し、環境変数がスクリプトに適切に渡されるようにします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 署名側のサーバーが実行されている正常なマスターの IP アドレスと、新規メンバーの etcd 名の両方を指定します。
新規マスターホストが etcd メンバーの一覧に追加されていることを確認します。
正常なマスターにアクセスし、実行中の etcd コンテナーに接続します。
[core@ip-10-0-143-125 ~] id=$(sudo crictl ps --name etcd-member | awk 'FNR==2{ print $1}') && sudo crictl exec -it $id /bin/sh
[core@ip-10-0-143-125 ~] id=$(sudo crictl ps --name etcd-member | awk 'FNR==2{ print $1}') && sudo crictl exec -it $id /bin/sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcd コンテナーで、etcd に接続するために必要な変数をエクスポートします。
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)
sh-4.3# 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)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcd コンテナーで、
etcdctl member list
を実行し、新規メンバーが一覧表示されていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新規メンバーが起動するまで最長 20 分の時間がかかる可能性があります。
新規メンバーの追加後に、署名側の Pod は不要になるため、これを削除します。
クラスターにアクセスできるターミナルで、以下のコマンドを実行します。
oc delete pod -n openshift-config etcd-signer
$ oc delete pod -n openshift-config etcd-signer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow