تخطَّ إلى المحتوى
نسخة تجريبية

مجمّعات عُقد Kubernetes

تأتي العُقد العاملة في المجموعة ضمن مجمّعات عُقد. لكل عقدة عاملة في المجمّع حجمه ومنطقته، وتنضم إلى المجموعة بتسمياته (labels) وقيوده (taints). استخدم المجمّعات لتمنح كل حمل عمل الأجهزة التي يحتاج إليها: عُقد كبيرة لقاعدة بيانات، وصغيرة لكل ما سواها، أو مجمّعًا مخصّصًا لفريق واحد.

تبدأ المجموعة بالمجمّعات التي تعدّها في خطوة مجمّعات العُقد عند إنشائها: أولها اسمه default ما لم تغيّره، ويمكنك إضافة غيره هناك ضمن حدّ العُقد العاملة لكل مجموعة في خطتك. انظر أنشئ مجموعة.

إدارة مجمّعات العُقد

افتح المجموعة وانتقل إلى العُقد. يعرض جدول مجمّعات العُقد حجم كل مجمّع ومنطقته، وعدد عُقده الجاهزة، وتسمياته وقيوده، وحالته.

  • إضافة مجمّع عُقد: اختر اسمًا وحجمًا للعقدة العاملة ومنطقةً وعدد العُقد، ويمكنك إضافة تسميات وقيود. وتعرض النافذة السعر لكل عقدة عاملة وتقدير الدفع حسب الاستخدام لعُقد المجمّع: انظر أسعار Kubernetes واستخدامه.
  • تعديل: غيّر عدد العُقد العاملة أو التسميات أو القيود. يبقى الاسم والحجم والمنطقة كما هي؛ ولتغييرها أضف مجمّعًا جديدًا واحذف القديم.
  • حذف: تُفرَّغ عُقد المجمّع العاملة وتُزال، ثم يُزال المجمّع.

يستطيع المالكون والمسؤولون والمطوّرون إدارة مجمّعات العُقد، ويستطيع المشاهدون رؤيتها.

تعرض المجموعة حالة قيد التحديث أثناء تطبيق التغيير، وتواصل الخدمة طوال الوقت. تنضم العُقد الجديدة بتسميات مجمّعها وقيوده، فلا يُجدوَل عليها شيء قبل تطبيقها. وحين تغادر عُقد لأنك خفّضت العدد، تُبقي المجموعة عقدة عاملة في كل منطقة فيها إحدى وحدات تخزينها ما دام العدد يسمح بذلك، وتُزيل العُقد التي لم تجهز بعد أو التي لا تتصل بها وحدة تخزين قبل غيرها، وفيما عدا ذلك تغادر الأحدث أولًا؛ أما حذف مجمّع فيُزيل كل عُقده. تُخرَج كل منها من موزّعات الحمل وتُفرَّغ، مع مهلة تصل إلى 15 دقيقة لميزانيات تعطّل الـ Pods لديك، وتنتقل وحدات تخزينها إلى العُقد الباقية في منطقتها.

الأسماء والأحجام والمناطق

الاسممن 1 إلى 16 من الأحرف اللاتينية الصغيرة والأرقام والشرطات، يبدأ بحرف. الاسمان w وcp محجوزان، وكذلك default إلا لأول مجمّع في مجموعة جديدة. تُسمّى العُقد العاملة باسم المجموعة والمجمّع، مثل shop-gpu-1. ويصبح اسم المجمّع المحذوف متاحًا من جديد بعد زواله.
الحجمأحد أحجام العُقد العاملة التي تتضمنها خطتك. انظر الخطط والحدود.
المنطقةحيث تعمل عُقد المجمّع. توجد اليوم منطقة واحدة، jordan-east-1 في الإقليم jordan-east، وستكون المناطق الإضافية خيارات أخرى. تتوزّع العُقد على مضيفات منفصلة داخل منطقتها، وتبقى وحدات التخزين التي تنشئها فيها.
العُقد العاملةمن 1 إلى 20 في المجمّع. ويُحتسب حدّ العُقد العاملة لكل مجموعة في خطتك على كل المجمّعات معًا.

ما تحتفظ به العقدة العاملة لنفسها

تحتفظ كل عقدة عاملة بجزء من معالجاتها وذاكرتها لنظام تشغيلها ولوكيل Kubernetes وبيئة تشغيل الحاويات اللذين يشغّلانها، وتبدأ بإخلاء الـ Pods حين تنخفض ذاكرتها الحرة عن 100 ميبيبايت، فلا يستطيع Pod مشغول أن يحرم العقدة نفسها من الموارد. وما يتبقى هو السعة القابلة للتخصيص في العقدة: أقصى ما تستطيع الـ Pods لديك طلبه عليها.

الحجمالمحجوز: المعالجاتالمحجوز: الذاكرةالمعالجات القابلة للتخصيصالذاكرة القابلة للتخصيص
Free0.2 معالج676 ميبيبايت1.8 معالجنحو 3.2 جيبيبايت
Small0.2 معالج484 ميبيبايت1.8 معالجنحو 1.5 جيبيبايت
Medium0.2 معالج676 ميبيبايت1.8 معالجنحو 3.2 جيبيبايت
Large0.25 معالج868 ميبيبايت3.75 معالجنحو 7 جيبيبايت
  • تشمل الذاكرة المحجوزة حدّ الإخلاء البالغ 100 ميبيبايت. وتأخذ النواة (kernel) قدرًا إضافيًا صغيرًا قبل أن يحتسب Kubernetes أي شيء، ولهذا كُتب «نحو».
  • تعمل خدمات المجموعة نفسها، مثل DNS وشبكة الـ Pods، على العُقد العاملة أيضًا وتستهلك جزءًا من السعة القابلة للتخصيص.
  • يتشارك معالجا العقدة العاملة المجانية وقت معالجة نواة واحدة.
  • يعرض الأمر kubectl describe node <name> سعة العقدة العاملة، وما يقبل التخصيص منها، وما تطلبه الـ Pods عليها.

لا تحتفظ العُقد العاملة في المجموعات التي أُنشئت قبل وجود هذا الحجز بشيء سوى حدّ الإخلاء البالغ 100 ميبيبايت.

التسميات التي تضعها المنصّة

تحمل كل عقدة عاملة هذه التسميات، لاستخدامها في محدّدات العُقد وقواعد التقارب:

التسميةالقيمة
node.kubernetes.io/instance-typeحجم العقدة العاملة، مثل large
topology.kubernetes.io/regionالإقليم، jordan-east
topology.kubernetes.io/zoneالمنطقة، مثل jordan-east-1
node.sahabti.com/poolاسم المجمّع

تسمياتك وقيودك

يحمل المجمّع حتى 20 تسمية و10 قيود من وضعك. وتُطبَّق على كل عُقد المجمّع العاملة، القائمة منها والقادمة.

  • تتبع المفاتيح صيغة تسميات Kubernetes: اسم حتى 63 حرفًا، قد يسبقه نطاق وشرطة مائلة، مثل team أو example.com/tier.
  • للقيد مفتاح وقيمة اختيارية وأثر:
    • NoSchedule يُبعد عن عُقد المجمّع الـ Pods التي لا تحمل سماحًا مطابقًا.
    • PreferNoSchedule يُبعدها حين يتوفر مكان في غيرها.
    • NoExecute يُخرج كذلك الـ Pods الموجودة عليها ولا تحمل سماحًا له.
  • غيّرها على المجمّع لا على عُقده: كلما تغيّرت المجموعة، تحصل كل عقدة عاملة من جديد على تسميات مجمّعها وقيوده. أما التسميات والقيود التي تضعها أنت على عقدة بنفسك فتبقى كما هي، ما لم يضع المجمّع المفتاح نفسه.

شغّل حمل عمل على مجمّع واحد

امنح مجمّعًا اسمه gpu التسمية team=ml والقيد dedicated=gpu بالأثر NoSchedule. ثم اختر المجمّع واسمح بقيده:

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: trainer
spec:
  replicas: 2
  selector:
    matchLabels:
      app: trainer
  template:
    metadata:
      labels:
        app: trainer
    spec:
      nodeSelector:
        node.sahabti.com/pool: gpu
      tolerations:
        - key: dedicated
          operator: Equal
          value: gpu
          effect: NoSchedule
      containers:
        - name: trainer
          image: nginx:1.27-alpine
bash
kubectl apply -f trainer.yaml
kubectl get pods -l app=trainer -o wide

يجلب محدّد العُقد الـ Pods إلى المجمّع، ويتيح لها السماح تجاوز قيده. فدون المحدّد قد تعمل على مجمّعات أخرى أيضًا، ودون السماح لا يمكنها العمل على المجمّع المقيّد إطلاقًا.

القواعد

  • حدود الخطة: تُحتسب العُقد العاملة في كل المجمّعات من حدّ العُقد العاملة لكل مجموعة في خطتك، ولا يستخدم المجمّع إلا أحجام العُقد التي تتضمنها خطتك. أما خفض العدد وحذف مجمّع فمسموحان دائمًا.
  • الحصة: تأخذ كل عقدة عاملة ذات حجم مدفوع معالجاتها وذاكرتها وقرصها من حصة خطتك، كأي نسخة، فيحتاج المجمّع الجديد أو العُقد الإضافية إلى متّسع فيها، وتعرض النافذة ما تستهلكه. ولا تُحتسب العقدة العاملة المجانية ولا مستوى التحكم.
  • مجمّع واحد على الأقل: تحتفظ المجموعة بمجمّع عُقد واحد على الأقل. أضف مجمّعًا آخر قبل حذف الأخير.
  • مجمّع لخدمات المجموعة نفسها: لا تسمح خدمة DNS وخدمات المجموعة الأخرى بقيودك، لذا يجب أن يبقى مجمّع واحد على الأقل دون قيد NoSchedule أو NoExecute. ويُرفض أي تغيير يترك كل المجمّعات بمثل هذا القيد.
  • المفاتيح المحجوزة: المفاتيح ضمن نطاقات kubernetes.io وk8s.io وsahabti.com ونطاقاتها الفرعية تخصّ Kubernetes والمنصّة، فلا تستخدمها تسميات المجمّع وقيوده.