9.2. ClusterInstance CR を使用してノードを削除する
ClusterInstance の カスタムリソース (CR) を使用すると、ノードを削除して再プロビジョニングできます。この方法は、手動でノードを削除するよりも効率的です。
前提条件
- 必要なインストールおよびポリシー CR を生成するようにハブクラスターを設定している。
- カスタムサイト設定データを管理できる Git リポジトリーを作成している。リポジトリーはハブクラスターからアクセス可能で、Argo CD アプリケーションのソースリポジトリーとして定義されている必要があります。
手順
ClusterInstanceCR を更新して、ノードのBareMetalHostリソースにbmac.agent-install.openshift.io/remove-agent-and-node-on-delete=trueアノテーションを追加し、変更内容を Git リポジトリーにプッシュします。apiVersion: siteconfig.open-cluster-management.io/v1alpha1 kind: ClusterInstance metadata: name: "example-cluster" namespace: "example-cluster" spec: # ... nodes: - hostName: "worker-node2.example.com" role: "worker" extraAnnotations: BareMetalHost: bmac.agent-install.openshift.io/remove-agent-and-node-on-delete: "true" # ...次のコマンドを実行して、
BareMetalHostオブジェクトにアノテーションが付けられていることを確認します。$ oc get bmh -n <cluster_namespace> <bmh_name> -ojsonpath='{.metadata}' | jq -r '.annotations["bmac.agent-install.openshift.io/remove-agent-and-node-on-delete"]'出力例
trueClusterInstanceCR のpruneManifestsフィールドを設定して、対象のBareMetalHostリソースを削除することにより、BareMetalHostCR を削除します。apiVersion: siteconfig.open-cluster-management.io/v1alpha1 kind: ClusterInstance metadata: name: "example-cluster" namespace: "example-cluster" spec: # ... nodes: - hostName: "worker-node2.example.com" role: "worker" pruneManifests: - apiVersion: metal3.io/v1alpha1 kind: BareMetalHost # ...-
変更を Git リポジトリーにプッシュし、プロビジョニング解除が開始するまで待ちます。
BareMetalHostCR のステータスがdeprovisioningに変更されるはずです。BareMetalHostのプロビジョニング解除が完了し、完全に削除されるまで待ちます。
検証
次のコマンドを実行して、ワーカーノードの
BareMetalHostおよびAgentCR がハブクラスターから削除されていることを確認します。$ oc get bmh -n <cluster_namespace>$ oc get agent -n <cluster_namespace>次のコマンドを実行して、スポーククラスターからノードレコードが削除されたことを確認します。
$ oc get nodes注記シークレットを操作している場合は、シークレットを削除するのが早すぎると、ArgoCD が削除後に再同期を完了するためにシークレットを必要とするため、問題が発生する可能性があります。現在の ArgoCD 同期が完了したら、ノードのクリーンアップ後にのみシークレットを削除します。
-
BareMetalHostオブジェクトが正常に削除されたら、ClusterInstanceCR のspec.nodesセクションからワーカーノードの定義を削除し、変更内容を Git リポジトリーにプッシュします。
次のステップ
ノードを再プロビジョニングするには、ノード定義を ClusterInstance CR の spec.nodes セクションに再度追加し、変更内容を Git リポジトリーにプッシュして、同期が完了するまで待ちます。これにより、ワーカーノードの BareMetalHost CR が再生成され、ノードの再インストールがトリガーされます。