Azure Container Storage の削除

この記事では、Azure Kubernetes Service (AKS) クラスターから Azure Container Storage コンポーネントを削除する方法について説明します。 リソースをクリーンアップするには、AKS クラスターまたはリソース グループ全体を削除することもできます。

Important

この記事は Azure コンテナー ストレージ(バージョン 2.x.x) に該当します。 AKS クラスターに Azure Container Storage (バージョン 1.x.x) がインストールされている場合は、 次の手順に従って削除します。

クラウド ストレージ用の分散アクセラレータを削除してください

クラウドストレージ用の分散アクセラレータを削除する前に:

  1. キャッシュディスカバリーサービスを利用するワークロードを停止または再設定してください。
  2. Azure Blob Storageに正規のモデルファイルやデータセットが存在することを確認してください。
  3. アクティブなウォームアップ作業を停止するか、アクティブなウォームアップ作業が完了するまで待機します。
  4. 障害が原因でクラウド ストレージ用の分散アクセラレータを削除する場合は、診断記録を取ってください。

コントローラーがまだ動作している間に各キャッシュリソースを削除し、キャッシュサーバーリソースをクリーンアップできるようにします。 値を削除したいキャッシュのものに置き換え、コントローラーを外す前に各キャッシュリソースごとに同じことを繰り返します:

CACHE_NAMESPACE=<cache-namespace>
CACHE_NAME=<cache-name>

kubectl delete cache "$CACHE_NAME" --namespace "$CACHE_NAMESPACE" --wait=true
kubectl get cache --namespace "$CACHE_NAMESPACE"
kubectl get pods --namespace "$CACHE_NAMESPACE" --selector app=cacheserver

管理拡張を無効にする前に、すべてのキャッシュリソースとキャッシュサーバーポッドが削除されていることを確認してください。 拡張機能のHelmリリースを直接アンインストールしないでください。

管理対象の拡張機能を無効にする

この拡張機能はNVMeの前提条件であるDaemonSetを管理します。 そのDaemonSetは個別に削除しないでください。DACSを無効にすると、それは削除されます。

クラウドストレージ用の分散アクセラレータのみを無効にし、Azureコンテナストレージの永続ボリュームストレージタイプはそのままにしてください:

az aks update \
    --name <cluster-name> \
    --resource-group <resource-group> \
    --disable-azure-container-storage distributedAccelerator

DACSを無効にすると、kube-system 内のマネージド拡張機能、コントローラー、および拡張機能によって管理される NVMe 前提条件 DaemonSet は削除されますが、Cache CRD は保持されます。

削除の確認

このクリーンアップにより、一時的なキャッシュコピーやDACSコンポーネントが削除されます。 Azure Blob Storage内のソースモデルファイルやデータセットは削除しません。

Cache リソースや cache-server Pod が残っていないこと、およびコントローラと管理対象の前提条件 DaemonSet が削除されていることを確認しましょう:

kubectl get cache -A
kubectl get pods -A --selector app=cacheserver
kubectl get deployment dacs-manager --namespace kube-system --ignore-not-found
kubectl get daemonset dacs-prereq --namespace kube-system --ignore-not-found

distributedacceleratorという名前の拡張機能が残っていないか確認してください:

az k8s-extension list \
    --cluster-type managedClusters \
    --cluster-name <cluster-name> \
    --resource-group <resource-group> \
    --query "[?name=='distributedaccelerator'].{name:name,state:provisioningState}" \
    --output table

Warning

Azureサポートから指示がない限り、DACSのカスタムリソース定義(CRD)を手動で削除しないでください。 CRDを削除するとクラスタ内のすべてのキャッシュリソースが削除されます。

削除後、他のワークロードで使用されていない DACS 専用のノード ラベル、ID、ロール割り当て、シークレット、および監視ルールを削除してください。 共有アイデンティティやBlobの役割割り当てを他の用途を確認しずに削除しないでください。

キャッシュ名前空間は、DACS専用で、保持する必要があるリソースが含まれていない場合のみ削除してください。

Azure Container Storage のインストール全体 (インストーラーと CSI ドライバー) を削除する

拡張機能をアンインストールする前に、永続ボリューム要求 (PVC) と永続ボリューム (PV) をすべて削除します。 これらのリソースをクリーンアップせずに Azure Container Storage を削除すると、実行中のワークロードが中断される可能性があります。 続行する前に、ワークロードまたは StorageClass オブジェクトが Azure Container Storage に依存しないようにします。

次の Azure CLI コマンドを実行して、Azure Container Storage を完全に削除します。 <cluster-name> と <resource-group> を独自の値に置き換えます。

az aks update -n <cluster-name> -g <resource-group> --disable-azure-container-storage

Terraform を使用して拡張機能を削除する

Terraform で Azure Container Storage をプロビジョニングした場合は、構成から対応する拡張機能リソースを削除し、結果が CLI ワークフローと一致するように変更を適用します。

  1. Terraform 構成で azurerm_kubernetes_cluster_extension ブロック (または count = 0 を設定) を削除し、ファイルを保存します。

  2. 計画を確認して、Terraform が拡張機能リソースのみを破棄することを確認します。

    terraform plan
    
  3. プランを適用して拡張機能を削除します。 Terraform には CLI コマンドと同じ結果が表示されます。拡張機能リソースは削除され、AKS は Azure Container Storage を有効として報告しなくなりました。

    terraform apply
    

Azure Container Storage を再度有効にする

以前に 1 つ以上のストレージの種類の CSI ドライバーを削除した場合は、次の Azure CLI コマンドを実行してストレージの種類を再度有効にすることができます。

az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage <storage-type>

想定される動作:

  • ストレージの種類の指定は省略可能です。 ストレージの種類が指定されていない場合は、Azure Container Storage インストーラー コンポーネントのみがインストールされます (まだ存在しない場合)。
  • ストレージの種類を指定すると、対応する CSI ドライバーがインストールされます。 そのストレージの種類の StorageClass が既に存在する場合は、ドライバーのみがインストールされます。それ以外の場合は、既定の StorageClass がインストールの一部として作成されます。

AKS クラスターを削除する

AKS クラスターとすべての永続ボリュームを削除するには、次の Azure CLI コマンドを実行します。 <resource-group> と <cluster-name> を独自の値に置き換えます。

az aks delete --resource-group <resource-group> --name <cluster-name>

AKSは通常、クラスタを削除する際にAKS が管理するノード リソース グループを削除します。 もしそのグループの不在を別途確認した際に Forbidden が返された場合、検証が不完全であることを記録します。つまり、そのエラーは存在も不在も証明しません。 必要に応じて、そのノードリソースグループの読み取り権限を持つ管理者に、削除されたことを確認させてください。 クラスタのリソースグループの空のインベントリは、別個のノードリソースグループが存在しないことを確認するものではありません。

AKS クラスターが Terraform で作成された場合は、次のコマンドを実行して削除することもできます。

terraform destroy

このコマンドは、現在の作業ディレクトリで Terraform が管理するすべてのリソースを削除します。 これには、クラスター、リソース グループ、Azure Container Storage 拡張機能が含まれます。 このコマンドは、デプロイ全体を削除する場合にのみ実行します。

リソース グループを削除します

az group delete コマンドを使用して、リソース グループとそのグループに含まれるすべてのリソースを削除することもできます。 <resource-group> はご自分のリソース グループ名に置き換えます。

az group delete --name <resource-group>

こちらも参照ください