إعداد K8S مخصص باستخدام تخزين阿里云 الموزع
Categories:
مقدمة
تم كتابة هذه المقالة في 2024.06.14، وتشرح كيفية استخدام تخزين阿里yun الموزع في مجموعة مخصصة على阿里yun، مع ربط في النهاية بوثائق الاتصال، حيث تكون وثائق阿里yun الرسمية باللغة الصينية، ولكن يتم تثبيت ملحق تخزين阿里yun على github، وحاليًا لا توجد سوى وثائق إنجليزية، ويُنصح للقراء ذوي الظروف المناسبة بقراءة النص الأصلي قدر الإمكان.
تثبيت ملحق التخزين
- إنشاء سياسة أذونات مخصصة: https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver/blob/master/docs/ram-policies/disk.json
- إنشاء دور RAM، ومنح سياسة أذونات مخصصة، وحفظ مؤقتًا
accesskeyوsecretkubectl create secret -n kube-system generic csi-access-key --from-literal=id='{id}' --from-literal=secret='{secret}'
- تثبيت برنامج تشغيل CSI، لا يوجد مخطط helm، يمكن التثبيت محليًا فقط (20240613).
git clone https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver.gitcd alibaba-cloud-csi-driver/deploy- إذا تم التثبيت على مجموعة مخصصة من ecs على阿里yun، يمكن تنفيذ الجملة التالية مباشرة، إذا لم يكن كذلك، يرجى قراءة: https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver/blob/master/docs/install.md
helm upgrade --install alibaba-cloud-csi-driver ./chart --values chart/values-ecs.yaml --namespace kube-system
- التأكيد،
watch kubectl get pods -n kube-system -l app=csi-plugin
مرجع اختيار نوع التخزين
- الحد الأدنى لسعة قرص ECS السحابي المنشأ هو 20GB، IOPS 3000، هذه السعة كبيرة نسبيًا، ولا تكون مربحة جدًا.
- وحدة تخزين سحابة ديناميكية
- وثائق رسمية:
- لا يدعم قرص السحابة الاستخدام عبر المناطق المتاحة، وهو تخزين غير مشترك، ويمكن تعليقه بواسطة Pod واحد فقط في نفس الوقت. (تم اختباره عمليًا أنه يمكن تعليقه بواسطة العديد من Pod لنفس deployment)
- يجب أن يكون نوع قرص السحابة مطابقًا لنوع ECS حتى يمكن تعليقه، وإلا فسوف يفشل التعليق. لمعرفة العلاقة بين تطابق نوع قرص السحابة ونوع ECS، يرجى الرجوع إلى عائلة مواصفات المثيل.
- عند نشر التطبيق، يتم شراء قرص السحابة من خلال StorageClass لإنشاء PV تلقائيًا. إذا قمت بالفعل بشراء قرص سحابي، يُنصح باستخدام وحدة تخزين سحابة ثابتة.
- لا يمكن أن يتجاوز حجم قرص السحابة المطلوب الحد الأدنى والأقصى لسعة القرص الواحد.
- عندما يعاد إنشاء Pod، سيتم إعادة تعليق قرص السحابة الأصلي. إذا كان لا يمكن جدولة إلى المنطقة المتاحة الأصلية بسبب قيود أخرى، فسوف يكون Pod في حالة الانتظار.
- يتم شراء الأقراص السحابية المنشأة ديناميكيًا كأقراص سحابية مدفوعة بالساعة
- ملخصات اختبار أخرى:
- على الرغم من أنه يمكن تعليق قرص السحابة بواسطة العديد من Pod، إلا أن Pod واحد فقط يمكنه القراءة والكتابة، ولا يمكن لـ Pod الأخرى القراءة والكتابة. لذلك يمكن فقط ضبط
accessModesفي PVC علىReadWriteOnce، ولا يمكن الحصول على النتيجة الصحيحة عند التعديل. - إذا تم ضبط
reclaimPolicyلـ StorageClass علىDelete، عند حذف PVC، يمكن حذف قرص السحابة تلقائيًا. - إذا تم ضبط
reclaimPolicyلـ StorageClass علىRetain، عند حذف PVC، لن يتم حذف قرص السحابة تلقائيًا، ويجب حذفه يدويًا في المجموعة ولوحة تحكم阿里yun.
- على الرغم من أنه يمكن تعليق قرص السحابة بواسطة العديد من Pod، إلا أن Pod واحد فقط يمكنه القراءة والكتابة، ولا يمكن لـ Pod الأخرى القراءة والكتابة. لذلك يمكن فقط ضبط
- من الصعب العثور على سيناريو استخدام مناسب.
- وثائق رسمية:
- وحدة تخزين سحابة ثابتة
- وثائق رسمية:
- إنشاء PV و PVC يدويًا
- لا يدعم قرص السحابة الاستخدام عبر المناطق المتاحة، وهو تخزين غير مشترك، ويمكن تعليقه بواسطة Pod واحد فقط في نفس الوقت.
- يجب أن يكون نوع قرص السحابة مطابقًا لنوع ECS حتى يمكن تعليقه، وإلا فسوف يفشل التعليق.
- يمكن اختيار قرص سحابي في حالة الانتظار في نفس المنطقة والمنطقة المتاحة التي تنتمي إليها المجموعة.
- وثائق رسمية:
- وحدة تخزين سحابة ديناميكية
- تأخير تشغيل NAS كبير نسبيًا، أفضل أداء 2ms، تخزين عميق 10ms، الدفع بالساعة، أداء القراءة والكتابة أعلى من تخزين الكائنات OSS
- وحدة تخزين OSS، https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/oss-volume-overview-1?spm=a2c4g.11186623.0.0.43166a351NbtvU
- OSS هو تخزين مشترك، ويمكنه توفير خدمة تخزين مشتركة لعدة Pod في نفس الوقت.
- (20240613) يدعم حاليًا أنظمة CentOS و Alibaba Cloud Linux و ContainerOS و Anolis.
- عند استخدام وحدة تخزين البيانات، يستخدم كل تطبيق اسم PV مستقل.
- وحدة تخزين OSS معلقة باستخدام ملف ossfs كنظام ملفات FUSE.
- مناسب لسيناريو قراءة الملفات. على سبيل المثال، قراءة ملفات التكوين، ملفات الفيديو، ملفات الصور، إلخ.
- لا يناسب سيناريوهات كتابة الملفات. إذا لزم الأمر كتابة الملفات، يُنصح باستخدام SDK لتنفيذ عملية الكتابة أو استخدام خدمة وحدة تخزين NAS.
- يمكن تحسين أداء ossfs في مجالات التخزين المؤقت والأذونات من خلال ضبط معلمات التكوين
- قيود استخدام ossfs
- ستؤدي عمليات الكتابة العشوائية أو الإلحاق إلى إعادة كتابة جميع الملفات.
- بسبب الحاجة إلى الوصول عن بعد إلى خادم OSS، فإن أداء عمليات البيانات الوصفية مثل قائمة الدليل ضعيف.
- عمليات إعادة تسمية الملف أو المجلد ليست ذرية.
- عند تعليق عميل متعدد لنفس OSS Bucket، يعتمد ذلك على تنسيق المستخدم لسلوك كل عميل، على سبيل المثال، تجنب كتابة نفس الملف بواسطة عميل متعدد، إلخ.
- لا يدعم الربط الصلب (Hard Link).
- عندما يكون CSI plugin أقل من الإصدار v1.20.7، فإنه يكتشف فقط التعديلات المحلية ولا يستطيع اكتشاف التعديلات الخارجية من عميل أو أدوات أخرى.
- لتجنب ارتفاع الحمل على النظام، لا يُنصح باستخدامه في سيناريوهات القراءة والكتابة عالية التوازي.
- إذا كانت مجموعة مختلطة (بعض العقد لا تنتمي إلى阿里yun)، فيمكن فقط استخدام وحدة تخزين NAS و OSS الثابتة.
- كل من قرص السحابة و NAS و OSS لها قيود إقليمية.
الخلاصة، يتم طلب وتعليق قرص السحابة ككل القرص، ولا يسهل مشاركته. OSS لديه حبيبات تشغيلية إلى الملف، وتوجد مشكلة في أداء قراءة وكتابة عالية التوازي، ودعم النظام محدود.
- قرص السحابة مناسب لسيناريوهات مثل قواعد البيانات التي تحتاج إلى مساحة كبيرة وأداء عالٍ
- يمكن لجميع الباقي اختيار NAS إذا لم تكن متطلبات الأداء عالية
- لا يناسب OSS سيناريو الكتابة عالية التوازي لمجموعة阿里yun، ويمكن تطبيقه في سيناريو القراءة المتوازية.
توجد مشكلة في موقع وثائق阿里yun الرسمية وعدم التوافق المتبادل، يحتاج القراء إلى تحديد ذلك وفقًا لتاريخ الوثيقة، وقد تكون بعض الخصائص المعلنة بعدم الدعم قد دُعمت بالفعل مع تحديث الإصدار، ويحتاج إلى إجراء بعض المحاولات بنفسه.
خطوات التشغيل
هذا هو الدليل التوجيهي الرسمي阿里yun، بعد تثبيت ملحق تخزين阿里yun وفقًا للنص أعلاه، يمكن اتباع استخدام وحدة تخزين NAS ثابتة للنشر والاختبار.
ملاحظة: قد يواجه المستخدمون k3s مشكلة local-path-storage، وقد تكون معلومات الخطأ،
- فشل في توفير وحدة تخزين بـ StorageClass “local-path”: claim.Spec.Selector غير مدعوم
- في انتظار إنشاء وحدة تخزين إما بواسطة المزود الخارجي ’localplugin.csi.alibabacloud.com’ أو يدويًا بواسطة مسؤول النظام. إذا تأخر إنشاء وحدة التخزين، يرجى التحقق من أن المزود قيد التشغيل ومسجل بشكل صحيح.
يجب تعيين storageClassName في persistentVolumeClaim إلى فارغ لتجنب استخدام local-path-storage الافتراضي لـ k3s.
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc-nas
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
selector:
matchLabels:
alicloud-pvname: pv-nas
storageClassName: ""
مراجع
- https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver
- https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver/blob/master/docs/disk.md
- https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver/blob/master/docs/install.md
- https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver/blob/master/docs/ram-policies/disk.json
- https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver/blob/master/deploy/chart/values.yaml
- https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/use-dynamically-provisioned-disk-volumes?#6d16e8a415nie
- https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/mount-statically-provisioned-nas-volumes?spm=a2c4g.11186623.0.0.125672b9VnrKw6