Azure Arc で有効になっている AKS で永続ボリュームを使用する

適用対象: AKS on Azure Stack HCI 22H2、AKS on Windows Server

この記事では、Azure Arc (AKS Arc) によって有効になっている AKS の Kubernetes ポッドで使用する長期ストレージを提供する永続ボリュームをプロビジョニング、使用、削除する方法について説明します。

永続ボリュームは、Kubernetes ポッドで使用するためにプロビジョニングされたストレージの一部を表します。 永続ボリュームは、1 つまたは複数のポッドで使用でき、長期の保管用に向いています。 また、ポッドやノードのライフサイクルに依存しません。

Windows ノードと Linux ノードの両方に永続ボリュームをプロビジョニングできますが、この記事では、Windows アプリケーションで使用する永続ボリュームを作成する方法について説明します。 詳細については、Kubernetes での永続ボリュームに関する記事を参照してください。

開始する前に

使用を開始するために必要なものは次のとおりです。

永続ボリューム要求の作成

永続ボリューム要求 (PVC) を使用して、ストレージ クラスに基づいてストレージを自動的にプロビジョニングします。 ボリューム要求を作成するには、pvc-akshci-csi.yaml というファイルを作成してから、次の YAML 定義をコピーして貼り付けてください。 PVC には、ReadWriteOnce アクセスがあるサイズ 10 GB のディスクが必要となります。 ストレージ クラス (vhdx) として、default ストレージ クラスが指定されます。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
 name: pvc-akshci-csi
spec:
 accessModes:
 - ReadWriteOnce
 resources:
  requests:
   storage: 10Gi

ボリュームを作成するには、Azure Stack HCI クラスター内のいずれかのサーバーで管理 PowerShell セッションで次のコマンドを実行します。 Enter-PSSession やリモート デスクトップなどのメソッドを使用してサーバーに接続します。

kubectl create -f pvc-akshci-csi.yaml 

次の出力に、永続ボリューム要求が正常に作成されたことが示されます。

出力:

persistentvolumeclaim/pvc-akshci-csi created

永続ボリュームの使用

永続ボリュームを使用するには、winwebserver.yaml という名前のファイルを作成し、次の YAML 定義をコピーして貼り付けます。 次に、永続ボリューム要求と vhdx にアクセスできるポッドを作成します。

次の YAML 定義では、 mountPath はコンテナー内にボリュームをマウントするパスです。 ポッドが正常に作成されると、C:\ で作成されたサブディレクトリ mnt と、mnt 内に作成されたサブディレクトリ akshciscsi が表示されます。

apiVersion: apps/v1 
kind: Deployment 
metadata: 
  labels: 
    app: win-webserver 
  name: win-webserver 
spec: 
  replicas: 1 
  selector: 
    matchLabels: 
      app: win-webserver 
  template: 
    metadata: 
      labels: 
        app: win-webserver 
      name: win-webserver 
    spec: 
     containers: 
      - name: windowswebserver 
        image: mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019 
        ports:  
          - containerPort: 80    
        volumeMounts: 
            - name: akshciscsi 
              mountPath: "/mnt/akshciscsi" 
     volumes: 
        - name: akshciscsi 
          persistentVolumeClaim: 
            claimName:  pvc-akshci-csi 
     nodeSelector: 
      kubernetes.io/os: windows 

上記の YAML 定義を使用してポッドを作成するには、次を実行します。

kubectl create -f winwebserver.yaml 

ポッドが実行されていることを確認するには、次のコマンドを実行します。 イメージのプルには時間がかかるため、ポッドが実行中の状態になるまで数分待ちます。

kubectl get pods -o wide 

ポッドが実行中になったら、次のコマンドを実行してポッドの状態を表示します。

kubectl.exe describe pod %podName% 

ボリュームがポッドにマウントされていることを確認するには、次のコマンドを実行します。

kubectl exec -it %podname% cmd.exe 

永続ボリューム要求の削除

永続ボリューム要求を削除する前に、次のコマンドを実行してアプリのデプロイを削除する必要があります。

kubectl delete deployments win-webserver

その後で、次を実行して永続ボリューム要求を削除できます。

kubectl delete PersistentVolumeClaim pvc-akshci-csi

次の手順