Azure Elastik SAN birimlerini bir Azure Kubernetes Service kümesine bağlama
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
- En son Azure CLI'yi kullanın veya en son Azure PowerShell modülünü yükleyin
- iSCSI CSI sürücüsü için uyumluluk gereksinimlerini karşılama
- Elastik SAN dağıtma
- Sanal ağ uç noktasını yapılandırma
- Sanal ağ kurallarını yapılandırma
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 StorageTargetIQN, StorageTargetPortalHostName ve StorageTargetPortalPort 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 sınıfı
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 , yourTargetPortalPort
ve 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, , image
ve mountPath
değerlerini name
kendi 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.