Azure Elastik SAN birimlerini bir Azure Kubernetes Service kümesine Bağlan

Bu makalede, Azure Kubernetes Service (AKS) kümesinden bir Azure Elastik depolama alanı ağı (SAN) biriminin nasıl bağlanacakları açıklanmaktadır. Bu bağlantıyı yapmak için kümenizde Kubernetes iSCSI CSI sürücüsünü etkinleştirin. Bu sürücüyle, AKS kümenizde kalıcı birimler oluşturup elastik SAN birimlerini kalıcı birimlere ekleyerek Elastik SAN'nızdaki birimlere erişebilirsiniz.

Sürücü hakkında

iSCSI CSI sürücüsü, iSCSI üzerinden kubernetes kümesine bağlanmanızı sağlayan bir açık kaynak projesidir. Sürücü açık kaynak bir proje olduğundan Microsoft, sürücüden kaynaklanan herhangi bir sorundan destek sağlamaz.

Kubernetes iSCSI CSI sürücüsü GitHub'da kullanılabilir:

Lisanslama

Kubernetes için iSCSI CSI sürücüsü Apache 2.0 lisansı altında lisanslanır.

Önkoşullar

Sınırlamalar

  • Dinamik sağlama şu anda desteklenmiyor
  • Şu anda yalnızca ReadWriteOnce erişim modu desteklenmektedir

Kullanmaya başlayın

Sürücü yüklemesi

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

Dağıtımdan sonra, sürücünün yüklendiğini doğrulamak için podların durumunu denetleyin.

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

Birim bilgilerini alma

Birimin Depolama TargetIQN, Depolama TargetPortalHostName ve Depolama TargetPortalPort gerekir.

Bunları aşağıdaki Azure PowerShell komutuyla alabilirsiniz:

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

Bunları aşağıdaki Azure CLI komutuyla da alabilirsiniz:

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

Küme yapılandırması

Biriminizin bilgilerini aldıktan sonra AKS kümenizdeki yeni kaynaklarınız için birkaç yaml dosyası oluşturmanız gerekir.

Depolama class

storageclass.yml dosyası oluşturmak için aşağıdaki örneği kullanın. Bu dosya kalıcı biriminizin depolama sınıfını tanımlar.

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

Kalıcı birim

Depolama sınıfını oluşturduktan sonra bir pv.yml dosyası oluşturun. Bu dosya kalıcı biriminizi tanımlar. Aşağıdaki örnekte , yourTargetPortalPortve değerlerini daha önce topladığınız değerlerle değiştirinyourTargetPortal, ardından örneği kullanarak bir pv.yml dosyası yourIQN oluşturun. 1 gibibayttan fazla depolama alanına ihtiyacınız varsa ve kullanılabilir durumdaysa değerini ihtiyacınız olan depolama alanı miktarıyla değiştirin 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 dosyasını oluşturduktan sonra aşağıdaki komutla kalıcı bir birim oluşturun:

kubectl apply -f pathtoyourfile/pv.yaml

Kalıcı birim talebi

Ardından kalıcı bir birim talebi oluşturun. Daha önce tanımladığımız depolama sınıfını tanımladığımız kalıcı birimle kullanın. Aşağıda, pvc.yml dosyanızın nasıl görünebileceğine ilişkin bir örnek verilmiştir:

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 dosyasını oluşturduktan sonra kalıcı bir birim talebi oluşturun.

kubectl apply -f pathtoyourfile/pvc.yaml

PersistentVolumeClaim'inizin oluşturulduğunu ve PersistentVolume'a bağlı olduğunu doğrulamak için aşağıdaki komutu çalıştırın:

kubectl get pvc pathtoyourfile 

Son olarak bir pod bildirimi oluşturun. Aşağıda, pod.yml dosyanızın nasıl görünebileceğine ilişkin bir örnek verilmiştir. Bunu kullanarak kendi pod bildiriminizi oluşturabilir, , imageve mountPath değerlerini namekendi podunuzla değiştirebilirsiniz:

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 dosyasını oluşturduktan sonra bir pod oluşturun.

kubectl apply -f pathtoyourfile/pod.yaml

Podunuzun oluşturulduğunu doğrulamak için aşağıdaki komutu çalıştırın:

kubectl get pods  

Artık AKS kümenize bir Elastik SAN birimini başarıyla bağladınız.

Sonraki adımlar

Elastik SAN dağıtmayı planlama