Azure Elastic SAN (プレビュー) で Azure コンテナー ストレージを使用する
Azure Container Storage は、コンテナー用にネイティブに構築されたクラウドベースのボリューム管理、デプロイ、オーケストレーション サービスです。 Azure Elastic SAN は、SAN のデプロイ、スケーリング、管理、構成を簡略化する完全に統合されたソリューションであり、高可用性などの組み込みのクラウド機能も提供します。
プレビュー機能として、Azure コンテナー ストレージで Azure Elastic SAN を使用することを構成できます。 この記事では、その構成を行う方法について説明します。 この記事の最後で、Elastic SAN をストレージとして使用するポッドができます。
前提条件
Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。
この記事では、最新バージョン (2.35.0 以降) の Azure CLI が必要です。 「Azure CLI のインストール方法」を参照してください。 Azure Cloud Shell の Bash 環境を使用している場合は、最新バージョンが既にインストールされています。 Azure Cloud Shell ではなくローカルでコマンドを実行する場合は、必ず管理特権で実行してください。 詳細については、「Azure Cloud Shell の概要」を参照してください。
Kubernetes コマンド ライン クライアント
kubectl
が必要です。 Azure Cloud Shell を使用している場合は既にインストールされています。または、az aks install-cli
コマンドを実行してローカルにインストールできます。Azure Container Storage をまだインストールしていない場合は、Azure Kubernetes Service での Azure Container Storage の使用に関する記事の手順に従ってください。
ターゲット リージョンが Azure Container Storage リージョンでサポート対象になっているかどうかを確認します。
Azure Container Storage 所有者ロールまたは Azure Container Storage 共同作成者ロールのいずれかがあることを確認します。 これらのロールのいずれかが、Azure Container Storage と Elastic SAN リソースとの通信を許可するアクセス許可を付与します。 この変更を行うには、Azure portal のサブスクリプション ページに移動します。 [アクセス制御 (IAM) > ロール割り当ての追加] を選択 し、[ジョブ関数ロール] タブで「Azure Container Storage 所有者」 または「Azure Container Storage 共同作成者」を検索します。[割り当ての表示>] の >[割り当ての追加] を選択 し、アカウントを追加します。
Azure Elastic SAN (プレビュー) を含む Azure コンテナー ストレージを使うには、AKS クラスターに、それぞれが 4 つ以上の仮想 CPU (vCPU) を備えたクラスター ノード用の汎用 VM (standard_d4s_v5 など) を少なくとも 3 つ含むノード プールが必要です。
制限事項
Azure Container Storage を使用して Elastic SAN をデプロイおよび調整する場合、次の機能は現在サポートされていません。
- ボリューム スナップショット
- ストレージ プールの拡張
リージョン別の提供状況
Azure Container Storage は、次の Azure リージョンのサブセットでのみ使用できます。
- (アフリカ) 南アフリカ北部
- (アジア太平洋) オーストラリア東部
- (アジア太平洋) 東アジア
- (アジア太平洋) 東日本
- (アジア太平洋) 韓国中部
- (アジア太平洋) 東南アジア
- (アジア太平洋) インド中部
- (ヨーロッパ) フランス中部
- (ヨーロッパ) ドイツ中西部
- (ヨーロッパ) 北ヨーロッパ
- (ヨーロッパ) 西ヨーロッパ
- (ヨーロッパ) 英国南部
- (ヨーロッパ) スウェーデン中部
- (ヨーロッパ) スイス北部
- (中東) アラブ首長国連邦北部
- (北米) 米国東部
- (北米)米国東部 2
- (北米) 米国西部
- (北米)米国西部 2
- (北米) 米国西部 3
- (北米) 米国中部
- (北米) 米国中北部
- (北米) 米国中南部
- (北米) 米国中西部
- (北米) カナダ中部
- (北米) カナダ東部
- (南アメリカ) ブラジル南部
永続ボリュームを作成してアタッチする
次の手順に従って永続ボリュームを作成してアタッチします。
1.ストレージ プールを作成する
まず、YAML マニフェスト ファイルで定義することによって、Kubernetes クラスターのストレージの論理グループであるストレージ プールを作成します。
az aks create
または az aks update
コマンドを使って Azure Container Storage を有効にした場合は、記憶域プールが既に存在している可能性があります。 kubectl get sp -n acstor
を使って記憶域プールの一覧を取得します。 使いたい記憶域プールが既に使用可能な場合は、このセクションをスキップして、「使用可能なストレージ クラスを表示する」に進むことができます。
Azure Elastic SAN (プレビュー) を使ってストレージ プールを作成するには、次の手順に従います。
任意のテキスト エディターを使用して、
code acstor-storagepool.yaml
などの YAML マニフェスト ファイルを作成します。次のコードを貼り付けます。 ストレージ プールの name の値は何でもかまいません。 Gi または Ti で必要なストレージ容量を反映するようストレージを調整し、ファイルを保存します。 Azure Elastic SAN では現在、ストレージ プールのサイズ変更はサポートされていません。
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: managed namespace: acstor spec: poolType: elasticSan: {} resources: requests: {"storage": 1Ti}
YAML マニフェスト ファイルを適用してストレージ プールを作成します。
kubectl apply -f acstor-storagepool.yaml
ストレージ プールの作成が完了すると、次のようなメッセージが表示されます。
storagepool.containerstorage.azure.com/managed created
このコマンドを実行して、ストレージ プールの状態を確認することもできます。
<storage-pool-name>
はストレージ プールの name の値に置き換えます。 この例では、値は managed.になります。kubectl describe sp <storage-pool-name> -n acstor
ストレージ プールが作成されると、Azure Container Storage により、名前付け規則 acstor-<storage-pool-name>
を使用してストレージ クラスが自動的に作成されます。 また、Azure Elastic SAN リソースも作成されます。
2.使用可能なストレージ クラスを表示する
ストレージ プールを使用する準備ができたら、ストレージ クラスを選択して、永続ボリューム要求の作成時と永続ボリュームのデプロイ時にストレージが動的に作成される方式を定義する必要があります。
kubectl get sc
を実行して、使用可能なストレージ クラスを表示します。 acstor-<storage-pool-name>
というストレージ クラスがあることを確認します。
重要
internal が付いているストレージ クラスは使用しないでください。 これは、Azure Container Storage の動作に必要な内部ストレージ クラスです。
3.永続ボリューム要求の作成
永続ボリューム要求 (PVC) を使用して、ストレージ クラスに基づいてストレージを自動的にプロビジョニングします。 新しいストレージ クラスを使用して PVC を作成するには、次の手順に従います。
任意のテキスト エディターを使用して、
code acstor-pvc.yaml
などの YAML マニフェスト ファイルを作成します。次のコードを貼り付けて、ファイルを保存します。 PVC
name
の値はどのような値にもすることができます。apiVersion: v1 kind: PersistentVolumeClaim metadata: name: managedpvc spec: accessModes: - ReadWriteOnce storageClassName: acstor-managed # replace with the name of your storage class if different resources: requests: storage: 100Gi
YAML マニフェスト ファイルを適用して PVC を作成します。
kubectl apply -f acstor-pvc.yaml
次のような出力が表示されます。
persistentvolumeclaim/managedpvc created
次のコマンドを実行して、PVC の状態を確認できます。
kubectl describe pvc managedpvc
PVC が作成されると、ポッドで使用できるようになります。
4.ポッドをデプロイして永続ボリュームをアタッチする
Fio (フレキシブル I/O テスター) を使用してベンチマークおよびワークロード シミュレーション用にポッドを作成し、永続ボリュームのマウント パスを指定します。 claimName には、永続ボリューム要求の作成時に使用した name の値を使用します。
任意のテキスト エディターを使用して、
code acstor-pod.yaml
などの YAML マニフェスト ファイルを作成します。次のコードを貼り付けて、ファイルを保存します。
kind: Pod apiVersion: v1 metadata: name: fiopod spec: nodeSelector: acstor.azure.com/io-engine: acstor volumes: - name: managedpv persistentVolumeClaim: claimName: managedpvc containers: - name: fio image: nixery.dev/shell/fio args: - sleep - "1000000" volumeMounts: - mountPath: "/volume" name: managedpv
YAML マニフェスト ファイルを適用してポッドをデプロイします。
kubectl apply -f acstor-pod.yaml
次のような出力が表示されます。
pod/fiopod created
ポッドが実行されていること、および永続ボリューム要求がポッドに正常にバインドされていることを確認します。
kubectl describe pod fiopod kubectl describe pvc managedpvc
fio テストをチェックして、その現在の状態を確認します。
kubectl exec -it fiopod -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
Elastic SAN をストレージとして使用するポッドをデプロイし、Kubernetes ワークロードに使用できるようになりました。
永続ボリュームとストレージ プールを管理する
永続ボリュームを作成したので、必要に応じてデタッチして再アタッチできます。 ストレージ プールを削除することもできます。
永続ボリュームをデタッチして再アタッチする
永続ボリュームをデタッチするには、永続ボリュームがアタッチされているポッドを削除します。 <pod-name>
はポッドの名前 (fiopod など) に置き換えます。
kubectl delete pods <pod-name>
永続ボリュームを再アタッチするには、「ポッドをデプロイして永続ボリュームをアタッチする」の説明に従って、YAML マニフェスト ファイル内の永続ボリューム要求名を参照するだけです。
永続ボリューム要求がバインドされている永続ボリュームを確認するには、kubectl get pvc <persistent-volume-claim-name>
を実行します。
ストレージ プールを削除する
ストレージ プールを削除する場合は、次のコマンドを実行します。 <storage-pool-name>
はストレージ プール名に置き換えます。
kubectl delete sp -n acstor <storage-pool-name>