0Pricing
Kubernetes Basics · درس

محدّدات العقدة والتقارب

تحكّم في مكان جدولة الوحدات باستخدام محددات العقد وقواعد تقارب العقد والوحدات الأكثر تعبيرًا

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

التحكم في موضع تشغيل Pods

تقوم Kubernetes افتراضيًا بجدولة Pods على أي عقدة متاحة. ولكن ماذا لو كنتم بحاجة إلى مزيد من التحكم؟

أحيانًا تحتاجون إلى تشغيل Pods على عقد محددة. فقد تحتوي تلك العقد على أجهزة خاصة أو تراخيص معينة، أو تكون موجودة في مناطق توافر محددة.

يستكشف هذا الدرس كيفية توجيه جدولة Kubernetes باستخدام محددات العقدة وتقارب العقدة.

لماذا نوجّه المجدول؟

تخيّلوا أن لديكم Pod لقاعدة بيانات يحتاج إلى التشغيل على عقدة مزودة بأقراص SSD عالية الأداء، أو تطبيقًا كثيف الاستخدام لوحدة GPU ويتطلب أجهزة محددة.

قد ترغبون أيضًا في إبعاد Pods معينة بعضها عن بعض لتحمل الأعطال، أو ضمان تشغيلها على عقد تستخدم أنظمة تشغيل محددة.

توفر Kubernetes أدوات للتعبير عن تفضيلات الجدولة هذه.

لدى العقد تسميات

قبل أن نتمكن من إخبار Pods بمكان تشغيلها، تحتاج العقد إلى هويات! تستخدم Kubernetes التسميات لتحديد هوية العقد استنادًا إلى خصائصها.

  • التسميات أزواج من مفتاح وقيمة، مثل disk=ssd أو gpu=true.
  • يمكنكم إضافة تسميات مخصصة إلى العقد باستخدام kubectl label nodes <node-name> <key>=<value>.
  • تُستخدم هذه التسميات لاستهداف عقد محددة عند وضع Pods عليها.

محددات العقدة: مطابقة بسيطة

إن أبسط طريقة لتقييد Pod بمجموعة محددة من العقد هي استخدام nodeSelector.

وهو حقل في مواصفات Pod يأخذ خريطة من أزواج المفتاح والقيمة. ولن تتم جدولة Pod إلا على العقد التي تحتوي على جميع تلك التسميات.

يشبه ذلك قولكم: «أحتاج إلى عقدة بهذه المواصفات تمامًا».

محدد العقدة قيد التنفيذ

لنفترض أن لدينا عقدًا تحمل التسمية disk=ssd. إليكم كيفية جعل Pod يعمل على هذه العقد فقط:

apiVersion: v1
kind: Pod
metadata:
  name: ssd-app
spec:
  containers:
  - name: my-container
    image: nginx
  nodeSelector:
    disk: ssd

تقارب العقدة: مطابقة متقدمة

رغم أن nodeSelector سهل الاستخدام، فإنه صارم للغاية. ماذا لو أردتم عقدًا «مفضلة» أو قواعد مطابقة أكثر تعقيدًا؟

يوفر تقارب العقدة مرونة أكبر؛ إذ يتيح لكم التعبير عن متطلبات «مرنة» أو «صارمة» لتشغيل Pods على عقد تحمل تسميات محددة.

ويستخدم صياغة أقوى مع عوامل تشغيل مثل In وNotIn وExists وDoesNotExist وGt وLt.

التقارب المطلوب والمفضّل

لتقارب العقدة نوعان رئيسيان:

  • requiredDuringSchedulingIgnoredDuringExecution: يجب جدولة Pod على عقدة تطابق القواعد. وإذا لم توجد عقدة كهذه، فلن تتم جدولة Pod.
  • preferredDuringSchedulingIgnoredDuringExecution: يحاول المجدول العثور على عقدة تطابق القواعد، ولكن إذا لم تتوفر أي عقدة، فسيجدول Pod على عقدة أخرى. وهذا نهج «بذل أفضل جهد».

تقارب العقدة المطلوب

إليكم Pod يتطلب عقدة تحمل التسمية env=production. وإذا لم توجد عقدة كهذه، فسيبقى Pod في حالة انتظار.

apiVersion: v1
kind: Pod
metadata:
  name: prod-app
spec:
  containers:
  - name: my-container
    image: httpd
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: env
            operator: In
            values:
            - production

تقارب Pods: أهمية مواقع Pods الأخرى

ماذا لو أردتم جدولة Pods استنادًا إلى المكان الذي تعمل فيه Pods أخرى؟

  • تقارب Pods: يجذب Pods إلى العقد التي تعمل فيها بالفعل Pods أخرى تحمل تسميات محددة. ويفيد ذلك في وضع الخدمات التي تتواصل بكثرة في المكان نفسه.
  • التقارب العكسي لـ Pods: يبعد Pods عن العقد التي تعمل فيها Pods أخرى تحمل تسميات محددة. وهو مناسب لتوزيع النسخ المتماثلة على العقد لتحقيق التوافر العالي.

التقارب العكسي لـ Pods عمليًا

يضمن هذا البيان عدم إمكانية جدولة Podَين يحملان التسمية app=my-web على العقدة نفسها. وهذا يحسّن تحمل الأعطال.

يحدد topologyKey النطاق الذي ينطبق عليه التقارب العكسي (مثل العقدة أو المنطقة).

apiVersion: v1
kind: Pod
metadata:
  name: web-app-pod
  labels:
    app: my-web
spec:
  containers:
  - name: web-container
    image: busybox
    command: ["sh", "-c", "echo 'Hello from web-app'; sleep 3600"]
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchLabels:
              app: my-web
          topologyKey: "kubernetes.io/hostname"

اختبروا معلوماتكم

تريدون ضمان عدم جدولة Pods قاعدة البيانات المهمة على العقد التي تحمل التسمية zone=dev. ما نوع قاعدة الجدولة التي ستستخدمونها لهذا الاستبعاد الصارم المستند إلى تسميات العقد؟

مراجعة: التحكم في الجدولة

أحسنتم! لقد تعلمتم طرقًا فعالة للتحكم في أماكن تشغيل Pods:

  • تسميات العقد: أزواج من مفتاح وقيمة تحدد خصائص العقد.
  • محددات العقدة: مطابقة بسيطة وصارمة لجدولة Pods على العقد التي تحمل تسميات محددة.
  • تقارب العقدة: قواعد أكثر مرونة (مطلوبة أو مفضلة) لاختيار العقد، باستخدام عوامل تشغيل.
  • تقارب Pods والتقارب العكسي لها: وضع Pods معًا أو فصلها استنادًا إلى مواقع Pods الأخرى.

تُعد هذه الأدوات أساسية لتحسين استخدام الموارد، وضمان تحمل الأعطال، وتلبية احتياجات التطبيقات المحددة.

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

هل درس «محدّدات العقدة والتقارب» مجاني؟

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

ماذا ستتعلم في «محدّدات العقدة والتقارب»؟

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

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

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

كم من الوقت يستغرق درس «محدّدات العقدة والتقارب»؟

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

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

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

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

  1. طلبات الموارد وحدودها
  2. محدّدات العقدة والتقارب
  3. Taints وTolerations
  4. أولوية Pods والاستباق
← العودة إلى Kubernetes Basics