Łączenie woluminów usługi Azure Elastic SAN z klastrem 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:
- Repozytorium sterowników interfejsu CSI iSCSI platformy Kubernetes
- Plik Readme
- Zgłaszanie problemów ze sterownikiem iSCSI
Licencjonowanie
Sterownik iSCSI CSI dla platformy Kubernetes jest licencjonowany na licencję apache 2.0.
Wymagania wstępne
- Użyj najnowszego interfejsu wiersza polecenia platformy Azure lub zainstaluj najnowszy moduł programu Azure PowerShell
- Spełnianie wymagań dotyczących zgodności sterownika iSCSI CSI
- Wdrażanie elastycznej sieci SAN
- Konfigurowanie punktu końcowego sieci wirtualnej
- Konfigurowanie reguł sieci wirtualnej
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 yourTargetPortal
wartości , yourTargetPortalPort
i 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
, image
i 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.