Share via


連線 Azure Elastic SAN 磁碟區至 Azure Kubernetes Service 叢集

此文章說明如何從 Azure Kubernetes Service (AKS) 叢集連線到 Azure 彈性存放區域網路 (SAN) 磁碟區。 若要進行此連線,請在叢集上啟用 Kubernetes iSCSI CSI 驅動程式。 透過此驅動程式,您可以在 AKS 叢集上建立永續性磁碟區,然後將彈性 SAN 磁碟區連結至永續性磁碟區,以存取彈性 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 --

部署之後,請檢查 Pod 狀態以確認驅動程式已安裝。

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

取得磁碟區資訊

您需要磁碟區的 StorageTargetIQN、StorageTargetPortalHostName 和 StorageTargetPortalPort。

您可以使用下列 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 檔案。 此檔案會定義永續性磁碟區的 storageclass。

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

永久性磁碟區

建立儲存類別之後,請建立 pv.yml 檔案。 此檔案會定義您的永續性磁碟區。 在下列範例中,請以稍早收集的值取代 yourTargetPortalyourTargetPortalPortyourIQN,然後使用範例來建立 pv.yml 檔案。 如果您需要超過 1 GB 的儲存體並讓其可供使用,請將 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"]

建立 pv.yml 檔案之後,請建立永續性磁碟區宣告。

kubectl apply -f pathtoyourfile/pvc.yaml

若要驗證 PersistentVolumeClaim 已建立並已繫結至 PersistentVolume,請執行下列命令:

kubectl get pvc pathtoyourfile 

最後,建立 Pod 資訊清單。 以下是 pod.yml 檔案可能看起來樣子的範例。 您可以使用它建立自己的 Pod 資訊清單、將 nameimagemountPath 的值取代為您自己的值:

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 檔案之後,請建立 Pod。

kubectl apply -f pathtoyourfile/pod.yaml

若要驗證 Pod 已建立,請執行下列命令:

kubectl get pods  

您現在已成功將彈性 SAN 磁碟區連線至 AKS 叢集。

下一步

規劃彈性 SAN 的部署