مشاركة عبر


توصيل وحدات تخزين 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.

المتطلبات الأساسية

القيود

  • التزويد الديناميكي غير مدعوم حاليا
  • 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 الخاصة بك.

الخطوات التالية

التخطيط لتوزيع Elastic SAN