محتويات الدورة

Kubernetes / الأساسي: الكائنات وحدود التنفيذ / الدرس 2

الكائنات والتسميات ونطاقات الأسماء

اقرأ هوية الكائن وحقول المرغوب واستخدم المحددات بوعي وافهم حدود الفصل بالنطاق.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • اشرح النموذج والافتراضات والحدود المتعلقة بموضوع «الكائنات والتسميات ونطاقات الأسماء».
  • فسر المثالين وميز النية المعلنة من الدليل المثبت.
  • شخص الإخفاقات وعلل قرارات الاستعادة المشروحة دون تنفيذ عمليات عنقود.

قراءة غلاف الكائن

يحدد الكائن الإصدار والنوع والبيانات وحقولا خاصة. تستخدم موارد كثيرة spec للمرغوب وstatus للملاحظ وفق مخطط المورد. يدخل الاسم والنطاق في العنوان، وتميز UID حياة معينة ولو أعيد الاسم. تدعم resourceVersion التزامن وليست مراجعة عمل. يعرض المثال الأول ConfigMap توضيحية كاملة بصيغة v1 لا ترسل للخادم ولا تثبت وجود النطاق.

yaml ConfigMap توضيحية بصيغة v1
apiVersion: v1
kind: ConfigMap
metadata:
  name: booking-display
  namespace: training
  labels:
    app: booking
data:
  DISPLAY_MODE: compact

تحدد metadata كائنا نطاقيا وتحمل data نصوصا غير سرية. لا ينشئ تحليل YAML النطاق أو يجيز الوصول.

معاملة الأسماء والنطاقات بوعي

تنتمي الموارد النطاقية لنطاق ولا تنتمي العنقودية. لا تجعل metadata.namespace موردا مثل Node أو ClusterRole محليا. اختر النطاق الصحيح وحدد مراجع المالك. يغير الحذف والإنشاء الحياة والتوابع ولو بقي الاسم. ضع هوية التطبيق المستقرة في التسميات واستخدم UID للأدلة الحساسة للحياة. لا تفترض أن اسم ملف أو مجلد يحدد النطاق؛ فالكائن وسياق الطلب يحددانه.

استخدام التسميات كعقود اختيار

التسميات بيانات تعريف يستخدمها الاختيار وليست مخزن أسرار. قد تضم Service كل Pod تطابق app=booking في نطاقها مهما كان ملفها. تحاكي الشيفرة التطابق الدقيق، وتدعم بعض الواجهات تعابير مجموعات أيضا. تحمل annotation بيانات غير تعريفية ولا تستبدل تسمية محدد. راجع تغيير التسميات كتوجيه؛ فقد يزيل اسما بسيطا النقاط أو يضم حملا آخر، وقد يمنع المتحكم تغيير المحدد بعد الإنشاء.

python اختيار تسمية دقيق غير مؤذ
selector = {"app": "booking", "tier": "api"}
pods = [{"name": "a", "labels": {"app": "booking", "tier": "api"}},
        {"name": "b", "labels": {"app": "booking", "tier": "worker"}}]
print([pod["name"] for pod in pods if all(pod["labels"].get(k) == v for k, v in selector.items())])
الناتج المتوقع
['a']

تطابق a الاصطناعية الشرطين فقط. لا يحل الحساب نقاطا حقيقية أو كل معاملات المحدد.

النطاق مجال وليس عزلا كاملا

تنظم النطاقات الأسماء والوصول والحصص وربط السياسة، ولا تعزل وحدها الشبكة والنواة والاعتمادات والمديرين. يحتاج تعدد المستأجرين تهديدا واضحا وضوابط إذن وقبول وشبكة وموارد وتشغيل، وقد يحتاج حملا فصلا أقوى. لا تضع سرا في annotation لأن النطاق اسمه خاص. حدد القراءة والتعديل وإنشاء الأحمال؛ فقد يمنح الإنشاء وصولا غير مباشر للاعتمادات والهويات. تحقق من العزل ولا تستنتجه من التسمية.

فحص الصياغة والملكية منفصلين

يفحص محلل YAML البنية وتفحص الواجهة المخطط ويطبق القبول السياسة. لا يثبت أي منها وحده الهدف أو السلوك. قارن الحقول بملكيتها وتجنب أدوات تتصارع عليها. تتتبع server-side apply مديري الحقول لكن يحتاج التعارض قرارا لا فرضا أعمى. ميز السجل التوضيحي والبيان، وراجع النطاق والنوع والتسميات والمراجع قبل التغيير المصرح. لا ينفذ الدرس تطبيقا أو حذفا أو اكتشافا.

الأخطاء الشائعة وإصلاحها

تختار Service أحمالا غير مقصودة

لماذا يحدث؟
تطابق تسمية واسعة حملا آخر.
كيف تصلحه؟
راجع المحدد وعقد التسميات معا.
كيف تتجنب تكراره؟
اختبر الضم والاستبعاد قبل التغيير.

يُعد النطاق حدا أمنيا كاملا

لماذا يحدث؟
اختلط التنظيم بالعزل المفروض.
كيف تصلحه؟
حدد وتحقق من ضوابط الإذن والسياسة والتشغيل.
كيف تتجنب تكراره؟
راجع تهديد المستأجر والسلطة العنقودية.

تكتب الأدوات فوق حقول بعضها

لماذا يحدث؟
لم تحدد ملكية المرغوب.
كيف تصلحه؟
حدد الملكية وراجع التعارض صراحة.
كيف تتجنب تكراره؟
حدد مسؤولا لكل شأن مدار.

اختبر فهمك

1. هل تجعل namespace: training المورد ClusterRole محليا؟

اعرض الحل المشروح

لا؛ فالنطاق خاص بالنوع. Role نطاقية وClusterRole عنقودية ويحدد الربط منح الصلاحيات. اقرأ الدور والربط قبل استنتاج الإذن.

2. تعاد Pod بالاسم نفسه. ما الذي يميز حياتها الجديدة؟

اعرض الحل المشروح

تتغير UID. احفظ النطاق والاسم والمعرف والزمن بدلا من الاسم المعاد فقط. تحدد التسميات التطبيق المنطقي ولا تثبت بقاء النسخة نفسها.

أهم ما تعلمته

  • يحدد الكائن الإصدار والنوع والبيانات وحقولا خاصة.
  • التسميات بيانات تعريف يستخدمها الاختيار وليست مخزن أسرار.
  • يفحص محلل YAML البنية وتفحص الواجهة المخطط ويطبق القبول السياسة.

المراجع الرسمية