Połączenie woluminów usługi Azure Elastic SAN do klastra usługi Azure Kubernetes Service

W tym artykule wyjaśniono, jak połączyć wolumin sieci magazynowania elastycznego platformy Azure (SAN) z klastra usługi Azure Kubernetes Service (AKS). Aby nawiązać to połączenie, włącz sterownik interfejsu CSI iSCSI platformy Kubernetes w klastrze. Za pomocą tego sterownika można uzyskać dostęp do woluminów w elastycznej sieci SAN, tworząc woluminy trwałe w klastrze usługi AKS, a następnie dołączając woluminy Elastic SAN do woluminów trwałych.

Informacje o sterowniku

Sterownik iSCSI CSI to projekt typu open source, który umożliwia łączenie się z klastrem Kubernetes za pośrednictwem interfejsu iSCSI. Ponieważ sterownik jest projektem typu open source, firma Microsoft nie zapewni pomocy technicznej ze względu na problemy wynikające z samego sterownika.

Sterownik interfejsu CSI iSCSI platformy Kubernetes jest dostępny w witrynie GitHub:

Licencjonowanie

Sterownik iSCSI CSI dla platformy Kubernetes jest licencjonowany na licencję apache 2.0.

Wymagania wstępne

Ograniczenia

  • Aprowizacja dynamiczna nie jest obecnie obsługiwana
  • Obecnie obsługiwany jest tylko ReadWriteOnce tryb dostępu

Rozpocznij

Instalacja sterownika

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

Po wdrożeniu sprawdź stan zasobników, aby sprawdzić, czy sterownik został zainstalowany.

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

Pobieranie informacji o woluminie

Potrzebujesz woluminu StorageTargetIQN, StorageTargetPortalHostName i StorageTargetPortalPortalPort.

Można je pobrać za pomocą następującego polecenia programu Azure PowerShell:

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

Można je również pobrać za pomocą następującego polecenia interfejsu wiersza polecenia platformy Azure:

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

Konfiguracja klastra

Po pobraniu informacji o woluminie należy utworzyć kilka plików yaml dla nowych zasobów w klastrze usługi AKS.

Storageclass

Użyj poniższego przykładu, aby utworzyć plik storageclass.yml. Ten plik definiuje klasę magazynu trwałego woluminu.

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

Wolumin trwały

Po utworzeniu klasy magazynu utwórz plik pv.yml . Ten plik definiuje wolumin trwały. W poniższym przykładzie zastąp yourTargetPortalwartości , yourTargetPortalPorti yourIQN wartościami zebranymi wcześniej, a następnie użyj przykładu, aby utworzyć plik pv.yml . Jeśli potrzebujesz więcej niż 1 gibibajta magazynu i masz go dostępnego, zastąp 1Gi wymaganą ilością miejsca.

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

Po utworzeniu pliku pv.yml utwórz wolumin trwały za pomocą następującego polecenia:

kubectl apply -f pathtoyourfile/pv.yaml

Oświadczenie trwałego woluminu

Następnie utwórz trwałe oświadczenie woluminu. Użyj klasy magazynu zdefiniowanej wcześniej z zdefiniowanym woluminem trwałym. Poniżej przedstawiono przykładowy wygląd pliku 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"]

Po utworzeniu pliku pvc.yml utwórz trwałe oświadczenie woluminu.

kubectl apply -f pathtoyourfile/pvc.yaml

Aby sprawdzić, czy element PersistentVolumeClaim został utworzony i powiązany z elementem PersistentVolume, uruchom następujące polecenie:

kubectl get pvc pathtoyourfile 

Na koniec utwórz manifest zasobnika. Poniżej przedstawiono przykładowy wygląd pliku pod.yml . Można go użyć do tworzenia własnego manifestu zasobnika, zastępowania wartości dla name, imagei mountPath własnymi:

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

Po utworzeniu pliku pod.yml utwórz zasobnik.

kubectl apply -f pathtoyourfile/pod.yaml

Aby sprawdzić, czy zasobnik został utworzony, uruchom następujące polecenie:

kubectl get pods  

Teraz pomyślnie połączono elastyczny wolumin SAN z klastrem usługi AKS.

Następne kroki

Planowanie wdrażania elastycznej sieci SAN