13.6. 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 を参照してください。
13.6.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>
Cluster API マシンを削除するには、
oc delete machine
コマンドを実行するときに、完全修飾名machine.cluster.x-k8s.io
を使用します。$ oc delete machine.cluster.x-k8s.io <machine_name>