0Pricing
Kubernetes Basics · درس

DaemonSets للمهام الخاصة بالعقد

استخدم DaemonSets لتشغيل نسخة من وحدة على جميع العقد أو العقد المحددة في عنقودك لتنفيذ عمليات على مستوى العنقود

DaemonSets للمهام الخاصة بالعقد درس مجاني في Kubernetes Basics على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kubernetes Basics، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kubernetes Basics 4 دروس في المجموع.

ما هي DaemonSets؟

تخيلوا أنكم بحاجة إلى تشغيل أداة أو خدمة معينة على كل خادم في عنقودكم. ومن أمثلتها وكيل تسجيل يجمع السجلات من كل جهاز.

هنا يأتي دور DaemonSets! فعلى عكس Deployments، التي تهدف إلى إبقاء عدد معين من Pods قيد التشغيل في مكان ما في العنقود، تضمن DaemonSet تشغيل نسخة من Pod على جميع العقد (أو العقد المحددة).

الاستخدامات الشائعة لـ DaemonSets

تُعد DaemonSets مثالية للمهام التي يجب تشغيلها على مستوى العقدة. إليكم بعض الأمثلة الشائعة:

  • وكلاء التسجيل: أدوات مثل Fluentd أو Logstash لجمع السجلات من كل عقدة.
  • وكلاء المراقبة: Prometheus Node Exporter لجمع المقاييس من كل خادم.
  • خدمات التخزين: خدمات مثل GlusterFS أو Ceph التي توفر تخزينًا موزعًا على كل عقدة.
  • وكلاء الشبكة: يعمل Kube-proxy الخاص بـ Kubernetes كـ DaemonSet لإدارة قواعد الشبكة.

بيان DaemonSet الأساسي

يشبه تعريف DaemonSet تعريف Deployment إلى حد كبير. ويتمثل الفرق الأساسي في kind: DaemonSet. لنلقِ نظرة على بنية أساسية:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: my-daemonset
spec:
  selector:
    matchLabels:
      app: my-daemonset-app
  template:
    metadata:
      labels:
        app: my-daemonset-app
    spec:
      containers:
      - name: my-container
        image: busybox
        command: ["sh", "-c", "echo 'Hello from DaemonSet on node $(NODE_NAME)'; sleep 3600"]
        env:
        - name: NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName

الأجزاء الأساسية من YAML

لنقسّم الأقسام المهمة في بيان DaemonSet الخاص بنا:

  • kind: DaemonSet: يخبر هذا Kubernetes بأننا نريد إدارة Pods الخاصة بعقد معينة.
  • spec.selector: ضروري! فهو يحدد كيفية عثور DaemonSet على Pods الخاصة به وإدارتها باستخدام التسميات.
  • spec.template: هذا هو تعريف Pod نفسه. وهو مطابق تقريبًا لقالب Pod الذي قد تجدونه في Deployment. ويصف الحاويات ووحدات التخزين والإعدادات الأخرى لـ Pod التي ستعمل على كل عقدة.

النشر على جميع العقد

إليكم DaemonSet بسيطًا يشغّل حاوية busybox على كل عقدة مؤهلة. وستطبع رسالة توضح العقدة التي تعمل عليها.

يُعد هذا نمطًا شائعًا للوكلاء على مستوى العنقود.

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: node-hello-daemon
spec:
  selector:
    matchLabels:
      app: node-hello
  template:
    metadata:
      labels:
        app: node-hello
    spec:
      containers:
      - name: hello-container
        image: busybox
        command: ["sh", "-c", "while true; do echo 'Hello from node: $(NODE_NAME)'; sleep 5; done"]
        env:
        - name: NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName

تشغيل DaemonSet الخاص بكم

لإنشاء DaemonSet في عنقود Kubernetes الخاص بكم، استخدموا الأمر المألوف kubectl apply مع ملف YAML الذي رأيتموه للتو:

kubectl apply -f node-hello-daemonset.yaml

بعد ذلك، سيضمن Kubernetes جدولة Pod على كل عقدة تطابق معايير DaemonSet.

التحقق من سلامة DaemonSet

بعد التطبيق، يمكنكم التحقق من حالة DaemonSet والـ Pods التي أنشأها:

  • لعرض DaemonSet: kubectl get ds
  • لعرض Pods الفردية التي تعمل على كل عقدة: kubectl get pods -l app=node-hello -o wide

يساعدكم الخيار -o wide على معرفة العقدة التي جرى جدولة كل Pod عليها.

DaemonSets على عقد محددة

ماذا لو أردتم تشغيل DaemonSet على مجموعة فرعية من عقدكم فقط؟ مثلًا، على العقد التي تحتوي على وحدة معالجة رسومات (GPU)، أو العقد المخصصة للتخزين.

يمكنكم تحقيق ذلك باستخدام nodeSelector. يتيح لكم هذا الحقل في spec الخاصة بـ Pod (داخل قالب DaemonSet) تحديد تسميات العقد التي يجب أن تحملها العقدة حتى تتم جدولة Pod عليها.

استخدام محددات العقد في YAML

لنعدّل DaemonSet السابق بحيث يعمل فقط على العقد التي تحمل التسمية disktype: ssd. سيتعين عليكم أولًا وضع تسمية على العقد، مثلًا باستخدام kubectl label node <node-name> disktype=ssd.

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: ssd-monitor-daemon
spec:
  selector:
    matchLabels:
      app: ssd-monitor
  template:
    metadata:
      labels:
        app: ssd-monitor
    spec:
      nodeSelector:
        disktype: ssd # Only runs on nodes with this label
      containers:
      - name: monitor-container
        image: busybox
        command: ["sh", "-c", "while true; do echo 'Monitoring SSD on node: $(NODE_NAME)'; sleep 10; done"]
        env:
        - name: NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName

إمكانات DaemonSet

لقد تعلمتم كيفية عمل DaemonSets. لِنختبر مدى استيعابكم!

DaemonSets: أهم النقاط

أحسنتم! لقد تعلمتم بنجاح عن DaemonSets في Kubernetes.

  • تضمن DaemonSets تشغيل Pod على كل عقدة مؤهلة.
  • وهي مهمة لعمليات مستوى العقدة مثل وكلاء التسجيل والمراقبة والتخزين.
  • يمكنكم استخدام nodeSelector لاستهداف عقد محددة.
  • تُعرّف DaemonSets باستخدام kind: DaemonSet وتستخدم قالب Pod، على غرار Deployments.

بعد ذلك، ستستكشفون StatefulSets لإدارة التطبيقات ذات الحالة!

الأسئلة الشائعة

هل درس «DaemonSets للمهام الخاصة بالعقد» مجاني؟

نعم — نص درس «DaemonSets للمهام الخاصة بالعقد» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kubernetes Basics، انتقل إلى CoddyKit PRO. تتضمن دورة Kubernetes Basics 4 دروس في المجموع.

ماذا ستتعلم في «DaemonSets للمهام الخاصة بالعقد»؟

استخدم DaemonSets لتشغيل نسخة من وحدة على جميع العقد أو العقد المحددة في عنقودك لتنفيذ عمليات على مستوى العنقود تتمرن على Kubernetes Basics مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Kubernetes Basics؟

لا تُشترط خبرة سابقة. Kubernetes Basics على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «DaemonSets للمهام الخاصة بالعقد»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Kubernetes Basics هذا؟

نعم. كل درس في Kubernetes Basics يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. StatefulSets للتطبيقات ذات الحالة
  2. DaemonSets للمهام الخاصة بالعقد
  3. فهم Kubernetes Operators
  4. تعريفات الموارد المخصّصة (CRDs)
← العودة إلى Kubernetes Basics