將 Azure 彈性 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 授權獲得授權。
必要條件
- 使用最新的 Azure CLI 或安裝最新的 Azure PowerShell 模組
- 符合 iSCSI CSI 驅動程式的相容性需求
- 部署彈性 SAN
- 設定虛擬網路端點
- 設定虛擬網路規則
限制
- 目前不支援動態佈建
- 目前僅支援
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 檔案。 此檔案會定義您的永續性磁碟區。 在下列範例中,請以稍早收集的值取代 yourTargetPortal
、yourTargetPortalPort
和 yourIQN
,然後使用範例來建立 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 資訊清單、將 name
、image
和 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 檔案之後,請建立 Pod。
kubectl apply -f pathtoyourfile/pod.yaml
若要驗證 Pod 已建立,請執行下列命令:
kubectl get pods
您現在已成功將彈性 SAN 磁碟區連線至 AKS 叢集。