12.6. コントロールプレーンマシンセットのトラブルシューティング
このセクションの情報を使用して、発生する可能性のある問題を理解し、回復してください。
12.6.1. コントロールプレーンマシンセットのカスタムリソースの状態を確認する リンクのコピーリンクがクリップボードにコピーされました!
ControlPlaneMachineSet
カスタムリソース (CR) の存在と状態を確認できます。
手順
次のコマンドを実行して、CR の状態を確認します。
oc get controlplanemachineset.machine.openshift.io cluster \ --namespace openshift-machine-api
$ oc get controlplanemachineset.machine.openshift.io cluster \ --namespace openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Active
の結果は、ControlPlaneMachineSet
CR が存在し、アクティブ化されていることを示します。管理者の操作は必要ありません。 -
Inactive
の結果は、ControlPlaneMachineSet
CR が存在するがアクティブ化されていないことを示します。 -
NotFound
の結果は、既存のControlPlaneMachineSet
CR がないことを示します。
-
次のステップ
コントロールプレーンマシンセットを使用するには、クラスターの正しい設定を持つ ControlPlaneMachineSet
CR が存在することを確認する必要があります。
- クラスターに既存の CR がある場合は、CR の設定がクラスターに対して正しいことを確認する必要があります。
- クラスターに既存の CR がない場合は、クラスターの正しい設定で CR を作成する必要があります。
12.6.2. 不足している Azure 内部ロードバランサーの追加 リンクのコピーリンクがクリップボードにコピーされました!
Azure の ControlPlaneMachineSet
とコントロールプレーン Machine
のカスタムリソース (CR) の両方で internalLoadBalancer
パラメーターが必要です。このパラメーターがクラスターで事前設定されていない場合は、両方の CR に追加する必要があります。
このパラメーターが Azure プロバイダー仕様のどこにあるかの詳細は、サンプルの Azure プロバイダー仕様を参照してください。コントロールプレーン Machine
CR での配置も同様です。
手順
次のコマンドを実行して、クラスター内のコントロールプレーンマシンを一覧表示します。
oc get machines \ -l machine.openshift.io/cluster-api-machine-role==master \ -n openshift-machine-api
$ oc get machines \ -l machine.openshift.io/cluster-api-machine-role==master \ -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コントロールプレーンマシンごとに、次のコマンドを実行して CR を編集します。
oc edit machine <control_plane_machine_name>
$ oc edit machine <control_plane_machine_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
クラスターの正しい詳細を含む
internalLoadBalancer
パラメーターを追加し、変更を保存します。 次のコマンドを実行して、コントロールプレーンマシンセットの CR を編集します。
oc edit controlplanemachineset.machine.openshift.io cluster \ -n openshift-machine-api
$ oc edit controlplanemachineset.machine.openshift.io cluster \ -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
クラスターの正しい詳細を含む
internalLoadBalancer
パラメーターを追加し、変更を保存します。
次のステップ
-
デフォルトの
RollingUpdate
更新戦略を使用するクラスターの場合、Operator は自動的に変更をコントロールプレーン設定に伝達します。 -
OnDelete
更新戦略を使用するように設定されているクラスターの場合、コントロールプレーンマシンを手動で置き換える必要があります。
12.6.3. 劣化した etcd Operator のリカバリー リンクのコピーリンクがクリップボードにコピーされました!
特定の状況では、etcd Operator が劣化する可能性があります。
たとえば、修復の実行中に、マシンのヘルスチェックによって、etcd をホストしているコントロールプレーンマシンが削除される場合があります。その時点で etcd メンバーにアクセスできない場合、etcd Operator は劣化します。
etcd Operator が劣化している場合、Operator に障害のあるメンバーを強制的に削除させ、クラスターの状態を復元させるには、手動の介入が必要です。
手順
次のコマンドを実行して、クラスター内のコントロールプレーンマシンを一覧表示します。
oc get machines \ -l machine.openshift.io/cluster-api-machine-role==master \ -n openshift-machine-api \ -o wide
$ oc get machines \ -l machine.openshift.io/cluster-api-machine-role==master \ -n openshift-machine-api \ -o wide
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のいずれかの状態は、コントロールプレーンマシンの障害を示している可能性があります。
-
STATE
値はstopped
です。 -
PHASE
値はFailed
です。 -
PHASE
値が 10 分以上Deleting
です。
重要続行する前に、クラスターに 2 つの正常なコントロールプレーンマシンがあることを確認します。この手順のアクションを複数のコントロールプレーンマシンで実行すると、etcd クォーラムが失われるリスクがあり、データが失われる可能性があります。
大多数のコントロールプレーンホストが失われ、etcd のクォーラム (定足数) の損失が発生した場合は、この手順ではなく、「直前のクラスター状態への復元に向けた障害復旧」手順を実行する必要があります。
-
次のコマンドを実行して、障害が発生したコントロールプレーンマシンのマシン CR を編集します。
oc edit machine <control_plane_machine_name>
$ oc edit machine <control_plane_machine_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 障害が発生したコントロールプレーンマシンから
lifecycleHooks
パラメーターの内容を削除し、変更を保存します。etcd Operator は、障害が発生したマシンをクラスターから削除し、新しい etcd メンバーを安全に追加できるようにします。
12.6.4. RHOSP 上で実行されるクラスターのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform 4.13 から 4.14 にアップグレードする Red Hat OpenStack Platform (RHOSP) 上で実行するクラスターの場合は、コントロールプレーンマシンセットを使用する前にアップグレード後のタスクを実行する必要がある場合があります。
12.6.4.1. アップグレード後のルートボリュームアベイラビリティーゾーンを持つマシンを含む RHOSP クラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
アップグレードする Red Hat OpenStack Platform (RHOSP) 上で実行する一部のクラスターでは、次の設定に該当する場合、コントロールプレーンマシンセットを使用する前に、マシンリソースを手動で更新する必要があります。
- クラスターを OpenShift Container Platform 4.13 から 4.14 にアップグレードしました。
- クラスターインフラストラクチャーはインストーラーによってプロビジョニングされます。
- マシンは複数のアベイラビリティーゾーンに分散されました。
- マシンは、ブロックストレージのアベイラビリティーゾーンが定義されていないルートボリュームを使用するように設定されていました。
この手順が必要な理由を理解するには、Solution #7024383 を参照してください。
手順
すべてのコントロールプレーンマシンについて、環境に一致するすべてのコントロールプレーンマシンのプロバイダー仕様を編集します。たとえば、マシン
master-0
を編集するには、次のコマンドを入力します。oc edit machine/<cluster_id>-master-0 -n openshift-machine-api
$ oc edit machine/<cluster_id>-master-0 -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<cluster_id>
- アップグレードされたクラスターの ID を指定します。
プロバイダー仕様で、プロパティー
rootVolume.availabilityZone
の値を、使用するアベイラビリティーゾーンのボリュームに設定します。RHOSP プロバイダー仕様の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ゾーン名をこの値として設定します。
注記最初のクラスターデプロイメント後にマシンリソースを編集または再作成した場合は、これらの手順を設定に合わせて調整が必要になる場合があります。
RHOSP クラスターで、マシンのルートボリュームのアベイラビリティーゾーンを見つけて、それを値として使用します。
次のコマンドを実行して、コントロールプレーンマシンセットリソースに関する情報を取得します。
oc describe controlplanemachineset.machine.openshift.io/cluster --namespace openshift-machine-api
$ oc describe controlplanemachineset.machine.openshift.io/cluster --namespace openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行してリソースを編集します。
oc edit controlplanemachineset.machine.openshift.io/cluster --namespace openshift-machine-api
$ oc edit controlplanemachineset.machine.openshift.io/cluster --namespace openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
そのリソースについて、
spec.state
プロパティーの値をActive
に設定して、クラスターのコントロールプレーンマシンセットをアクティブにします。
コントロールプレーンは、Cluster Control Plane Machine Set Operator によって管理される準備が整いました。
12.6.4.2. アップグレード後のアベイラビリティーゾーンを備えたコントロールプレーンマシンを含む RHOSP クラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
アップグレードする Red Hat OpenStack Platform (RHOSP) 上で実行する一部のクラスターでは、次の設定に該当する場合、コントロールプレーンマシンセットを使用する前に、マシンリソースを手動で更新する必要があります。
- クラスターを OpenShift Container Platform 4.13 から 4.14 にアップグレードしました。
- クラスターインフラストラクチャーはインストーラーによってプロビジョニングされます。
- コントロールプレーンマシンは、複数のコンピュートアベイラビリティーゾーンに分散されました。
この手順が必要な理由を理解するには、Solution #7013893 を参照してください。
手順
master-1
およびmaster-2
コントロールプレーンマシンの場合は、プロバイダー仕様を開いて編集します。たとえば、最初のマシンを編集するには、次のコマンドを入力します。oc edit machine/<cluster_id>-master-1 -n openshift-machine-api
$ oc edit machine/<cluster_id>-master-1 -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<cluster_id>
- アップグレードされたクラスターの ID を指定します。
master-1
およびmaster-2
コントロールプレーンマシンの場合は、プロバイダー仕様のserverGroupName
プロパティーの値を編集して、マシンmaster-0
の値と一致させます。RHOSP プロバイダー仕様の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- この値は、マシン
master-0
、master-1
、およびmaster-3
と一致する必要があります。
注記最初のクラスターデプロイメント後にマシンリソースを編集または再作成した場合は、これらの手順を設定に合わせて調整が必要になる場合があります。
RHOSP クラスターで、コントロールプレーンインスタンスが含まれるサーバーグループを見つけて、それを値として使用します。
次のコマンドを実行して、コントロールプレーンマシンセットリソースに関する情報を取得します。
oc describe controlplanemachineset.machine.openshift.io/cluster --namespace openshift-machine-api
$ oc describe controlplanemachineset.machine.openshift.io/cluster --namespace openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行してリソースを編集します。
oc edit controlplanemachineset.machine.openshift.io/cluster --namespace openshift-machine-api
$ oc edit controlplanemachineset.machine.openshift.io/cluster --namespace openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
そのリソースについて、
spec.state
プロパティーの値をActive
に設定して、クラスターのコントロールプレーンマシンセットをアクティブにします。
コントロールプレーンは、Cluster Control Plane Machine Set Operator によって管理される準備が整いました。