وحدات التخزين الدائمة ومطالباتها
افهم كيفية توفير تخزين دائم للوحدات باستخدام Persistent Volumes وPersistent Volume Claims
وحدات التخزين الدائمة ومطالباتها درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
Pods والبيانات المؤقتة
تُنشأ Pods وتنتهي، لكن بيانات تطبيقكم غالبًا ما تحتاج إلى البقاء، مثل قاعدة بيانات أو ملفات يحمّلها المستخدمون.
- عند إعادة تشغيل Pod أو إعادة جدولتها، تُفقد أي بيانات مخزنة مباشرةً داخل نظام ملفات الحاوية.
- تُعد هذه الطبيعة المؤقتة مناسبة للتطبيقات عديمة الحالة، لكن البيانات المهمة تحتاج إلى حل دائم.
- يوفر Kubernetes نظامًا قويًا لإدارة التخزين الدائم الذي يظل موجودًا طوال دورات حياة Pods.
PersistentVolume: تخزين العنقود
إن PersistentVolume (PV) هو جزء من مساحة التخزين داخل عنقود Kubernetes.
- إنه مورد على مستوى العنقود، أي إنه لا ينتمي إلى مساحة أسماء محددة.
- يُوفّر المسؤولون PVs، أو يُوفّرها StorageClass ديناميكيًا.
- تجرّد PVs تفاصيل تقنية التخزين الأساسية، مثل Google Persistent Disk وAWS EBS ومشاركة NFS.
تعريف PersistentVolume
تُعرّف PVs بتفاصيل مثل السعة وأنماط الوصول ونوع التخزين. يصف ملف YAML هذا PV يستخدم hostPath (للاختبار المحلي) بسعة تخزين قدرها 5 غيغابايت.
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-local-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath:
path: "/mnt/data"
ملاحظة: يُستخدم hostPath عادةً للتطوير على عقدة واحدة، ولا يُنصح به في بيئات الإنتاج.
PersistentVolumeClaim: طلب Pod
إن PersistentVolumeClaim (PVC) هو طلب للحصول على مساحة تخزين يقدمه مستخدم أو تطبيق داخل مساحة أسماء محددة.
- لا تستهلك Pods وحدات PV مباشرةً؛ بل تطلب مساحة التخزين من خلال PVC.
- تكون PVCs محددة النطاق بمساحة الأسماء، لذا توجد داخل مساحة مشروع أو فريق محددة.
- تحدد الحجم المطلوب وأنماط الوصول، ويمكنها اختياريًا تحديد فئة تخزين.
PV وPVC: المطابقة بينهما
يطابق Kubernetes تلقائيًا بين PVC وPV متاح من خلال عملية تُسمى binding.
- عند إنشاء PVC، يبحث Kubernetes عن PV يستوفي متطلبات PVC، مثل الحجم وأنماط الوصول وفئة التخزين.
- بمجرد العثور على PV مناسب، يتم "ربطهما" معًا في علاقة واحد لواحد.
- يضمن هذا الربط حصول PVC على مساحة التخزين المحددة التي طلبها.
أنماط الوصول لـ PVs وPVCs
تحدد أنماط الوصول كيفية تحميل مساحة التخزين واستخدامها بواسطة Pods. تطلب PVCs هذه الأنماط وتدعمها PVs:
- ReadWriteOnce (RWO): يمكن تحميل وحدة التخزين للقراءة والكتابة بواسطة عقدة واحدة.
- ReadOnlyMany (ROX): يمكن تحميل وحدة التخزين للقراءة فقط بواسطة عدة عقد.
- ReadWriteMany (RWX): يمكن تحميل وحدة التخزين للقراءة والكتابة بواسطة عدة عقد.
يعتمد توفر هذه الأنماط على موفر التخزين المحدد.
فئات التخزين للأتمتة
توفر Storage Classes طريقة للمسؤولين لوصف "فئات" التخزين، مثل "fast-ssd" و"slow-hdd".
- بدلًا من إنشاء PVs يدويًا، يمكن لـ StorageClass توفير PV ديناميكيًا عند طلب PVC له.
- تؤتمت هذه العملية إنشاء PVs استنادًا إلى قوالب محددة مسبقًا.
- وتفصل بين توفير التخزين واستهلاكه، مما يسهل الأمر على المستخدمين.
مثال على إنشاء PVC
لننشئ PVC يطلب غيغابايت واحدًا من مساحة التخزين مع وصول ReadWriteOnce. سيبحث هذا PVC عن PV موجود أو يُفعّل التوفير الديناميكي عبر StorageClass.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-app-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: standard # Optional: if you have a 'standard' StorageClass
احفظوا هذا الملف باسم pvc.yaml وطبّقوه باستخدام kubectl apply -f pvc.yaml.
استخدام PVC في Pod
بعد ربط PVC، يمكن لـ Pod استخدامه من خلال الإشارة إلى اسم PVC في إعداد وحدة التخزين الخاصة به. ولا يحتاج Pod إلى معرفة PV الأساسية، بل يحتاج فقط إلى معرفة PVC.
apiVersion: v1
kind: Pod
metadata:
name: my-data-pod
spec:
containers:
- name: data-container
image: busybox
command: ["/bin/sh", "-c", "echo 'Hello from CoddyKit!' > /mnt/data/hello.txt && sleep 3600"]
volumeMounts:
- name: persistent-storage
mountPath: /mnt/data
volumes:
- name: persistent-storage
persistentVolumeClaim:
claimName: my-app-pvc
سيكتب هذا Pod ملفًا في وحدة التخزين الدائمة المُحمّلة.
مراقبة PVs وPVCs
يمكنكم مراقبة حالة موارد التخزين الدائم باستخدام kubectl:
- لعرض جميع PVs:
kubectl get pv - لعرض جميع PVCs في مساحة الأسماء الخاصة بكم:
kubectl get pvc - للحصول على معلومات تفصيلية، بما في ذلك الحالة والأحداث:
kubectl describe pv <pv-name>kubectl describe pvc <pvc-name>
تأكدوا من أن حالة PVs هي Bound وأن PVCs مرتبطة بـ PV الصحيح وحالتها Bound.
فهم الفرق بين PV وPVC
يريد أحد المستخدمين نشر قاعدة بيانات تحتاج إلى 50 غيغابايت من مساحة التخزين الدائمة. ما مورد Kubernetes الذي يمثل مباشرةً طلب تطبيق المستخدم لهذه المساحة؟
ملخص التخزين الدائم
لقد استعرضنا كيفية إدارة Kubernetes للتخزين الدائم لتطبيقاتكم:
- إن PersistentVolumes (PVs) موارد على مستوى العنقود، وتمثل مساحة التخزين الفعلية.
- إن PersistentVolumeClaims (PVCs) طلبات المستخدمين للحصول على مساحة تخزين.
- يربط Kubernetes بين PVCs وPVs المناسبة استنادًا إلى المتطلبات.
- تحدد أنماط الوصول كيفية استخدام مساحة التخزين (RWO وROX وRWX).
- تتيح Storage Classes التوفير الديناميكي لـ PVs، مما يؤتمت الإعداد.
يضمن هذا النظام استمرار بيانات التطبيق حتى مع توقف Pods وبدء تشغيلها، مما يوفر الموثوقية للتطبيقات ذات الحالة.
الأسئلة الشائعة
هل درس «وحدات التخزين الدائمة ومطالباتها» مجاني؟
نعم — نص درس «وحدات التخزين الدائمة ومطالباتها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
ماذا ستتعلم في «وحدات التخزين الدائمة ومطالباتها»؟
افهم كيفية توفير تخزين دائم للوحدات باستخدام Persistent Volumes وPersistent Volume Claims تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟
لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «وحدات التخزين الدائمة ومطالباتها»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟
نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- ConfigMaps للإعدادات
- Secrets للبيانات الحساسة
- وحدات التخزين الدائمة ومطالباتها
- StorageClasses والتوفير الديناميكي