11.5. Cluster API を使用するクラスターのトラブルシューティング


重要

Cluster API を使用したマシン管理は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

このセクションの情報を使用して、発生する可能性のある問題を理解し、回復してください。通常、Cluster API に関する問題のトラブルシューティング手順は、Machine API に関する問題の手順と似ています。

Cluster CAPI Operator とそのオペランドは、openshift-cluster-api namespace でプロビジョニングされますが、Machine API は openshift-machine-api namespace を使用します。namespace を参照する oc コマンドを使用する場合は、必ず正しい namespace を参照してください。

11.5.1. CLI 使用時に目的のオブジェクトを参照する

Cluster API を使用するクラスターの場合、OpenShift CLI (oc) コマンドで、Machine API オブジェクトよりも Cluster API オブジェクトが優先されます。

この動作は、Cluster API と Machine API の両方で表されるオブジェクトに対して動作する oc コマンドに影響します。この解説では、マシンを削除する oc delete machine コマンドを例として使用します。

原因

oc コマンドを実行すると、oc は Kube API サーバーと通信して、どのオブジェクトに対して操作を行うかを決定します。Kube API サーバーは、oc コマンドが実行されると、アルファベット順で最初に検出されたインストール済みのカスタムリソース定義 (CRD) を使用します。

Cluster API オブジェクトの CRD は cluster.x-k8s.io グループにあり、Machine API オブジェクトの CRD は machine.openshift.io グループにあります。アルファベット順で文字 c は文字 m の前に来るため、Kube API サーバーは Cluster API オブジェクトの CRD とマッチします。そのため、oc コマンドは Cluster API オブジェクトに対して動作します。

結果

このような動作により、Cluster API を使用するクラスターで次の予期しない結果が発生する可能性があります。

  • 両方のタイプのオブジェクトを含む namespace の場合、oc get machine などのコマンドが Cluster API オブジェクトのみを返します。
  • Machine API オブジェクトのみを含む namespace の場合、oc get machine などのコマンドが結果を返しません。
回避策
それぞれの完全修飾名を使用することで、意図したタイプのオブジェクトに対して oc コマンドを動作させることができます。

前提条件

  • cluster-admin 権限を持つアカウントを使用してクラスターにアクセスできる。
  • OpenShift CLI (oc) がインストールされている。

手順

  • Machine API マシンを削除するには、oc delete machine コマンドを実行するときに、完全修飾名 machine.machine.openshift.io を使用します。

    $ oc delete machine.machine.openshift.io <machine_name>
    Copy to Clipboard Toggle word wrap
  • Cluster API マシンを削除するには、oc delete machine コマンドを実行するときに、完全修飾名 machine.cluster.x-k8s.io を使用します。

    $ oc delete machine.cluster.x-k8s.io <machine_name>
    Copy to Clipboard Toggle word wrap

11.5.2. 重複したマシンセットとマシンリソース

Machine API リソースの Cluster API リソースへの移行をサポートするクラスターでは、リソースをリスト表示する OpenShift CLI (oc) コマンドの出力と OpenShift Container Platform Web コンソールで、一部のリソースのインスタンスが重複しているように見えます。

原因

デフォルトの設定オプションを使用する OpenShift Container Platform クラスターをインストールすると、インストールプログラムは openshift-machine-api namespace に以下のインフラストラクチャーリソースをプロビジョニングします。

  • 3 つのコントロールプレーンマシンを管理する 1 つのコントロールプレーンマシンセット。
  • 3 台のコンピュートマシンを管理する 1 つ以上のコンピュートマシンセット。
  • スポットインスタンスを管理する 1 つのマシンヘルスチェック。
  • コンピュートマシンセットの仕様に従って作成されたコンピュートマシン。

Machine API リソースから Cluster API リソースへの移行をサポートするクラスターでは、双方向同期コントローラーが openshift-cluster-api namespace に次の Cluster API リソースを作成します。

  • 1 つのクラスターリソース。
  • 1 つのプロバイダー固有のインフラストラクチャークラスターリソース。
  • コンピュートマシンセットに対応する 1 つ以上のマシンテンプレート。
  • 3 台のコンピュートマシンを管理する 1 つ以上のコンピュートマシンセット。
  • マシンテンプレートとコンピュートマシンセットの仕様に従って作成されたコンピュートマシン。
  • コンピュートマシンに対応するインフラストラクチャーマシン。

これらの Cluster API リソースの名前は、openshift-machine-api namespace 内の対応するリソースの名前と同じです。

結果
この動作により、リソースをリスト表示する oc コマンドの出力と OpenShift Container Platform Web コンソールに、重複していると思われるマシンセットおよびマシンリソースのインスタンスが表示されます。
回避策
リソースの名前が他の namespace 内の対応するリソースと同じであっても、現在の authoritative API を使用するリソースだけがアクティブです。同期コントローラーは、意図しないリコンシリエーションを防ぐために、現在の authoritative API を使用しない対応するリソースをプロビジョニングされていない (Paused) 状態で作成および維持します。
結果

重複していると思われる各リソースのうち、一度にアクティブになるのは 1 つだけです。非アクティブな nonauthoritative リソースは機能に影響を与えません。

重要

現在の authoritative API を使用する対応するリソースを削除する場合を除き、現在の authoritative API を使用しない nonauthoritative リソースは削除しないでください。

現在の authoritative API を使用していない nonauthoritative リソースを削除すると、同期コントローラーは、現在の authoritative API を使用する対応するリソースを削除します。詳細は、「予期しないリソース削除動作」を参照してください。

11.5.3. リソース移行のトラブルシューティング

別の authoritative API を使用するようにリソースを移行すると、移行プロセス中に問題が発生する可能性があります。また、Cluster API と Machine API の違いにより、予期しない動作が発生する場合もあります。

11.5.3.1. コンピュートマシンの権威ある API タイプ

コンピュートマシンの authoritative API は、それを作成する Machine API コンピュートマシンセット内の .spec.authoritativeAPI フィールドと .spec.template.spec.authoritativeAPI フィールドの値によって異なります。

Expand
表11.3 コンピュートマシンを作成する際の authoritativeAPI フィールド間の相互作用

.spec.authoritativeAPI

ClusterAPI

ClusterAPI

MachineAPI

MachineAPI

.spec.template.spec.authoritativeAPI

ClusterAPI

MachineAPI

MachineAPI

ClusterAPI

新しいコンピュートマシンの authoritativeAPI

ClusterAPI

ClusterAPI

MachineAPI

ClusterAPI

注記

.spec.authoritativeAPI 値が ClusterAPI の場合、Machine API マシンセットは authoritative ではないため、.spec.template.spec.authoritativeAPI 値は使用されません。その結果、Machine API を authoritative として持つコンピュートマシンを作成する唯一の組み合わせは、.spec.authoritativeAPI.spec.template.spec.authoritativeAPI の値が MachineAPI である場合です。

11.5.3.2. スケーリング後の予期しないマシン数

Machine API と Cluster API 間のリソースの移行をサポートするクラスターでは、コンピュートマシンの数をスケーリングする際に予期しない動作が発生する可能性があります。authoritative API を使用しないコンピュートマシンセットの oc get コマンドの出力には、CURRENTREADY、および AVAILABLE 列に不正確な値が含まれる場合があります。

原因

CURRENTREADY、および AVAILABLE 列に設定される値は、コンピュートマシンセットの .status スタンザから取得されます。authoritative API タイプ間のリソース変換を処理する双方向同期コントローラーは、現在、.status スタンザ内の値を同期しません。

DESIRED 列の値は、コンピュートマシンセットの .spec.replicas 値を反映します。双方向同期コントローラーは、.spec スタンザ内の値を同期します。

結果

移行されたマシンセットをスケーリングするときに、ユーザーは次の動作を確認することができます。

  1. 既存のマシンが存在するコンピュートマシンセットから始めます。
  2. 別の authoritative API を使用するようにマシンセットを移行します。
  3. .spec.replicas フィールドに大きい値を設定して、現在の authoritative マシンのセットアップをスケーリングします。
  4. マシンセットは、要求されたレプリカの数を満たすために、現在の authoritative API を使用してマシンを作成します。
  5. authoritative マシンセットをスケールダウンし、次のいずれかの条件により、現在の authoritative API を使用していないマシンが削除されるようにします。

    • 要求されたレプリカの合計数は、現在の authoritative API を使用していないマシンの数よりも少ないです。
    • マシンセットのマシン削除ポリシーでは、現在の authoritative API を使用していないマシンが選択されます。
  6. oc get コマンドを実行して、nonauthoritative コンピュートマシンセットのステータスを確認します。

    • 出力の DESIRED 列の値は、.spec.replicas 値を反映します。
    • CURRENTREADY、および AVAILABLE 列の値は、マシンセットをスケーリングする前に存在していたレプリカの元の数を反映します。
回避策
スケールダウン操作によって、現在の authoritative API を使用していないコンピュートマシンが正常に削除されたことを確認するには、nonauthoritative コンピュートマシンをリスト表示する oc get コマンドを実行します。
結果
スケールダウン操作が成功した場合、nonauthoritative コンピュートマシンの oc get コマンドの出力のカウントは、マシンセットの .spec.replicas 値を反映します。

11.5.3.3. ラベルとアノテーションの不完全な同期

ラベルとアノテーションの同期動作は、Machine API と Cluster API で異なります。場合によっては、これらの違いにより、双方向同期コントローラーが、移行中に Cluster API マシン上のラベルを上書きすることがあります。

原因

Machine API では、マシンセットのラベルとアノテーションへの変更は既存のマシンとノードに伝播されません。これらの変更は、更新後にデプロイされたマシンにのみ適用されます。

Cluster API を使用すると、マシンセットのラベルとアノテーションへの変更が既存のマシンとノードに伝播されます。マシンセットの authoritative API が Machine API から Cluster API に変更されると、そのラベルは管理する Cluster API マシンに伝播されます。伝播は、Cluster API マシンが authoritative とマークされる前に行われます。

結果
双方向同期コントローラーは、伝播されたラベルとアノテーションを以前の値で上書きするため、不整合が発生します。この結果は、ラベルまたはアノテーションを削除する場合にのみ発生します。更新および追加のラベルやアノテーションによってこの不整合が発生することはありません。
回避策
この問題に対する回避策はありません。詳細は、OCPBUGS-54333 を参照してください。

11.5.3.4. サポートされていない設定オプション

Machine API は Cluster API のすべての設定オプションをサポートしていません。一部の Machine API 設定は、Cluster API に移行できません。追加の設定オプションは、今後のリリースでサポートされる可能性があります。

次の設定を使用しようとすると、移行が失敗したり、エラーが発生したりする可能性があります。

注記

このリストは、すべてを網羅しているわけではありません。

一般的な制限事項

  • NodeDeletionTimeout フィールドが Cluster API のデフォルト値 10s を使用していない限り、Machine API コンピュートマシンは Cluster API に移行できません。
  • OpenShift Container Platform は、マシンセットの spec.template.spec スタンザまたはマシンの spec スタンザで、次の Cluster API フィールドの使用をサポートしていません。

    • version
    • readinessGates
  • Machine API は、次の Cluster API drain 設定オプションの使用をサポートしていません。

    • nodeDrainTimeout
    • nodeVolumeDetachTimeout
    • nodeDeletionTimeout
  • Cluster API は、マシンからノードへのラベルまたは taint の伝播をサポートしていません。

Amazon Web Services (AWS) の制限

  • Machine API コンピュートマシンは AWS ロードバランサーを使用できません。
  • Machine API は、次の Amazon EC2 Instance Metadata Service (IMDS) 設定オプションの使用をサポートしていません。

    • httpEndpoint
    • httpPutResponseHopLimit
    • instanceMetadataTags

    IMDS 設定オプションを使用する Cluster API マシンテンプレートを Machine API コンピュートマシンセットに移行する場合は、次の動作が予想されます。

    • 移行された Machine API マシンセットによって作成されるマシンには、これらのフィールドは含まれません。基盤となるインスタンスは、これらの設定を使用しません。
    • 移行されたマシンセットが管理する既存のマシンでは、これらのフィールドが保持されます。基盤となるインスタンスは、引き続きこれらの設定を使用します。
  • OpenShift Container Platform では、次の AWS マシンテンプレートフィールドの使用はサポートされていません。

    • spec.ami.eksLookupType
    • spec.cloudInit
    • spec.ignition.proxy
    • spec.ignition.tls
    • spec.imageLookupBaseOS
    • spec.imageLookupFormat
    • spec.imageLookupOrg
    • spec.networkInterfaces
    • spec.privateDNSName
    • spec.securityGroupOverrides
    • spec.uncompressedUserData
  • Cluster API は、基盤となる AWS EC2 インスタンスが削除された場合、ルート以外の EBS ボリュームの孤立化をサポートしません。インスタンスが終了すると、Cluster API はすべての依存ボリュームを削除します。
  • Machine API リソースを Cluster API に移行する場合、Ignition バージョンはハードコードされており、渡されるユーザーデータシークレットと一致しない可能性があります。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat