12.7. コントロールプレーンマシンセットのトラブルシューティング
このセクションの情報を使用して、発生する可能性のある問題を理解し、回復してください。
12.7.1. コントロールプレーンマシンセットのカスタムリソースの状態を確認する
ControlPlaneMachineSet
カスタムリソース (CR) の存在と状態を確認できます。
手順
次のコマンドを実行して、CR の状態を確認します。
$ oc get controlplanemachineset.machine.openshift.io cluster \ --namespace openshift-machine-api
-
Active
の結果は、ControlPlaneMachineSet
CR が存在し、アクティブ化されていることを示します。管理者の操作は必要ありません。 -
Inactive
の結果は、ControlPlaneMachineSet
CR が存在するがアクティブ化されていないことを示します。 -
NotFound
の結果は、既存のControlPlaneMachineSet
CR がないことを示します。
-
次のステップ
コントロールプレーンマシンセットを使用するには、クラスターの正しい設定を持つ ControlPlaneMachineSet
CR が存在することを確認する必要があります。
- クラスターに既存の CR がある場合は、CR の設定がクラスターに対して正しいことを確認する必要があります。
- クラスターに既存の CR がない場合は、クラスターの正しい設定で CR を作成する必要があります。
12.7.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
コントロールプレーンマシンごとに、次のコマンドを実行して CR を編集します。
$ oc edit machine <control_plane_machine_name>
-
クラスターの正しい詳細を含む
internalLoadBalancer
パラメーターを追加し、変更を保存します。 次のコマンドを実行して、コントロールプレーンマシンセットの CR を編集します。
$ oc edit controlplanemachineset.machine.openshift.io cluster \ -n openshift-machine-api
-
クラスターの正しい詳細を含む
internalLoadBalancer
パラメーターを追加し、変更を保存します。
次のステップ
-
デフォルトの
RollingUpdate
更新戦略を使用するクラスターの場合、Operator は自動的に変更をコントロールプレーン設定に伝達します。 -
OnDelete
更新戦略を使用するように設定されているクラスターの場合、コントロールプレーンマシンを手動で置き換える必要があります。
12.7.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
次のいずれかの状態は、コントロールプレーンマシンの障害を示している可能性があります。
-
STATE
値はstopped
です。 -
PHASE
値はFailed
です。 -
PHASE
値が 10 分以上Deleting
です。
重要続行する前に、クラスターに 2 つの正常なコントロールプレーンマシンがあることを確認します。この手順のアクションを複数のコントロールプレーンマシンで実行すると、etcd クォーラムが失われるリスクがあり、データが失われる可能性があります。
大多数のコントロールプレーンホストが失われ、etcd のクォーラム (定足数) の損失が発生した場合は、この手順ではなく、「直前のクラスター状態への復元に向けた障害復旧」手順を実行する必要があります。
-
次のコマンドを実行して、障害が発生したコントロールプレーンマシンのマシン CR を編集します。
$ oc edit machine <control_plane_machine_name>
障害が発生したコントロールプレーンマシンから
lifecycleHooks
パラメーターの内容を削除し、変更を保存します。etcd Operator は、障害が発生したマシンをクラスターから削除し、新しい etcd メンバーを安全に追加できるようにします。
関連情報
12.7.4. RHOSP 上で実行されるクラスターのアップグレード
OpenShift Container Platform 4.13 以前で作成された Red Hat OpenStack Platform (RHOSP) 上で実行されるクラスターの場合は、コントロールプレーンマシンセットを使用する前にアップグレード後のタスクを実行する必要がある場合があります。
12.7.4.1. アップグレード後のルートボリュームアベイラビリティーゾーンを持つマシンを含む RHOSP クラスターの設定
アップグレードする Red Hat OpenStack Platform (RHOSP) 上で実行する一部のクラスターでは、次の設定に該当する場合、コントロールプレーンマシンセットを使用する前に、マシンリソースを手動で更新する必要があります。
- アップグレードされたクラスターは、OpenShift Container Platform 4.13 以前で作成されました。
- クラスターインフラストラクチャーはインストーラーによってプロビジョニングされます。
- マシンは複数のアベイラビリティーゾーンに分散されました。
- マシンは、ブロックストレージのアベイラビリティーゾーンが定義されていないルートボリュームを使用するように設定されていました。
この手順が必要な理由を理解するには、Solution #7024383 を参照してください。
手順
すべてのコントロールプレーンマシンについて、環境に一致するすべてのコントロールプレーンマシンのプロバイダー仕様を編集します。たとえば、マシン
master-0
を編集するには、次のコマンドを入力します。$ oc edit machine/<cluster_id>-master-0 -n openshift-machine-api
ここでは、以下のようになります。
<cluster_id>
- アップグレードされたクラスターの ID を指定します。
プロバイダー仕様で、プロパティー
rootVolume.availabilityZone
の値を、使用するアベイラビリティーゾーンのボリュームに設定します。RHOSP プロバイダー仕様の例
providerSpec: value: apiVersion: machine.openshift.io/v1alpha1 availabilityZone: az0 cloudName: openstack cloudsSecret: name: openstack-cloud-credentials namespace: openshift-machine-api flavor: m1.xlarge image: rhcos-4.14 kind: OpenstackProviderSpec metadata: creationTimestamp: null networks: - filter: {} subnets: - filter: name: refarch-lv7q9-nodes tags: openshiftClusterID=refarch-lv7q9 rootVolume: availabilityZone: nova 1 diskSize: 30 sourceUUID: rhcos-4.12 volumeType: fast-0 securityGroups: - filter: {} name: refarch-lv7q9-master serverGroupName: refarch-lv7q9-master serverMetadata: Name: refarch-lv7q9-master openshiftClusterID: refarch-lv7q9 tags: - openshiftClusterID=refarch-lv7q9 trunk: true userDataSecret: name: master-user-data
- 1
- ゾーン名をこの値として設定します。
注記最初のクラスターデプロイメント後にマシンリソースを編集または再作成した場合は、これらの手順を設定に合わせて調整が必要になる場合があります。
RHOSP クラスターで、マシンのルートボリュームのアベイラビリティーゾーンを見つけて、それを値として使用します。
次のコマンドを実行して、コントロールプレーンマシンセットリソースに関する情報を取得します。
$ oc describe controlplanemachineset.machine.openshift.io/cluster --namespace openshift-machine-api
以下のコマンドを実行してリソースを編集します。
$ oc edit controlplanemachineset.machine.openshift.io/cluster --namespace openshift-machine-api
-
そのリソースについて、
spec.state
プロパティーの値をActive
に設定して、クラスターのコントロールプレーンマシンセットをアクティブにします。
コントロールプレーンは、Cluster Control Plane Machine Set Operator によって管理される準備が整いました。
12.7.4.2. アップグレード後のアベイラビリティーゾーンを備えたコントロールプレーンマシンを含む RHOSP クラスターの設定
アップグレードする Red Hat OpenStack Platform (RHOSP) 上で実行する一部のクラスターでは、次の設定に該当する場合、コントロールプレーンマシンセットを使用する前に、マシンリソースを手動で更新する必要があります。
- アップグレードされたクラスターは、OpenShift Container Platform 4.13 以前で作成されました。
- クラスターインフラストラクチャーはインストーラーによってプロビジョニングされます。
- コントロールプレーンマシンは、複数のコンピュートアベイラビリティーゾーンに分散されました。
この手順が必要な理由を理解するには、Solution #7013893 を参照してください。
手順
master-1
およびmaster-2
コントロールプレーンマシンの場合は、プロバイダー仕様を開いて編集します。たとえば、最初のマシンを編集するには、次のコマンドを入力します。$ oc edit machine/<cluster_id>-master-1 -n openshift-machine-api
ここでは、以下のようになります。
<cluster_id>
- アップグレードされたクラスターの ID を指定します。
master-1
およびmaster-2
コントロールプレーンマシンの場合は、プロバイダー仕様のserverGroupName
プロパティーの値を編集して、マシンmaster-0
の値と一致させます。RHOSP プロバイダー仕様の例
providerSpec: value: apiVersion: machine.openshift.io/v1alpha1 availabilityZone: az0 cloudName: openstack cloudsSecret: name: openstack-cloud-credentials namespace: openshift-machine-api flavor: m1.xlarge image: rhcos-4.16 kind: OpenstackProviderSpec metadata: creationTimestamp: null networks: - filter: {} subnets: - filter: name: refarch-lv7q9-nodes tags: openshiftClusterID=refarch-lv7q9 securityGroups: - filter: {} name: refarch-lv7q9-master serverGroupName: refarch-lv7q9-master-az0 1 serverMetadata: Name: refarch-lv7q9-master openshiftClusterID: refarch-lv7q9 tags: - openshiftClusterID=refarch-lv7q9 trunk: true userDataSecret: name: master-user-data
- 1
- この値は、マシン
master-0
、master-1
、およびmaster-3
と一致する必要があります。
注記最初のクラスターデプロイメント後にマシンリソースを編集または再作成した場合は、これらの手順を設定に合わせて調整が必要になる場合があります。
RHOSP クラスターで、コントロールプレーンインスタンスが含まれるサーバーグループを見つけて、それを値として使用します。
次のコマンドを実行して、コントロールプレーンマシンセットリソースに関する情報を取得します。
$ oc describe controlplanemachineset.machine.openshift.io/cluster --namespace openshift-machine-api
以下のコマンドを実行してリソースを編集します。
$ oc edit controlplanemachineset.machine.openshift.io/cluster --namespace openshift-machine-api
-
そのリソースについて、
spec.state
プロパティーの値をActive
に設定して、クラスターのコントロールプレーンマシンセットをアクティブにします。
コントロールプレーンは、Cluster Control Plane Machine Set Operator によって管理される準備が整いました。