Share via


Azure Elastic SAN ボリュームを Azure Kubernetes Service クラスターに接続する

この記事では、Azure Kubernetes Service (AKS) クラスターから Azure Elastic Storage Area Network (SAN) ボリュームを接続する方法について説明します。 この接続を確立するには、クラスターで Kubernetes iSCSI CSI ドライバーを有効にします。 このドライバーを使用すると、AKS クラスターに永続ボリュームを作成し、Elastic SAN ボリュームを永続ボリュームにアタッチすることで、Elastic SAN 上のボリュームにアクセスできます。

ドライバーについて

iSCSI CSI ドライバーは、iSCSI 経由で Kubernetes クラスターに接続できるオープンソース プロジェクトです。 ドライバーはオープンソース プロジェクトであるため、Microsoft はドライバー自体に起因する問題についてはサポートを提供しません。

Kubernetes iSCSI CSI ドライバーは、GitHub で入手できます。

ライセンス

Kubernetes 用の iSCSI CSI ドライバーは、Apache 2.0 ライセンスでライセンスされています

前提条件

制限事項

  • 動的プロビジョニングは現在サポートされていません
  • 現在サポートされているのは ReadWriteOnce アクセス モードのみです

作業の開始

ドライバーのインストール

curl -skSL https://raw.githubusercontent.com/kubernetes-csi/csi-driver-iscsi/master/deploy/install-driver.sh | bash -s master --

デプロイ後、ポッドの状態を確認して、ドライバーがインストールされていることを確認します。

kubectl -n kube-system get pod -o wide -l app=csi-iscsi-node

ボリュームの情報の取得

ボリュームの StorageTargetIQN、StorageTargetPortalHostName、StorageTargetPortalPortalPort が必要です。

それらは、次の Azure PowerShell コマンドで取得できます。

Get-AzElasticSanVolume -ResourceGroupName $resourceGroupName -ElasticSanName $sanName -VolumeGroupName $searchedVolumeGroup -Name $searchedVolume 

次の Azure CLI コマンドでも取得できます。

az elastic-san volume show --elastic-san-name --name --resource-group --volume-group-name

クラスター構成

ボリュームの情報を取得したら、AKS クラスター上の新しいリソース用にいくつかの yaml ファイルを作成する必要があります。

Storageclass

storageclass.yml ファイルを作成するには、次の例を使用します。 このファイルは、永続ボリュームのストレージ クラスを定義します。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: san-volume
provisioner: manual

永続ボリューム

ストレージ クラスを作成したら、pv.yml ファイルを作成します。 このファイルは、永続ボリュームを定義します。 次の例では、yourTargetPortalyourTargetPortalPort、および yourIQN を前に収集した値に置換してから、この例を使用して pv.yml ファイルを作成します。 1 ギガバイトを超えるストレージが必要で、それを使用できる場合は、1Gi を必要なストレージの量に置換してください。

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: iscsiplugin-pv
  labels:
    name: data-iscsiplugin
spec:
  storageClassName: san-volume
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 1Gi
  csi:
    driver: iscsi.csi.k8s.io
    volumeHandle: iscsi-data-id
    volumeAttributes:
      targetPortal: "yourTargetPortal:yourTargetPortalPort"
      portals: "[]"
      iqn: "yourIQN"
      lun: "0"
      iscsiInterface: "default"
      discoveryCHAPAuth: "true"
      sessionCHAPAuth: "false"

pv.yml ファイルを作成したら、次のコマンドで永続ボリュームを作成します。

kubectl apply -f pathtoyourfile/pv.yaml

永続ボリューム要求

次に、永続ボリューム要求を作成します。 前に定義した永続ボリュームで定義したストレージ クラスを使用します。 次に、pvc.yml ファイルの例を示します。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: iscsiplugin-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: san-volume
  selector:
    matchExpressions:
      - key: name
        operator: In
        values: ["data-iscsiplugin"]

pvc.yml ファイルを作成した後、永続ボリューム要求を作成します。

kubectl apply -f pathtoyourfile/pvc.yaml

PersistentVolumeClaim が作成され、PersistentVolume にバインドされていることを確認するには、次のコマンドを実行します。

kubectl get pvc pathtoyourfile 

最後に、ポッド マニフェストを作成します。 次に、pod.yml ファイルの例を示します。 これを使用して独自のポッド マニフェストを作成し、nameimage、および mountPath の値を独自のものに置換することができます。

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
    - image: maersk/nginx
      imagePullPolicy: Always
      name: nginx
      ports:
        - containerPort: 80
          protocol: TCP
      volumeMounts:
        - mountPath: /var/www
          name: iscsi-volume
  volumes:
    - name: iscsi-volume
      persistentVolumeClaim:
        claimName: iscsiplugin-pvc

pod.yml ファイルを作成したら、ポッドを作成します。

kubectl apply -f pathtoyourfile/pod.yaml

ポッドが作成されたことを確認するために、次のコマンドを実行します。

kubectl get pods  

これで、Elastic SAN ボリュームが AKS クラスターに正常に接続されました。

次のステップ

Elastic SAN のデプロイを計画する