توصيل وحدات تخزين Azure Elastic SAN بمجموعة خدمة Azure Kubernetes
توضح هذه المقالة كيفية توصيل وحدة تخزين شبكة تخزين Azure Elastic (SAN) من مجموعة Azure Kubernetes Service (AKS). لإجراء هذا الاتصال، قم بتمكين برنامج تشغيل Kubernetes iSCSI CSI على نظام المجموعة الخاص بك. باستخدام برنامج التشغيل هذا، يمكنك الوصول إلى وحدات التخزين على Elastic SAN الخاص بك عن طريق إنشاء وحدات تخزين ثابتة على مجموعة AKS الخاصة بك، ثم إرفاق وحدات تخزين Elastic SAN بوحدات التخزين الثابتة.
حول برنامج التشغيل
برنامج تشغيل iSCSI CSI هو مشروع مصدر مفتوح يسمح لك بالاتصال بمجموعة Kubernetes عبر iSCSI. نظرا لأن برنامج التشغيل هو مشروع مصدر مفتوح، فلن توفر Microsoft الدعم من أي مشكلات ناتجة عن برنامج التشغيل نفسه.
يتوفر برنامج تشغيل Kubernetes iSCSI CSI على GitHub:
الترخيص
تم ترخيص برنامج تشغيل iSCSI CSI ل Kubernetes بموجب ترخيص Apache 2.0.
المتطلبات الأساسية
- استخدم إما أحدث Azure CLI أو قم بتثبيت أحدث وحدة نمطية Azure PowerShell
- تلبية متطلبات التوافق لبرنامج تشغيل iSCSI CSI
- توزيع Elastic SAN
- تكوين نقطة نهاية شبكة ظاهرية
- تكوين قواعد الشبكة الظاهرية
القيود
- التزويد الديناميكي غير مدعوم حاليا
ReadWriteOnce
وضع الوصول فقط مدعوم حاليا
الشروع في العمل
تثبيت برنامج التشغيل
curl -skSL https://raw.githubusercontent.com/kubernetes-csi/csi-driver-iscsi/master/deploy/install-driver.sh | bash -s master --
بعد التوزيع، تحقق من حالة pods للتحقق من تثبيت برنامج التشغيل.
kubectl -n kube-system get pod -o wide -l app=csi-iscsi-node
الحصول على معلومات وحدة التخزين
تحتاج إلى StorageTargetIQN وحدة التخزين وStorageTargetPortalHostName وStorageTargetPortalPort.
يمكنك الحصول عليها باستخدام أمر Azure PowerShell التالي:
Get-AzElasticSanVolume -ResourceGroupName $resourceGroupName -ElasticSanName $sanName -VolumeGroupName $searchedVolumeGroup -Name $searchedVolume
يمكنك أيضا الحصول عليها باستخدام أمر Azure CLI التالي:
az elastic-san volume show --elastic-san-name --name --resource-group --volume-group-name
تكوين نظام المجموعة
بمجرد استرداد معلومات وحدة التخزين الخاصة بك، تحتاج إلى إنشاء بعض ملفات yaml لمواردك الجديدة على نظام مجموعة AKS.
فئة التخزين
استخدم المثال التالي لإنشاء ملف storageclass.yml. يعرف هذا الملف فئة تخزين وحدة التخزين الثابتة.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: san-volume
provisioner: manual
وحدة تخزين ثابتة
بعد إنشاء فئة التخزين، قم بإنشاء ملف pv.yml . يعرف هذا الملف وحدة التخزين الثابتة. في المثال التالي، استبدل yourTargetPortal
و yourTargetPortalPort
و yourIQN
بالقيم التي جمعتها سابقا، ثم استخدم المثال لإنشاء ملف pv.yml . إذا كنت بحاجة إلى أكثر من 1 جيبي بايت من التخزين وإتاحتها، استبدل 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 ، قم بإنشاء وحدة تخزين ثابتة باستخدام الأمر التالي:
kubectl apply -f pathtoyourfile/pv.yaml
المطالبة بالحجم الدائم
بعد ذلك، قم بإنشاء مطالبة وحدة تخزين ثابتة. استخدم فئة التخزين التي حددناها سابقا مع وحدة التخزين الثابتة التي حددناها. فيما يلي مثال على الشكل الذي قد يبدو عليه ملف 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"]
بعد إنشاء ملف pvc.yml ، قم بإنشاء مطالبة وحدة تخزين ثابتة.
kubectl apply -f pathtoyourfile/pvc.yaml
للتحقق من إنشاء PersistentVolumeClaim وربطه بـ PersistentVolume، قم بتشغيل الأمر التالي:
kubectl get pvc pathtoyourfile
وأخيرا، قم بإنشاء بيان pod. فيما يلي مثال على الشكل الذي قد يبدو عليه ملف pod.yml . يمكنك استخدامه لإنشاء بيان جراب خاص بك، واستبدال قيم name
، image
و، و mountPath
ببيان الخاص بك:
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 ، قم بإنشاء جراب.
kubectl apply -f pathtoyourfile/pod.yaml
للتحقق من إنشاء Pod الخاص بك، قم بتشغيل الأمر التالي:
kubectl get pods
لقد نجحت الآن في توصيل وحدة تخزين Elastic SAN بمجموعة AKS الخاصة بك.