Bagikan melalui


Menyambungkan volume Azure Elastic SAN ke kluster Azure Kubernetes Service

Artikel ini menjelaskan cara menyambungkan volume jaringan area penyimpanan (SAN) Azure Elastic dari kluster Azure Kubernetes Service (AKS). Untuk membuat koneksi ini, aktifkan driver Kubernetes iSCSI CSI pada kluster Anda. Dengan driver ini, Anda dapat mengakses volume pada Elastic SAN Anda dengan membuat volume persisten pada kluster AKS Anda, lalu melampirkan volume Elastic SAN ke volume persisten.

Tentang driver

Driver csi iSCSI adalah proyek sumber terbuka yang memungkinkan Anda untuk terhubung ke kluster Kubernetes melalui iSCSI. Karena driver adalah proyek sumber terbuka, Microsoft tidak akan memberikan dukungan dari masalah apa pun yang berasal dari driver, itu sendiri.

Driver CSI Kubernetes iSCSI tersedia di GitHub:

Pelisensian

Driver csi iSCSI untuk Kubernetes dilisensikan berdasarkan lisensi Apache 2.0.

Prasyarat

Batasan

  • Provisi dinamis saat ini tidak didukung
  • Hanya ReadWriteOnce mode akses yang saat ini didukung

Memulai

Penginstalan driver

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

Setelah penyebaran, periksa status pod untuk memverifikasi bahwa driver diinstal.

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

Mendapatkan informasi volume

Anda memerlukan StorageTargetIQN, StorageTargetPortalHostName, dan StorageTargetPortalPort volume.

Anda bisa mendapatkannya dengan perintah Azure PowerShell berikut ini:

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

Anda juga bisa mendapatkannya dengan perintah Azure CLI berikut:

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

Mengonfigurasi kluster

Setelah mengambil informasi volume, Anda perlu membuat beberapa file yaml untuk sumber daya baru Anda di kluster AKS Anda.

Storageclass

Gunakan contoh berikut untuk membuat file storageclass.yml. File ini mendefinisikan kelas penyimpanan volume persisten Anda.

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

Volume persisten

Setelah Anda membuat kelas penyimpanan, buat file pv.yml . File ini mendefinisikan volume persisten Anda. Dalam contoh berikut, ganti yourTargetPortal, , dan yourIQN dengan nilai yang Anda kumpulkan sebelumnya, lalu gunakan contoh untuk membuat file pv.ymlyourTargetPortalPort. Jika Anda membutuhkan lebih dari 1 gibibyte penyimpanan dan memilikinya tersedia, ganti 1Gi dengan jumlah penyimpanan yang Anda butuhkan.

---
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"

Setelah membuat file pv.yml , buat volume persisten dengan perintah berikut:

kubectl apply -f pathtoyourfile/pv.yaml

Klaim volume persisten

Selanjutnya, buat klaim volume persisten. Gunakan kelas penyimpanan yang kami tentukan sebelumnya dengan volume persisten yang kami tentukan. Berikut ini adalah contoh tampilan file pvc.yml Anda:

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"]

Setelah membuat file pvc.yml , buat klaim volume persisten.

kubectl apply -f pathtoyourfile/pvc.yaml

Verifikasikan bahwa PersistentVolumeClaim Anda dibuat dan terikat ke PersistentVolume, jalankan perintah berikut:

kubectl get pvc pathtoyourfile 

Terakhir, buat manifes pod. Berikut ini adalah contoh tampilan file pod.yml Anda. Anda dapat menggunakannya untuk membuat manifes pod Anda sendiri, mengganti nilai untuk name, image, dan mountPath dengan milik Anda sendiri:

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

Setelah membuat file pod.yml , buat pod.

kubectl apply -f pathtoyourfile/pod.yaml

Untuk memverifikasi pod Anda dibuat, jalankan perintah berikut:

kubectl get pods  

Anda sekarang telah berhasil menyambungkan volume Elastic SAN ke kluster AKS Anda.

Langkah berikutnya

Rencanakan untuk menyebarkan Elastic SAN