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

Kubernetes / المتقدم: التوسع والمرونة ودورة الحياة / الدرس 13

المتحكمات والموارد المخصصة وOperators

صمم حلقات متقاربة بمخطط وملكية وحالة وتنظيف صريح لا باعتبار Operator خبرة تطبيق تلقائية.

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

أهداف الدرس

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

توسيع الواجهة بعقد

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

yaml مقتطف مخطط CRD توضيحي
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
# Non-runnable excerpt: metadata, names, and version wrapper omitted.
spec:
  scope: Namespaced
  versions:
    - name: v1
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              required: [replicas]
              properties:
                replicas: {type: integer, minimum: 0}

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

جعل التسوية آمنة للتكرار

قد تتكرر التسوية أوتتأخر أوتقطع بعد تغير الدليل. احسب الفعل من الحالي واجعل الخارجي آمنا للتكرار. تربط المحاكاة تخصيصا اصطناعيا بـUID وتعيده عند التكرار. تحتاج الحقيقة ملكية دائمة وفشلا وتسوية المهلة المجهولة. لا يكرر التعطل بعد نجاح اتصال وقبل الحالة الموارد. لا تفترض حدثا لاستدعاء أوتسليما مرة واحدة.

python نموذج تسوية متكررة غير مؤذ
allocations = {}
def ensure(uid):
    if uid not in allocations:
        allocations[uid] = "lab-resource-" + str(len(allocations) + 1)
    return allocations[uid]
print(ensure("lab-uid-a"), ensure("lab-uid-a"))
print(len(allocations))
الناتج المتوقع
lab-resource-1 lab-resource-1
1

يعيد تكرار UID تخصيصا واحدا. القاموس غير دائم ولا يمثل قفلا موزعا أوواجهة مزود.

الإبلاغ عن الحالة دون صراع

استخدم spec للطلب وstatus للملاحظة وفق المخطط والفرعي. عبّر بشروط مفيدة وسياق مراجعة يميز القديم، ولا تمح نية جديدة. أعد القراءة والحساب عند تعارض التزامن لا الكتابة القديمة. حدد العمل والتأخير وتجنب حلقة تغرق الواجهة. تحتاج المتحكمات ملكية صريحة كي لا يعكس أحدها الآخر دائما.

معاملة finalizers التزامات تنظيف

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

اختبار انتقالات الفشل لا الحلقة السليمة فقط

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

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

تكرر التسوية أجساما خارجية

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

يبقى الحذف معلقا

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

يمحو المتحكم نية أحدث

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

اختبر فهمك

1. ينجح إنشاء خارجي ثم يتعطل المتحكم قبل الحالة. ماذا تفعل الحلقة التالية؟

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

اكتشف أوأعد الاستخدام بمفتاح ملكية أومنع تكرار دائم لا إنشاء أعمى. تحقق من الواقع وحدّث الملاحظة؛ فلا يكفي علم محلي لم يحفظ قبل التعطل.

2. لماذا لا تكون إزالة finalizer إصلاحا عاديا للتعليق؟

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

تتجاوز التزاما وقد تسرب أوتخالف الاحتفاظ. حدد المالك والتنظيف والخارجي وسلطة الاستعادة أولا؛ ويحتاج الاستثناء دليلا لا أمر حذف عام.

أهم ما تعلمته

  • تضيف CRDs موارد وتنفذ المتحكمات السلوك؛ ولا يبدأ التعريف التسوية وحده.
  • استخدم spec للطلب وstatus للملاحظة وفق المخطط والفرعي.
  • اختبر الخطأ والتكرار والتعارض والنجاح الجزئي والحذف والغياب والإعادة.

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