11.5. 正常なクラスター内のコントロールプレーンノードの置き換え
新しいコントロールプレーンノードを追加し、既存のコントロールプレーンノードを削除することで、3 - 5 個のコントロールプレーンノードを持つ正常な OpenShift Container Platform クラスター内のコントロールプレーン (マスター) ノードを置き換えることができます。
クラスターが正常でない場合は、コントロールプレーンノードを管理する前に追加の操作を実行する必要があります。詳細は、正常でないクラスター内のコントロールプレーンノードの置き換え を参照してください。
11.5.1. 新しいコントロールプレーンノードの追加 リンクのコピーリンクがクリップボードにコピーされました!
新規コントロールプレーンノードを追加し、これが正常であることを確認します。以下の例では、新しいノードは node-5 です。
前提条件
- OpenShift Container Platform 4.11 以降を使用している。
- 少なくとも 3 つのコントロールプレーンノードを持つ正常なクラスターをインストールした。
- Day 2 用にクラスターに追加する単一のコントロールプレーンノードが作成されている。
手順
新しい Day 2 コントロールプレーンノードの保留中の証明書署名要求 (CSR) を取得します。
oc get csr | grep Pending
$ oc get csr | grep PendingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
csr-5sd59 8m19s kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper <none> Pending csr-xzqts 10s kubernetes.io/kubelet-serving system:node:node-5 <none> Pending
csr-5sd59 8m19s kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper <none> Pending csr-xzqts 10s kubernetes.io/kubelet-serving system:node:node-5 <none> PendingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいノード (この例では
node-5) の保留中の CSR をすべて承認します。oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs --no-run-if-empty oc adm certificate approve$ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs --no-run-if-empty oc adm certificate approveCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要インストールを完了するには、CSR を承認する必要があります。
新しいコントロールプレーンノードが
準備完了ステータスになっていることを確認します。oc get nodes
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記etcdOperator には、クラスターが Machine API を使用して実行されるときに新しいノードを参照するMachineカスタムリソース (CR) が必要です。クラスターに 3 つ以上のコントロールプレーンノードがある場合、Machine API は自動的にアクティブ化されます。BareMetalHostおよびMachineCR を作成し、それらを新しいコントロールプレーンのNodeCR にリンクします。一意の
.metadata.nameの値を使用してBareMetalHostCR を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow BareMetalHostCR を適用します。oc apply -f <filename>
$ oc apply -f <filename>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- <filename> は
BareMetalHostCR の名前に置き換えます。
一意の
.metadata.name値を使用してMachineCR を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<cluster_name>は特定のクラスターの名前に置き換えます (例:test-day2-1-6qv96)。
クラスター名を取得するには、次のコマンドを実行します。
oc get infrastructure cluster -o=jsonpath='{.status.infrastructureName}{"\n"}'$ oc get infrastructure cluster -o=jsonpath='{.status.infrastructureName}{"\n"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow MachineCR を適用します。oc apply -f <filename>
$ oc apply -f <filename>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<filename>はMachineCR の名前に置き換えます。
link-machine-and-node.shスクリプトを実行して、BareMetalHost、Machine、およびNodeをリンクします。以下の
link-machine-and-node.shスクリプトをローカルマシンにコピーします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow スクリプトを実行可能にします。
chmod +x link-machine-and-node.sh
$ chmod +x link-machine-and-node.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow スクリプトを実行します。
bash link-machine-and-node.sh node-5 node-5
$ bash link-machine-and-node.sh node-5 node-5Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記最初の
node-5インスタンスはマシンを表し、2 番目のインスタンスはノードを表します。
既存のコントロールプレーンノードの 1 つを実行して、
etcdのメンバーを確認します。コントロールプレーンノードへのリモートシェルセッションを開きます。
oc rsh -n openshift-etcd etcd-node-0
$ oc rsh -n openshift-etcd etcd-node-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcdメンバーを一覧表示します。etcdctl member list -w table
# etcdctl member list -w tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
etcdOperator の設定プロセスが完了するまで監視します。oc get clusteroperator etcd
$ oc get clusteroperator etcdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例 (完了時)
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE etcd 4.11.5 True False False 5h54m
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE etcd 4.11.5 True False False 5h54mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
etcdの健全性を確認します。コントロールプレーンノードへのリモートシェルセッションを開きます。
oc rsh -n openshift-etcd etcd-node-0
$ oc rsh -n openshift-etcd etcd-node-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow エンドポイントの健全性を確認します。
etcdctl endpoint health
# etcdctl endpoint healthCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
192.168.111.24 is healthy: committed proposal: took = 10.383651ms 192.168.111.26 is healthy: committed proposal: took = 11.297561ms 192.168.111.25 is healthy: committed proposal: took = 13.892416ms 192.168.111.28 is healthy: committed proposal: took = 11.870755ms
192.168.111.24 is healthy: committed proposal: took = 10.383651ms 192.168.111.26 is healthy: committed proposal: took = 11.297561ms 192.168.111.25 is healthy: committed proposal: took = 13.892416ms 192.168.111.28 is healthy: committed proposal: took = 11.870755msCopy to Clipboard Copied! Toggle word wrap Toggle overflow
すべてのノードが準備ができていることを確認します。
oc get nodes
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスター Operator がすべて利用可能であることを確認します。
oc get ClusterOperators
$ oc get ClusterOperatorsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターのバージョンが正しいことを確認します。
oc get ClusterVersion
$ oc get ClusterVersionCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME VERSION AVAILABLE PROGRESSING SINCE STATUS version 4.11.5 True False 5h57m Cluster version is 4.11.5
NAME VERSION AVAILABLE PROGRESSING SINCE STATUS version 4.11.5 True False 5h57m Cluster version is 4.11.5Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.5.2. 既存のコントロールプレーンノードの削除 リンクのコピーリンクがクリップボードにコピーされました!
交換するコントロールプレーンノードを削除します。これは、以下の例では node-0 です。
前提条件
- 新しい正常なコントロールプレーンノードが追加されている。
手順
既存のコントロールプレーンノードの
BareMetalHostCR を削除します。oc delete bmh -n openshift-machine-api node-0
$ oc delete bmh -n openshift-machine-api node-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow マシンが正常でないことを確認します。
oc get machine -A
$ oc get machine -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MachineCR を削除します。oc delete machine -n openshift-machine-api node-0
$ oc delete machine -n openshift-machine-api node-0 machine.machine.openshift.io "node-0" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow NodeCR の削除を確認します。oc get nodes
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcd-operatorログをチェックして、etcdクラスターのステータスを確認します。oc logs -n openshift-etcd-operator etcd-operator-8668df65d-lvpjf
$ oc logs -n openshift-etcd-operator etcd-operator-8668df65d-lvpjfCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
E0927 07:53:10.597523 1 base_controller.go:272] ClusterMemberRemovalController reconciliation failed: cannot remove member: 192.168.111.23 because it is reported as healthy but it doesn't have a machine nor a node resource
E0927 07:53:10.597523 1 base_controller.go:272] ClusterMemberRemovalController reconciliation failed: cannot remove member: 192.168.111.23 because it is reported as healthy but it doesn't have a machine nor a node resourceCopy to Clipboard Copied! Toggle word wrap Toggle overflow etcdOperator がクラスターメンバーを調整できるように、物理マシンを削除します。コントロールプレーンノードへのリモートシェルセッションを開きます。
oc rsh -n openshift-etcd etcd-node-1
$ oc rsh -n openshift-etcd etcd-node-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow メンバーとエンドポイントの健全性をチェックして、
etcdOperator の調整の進行状況を監視します。etcdctl member list -w table; etcdctl endpoint health
# etcdctl member list -w table; etcdctl endpoint healthCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow