وحدة 5 / 11

Kubernetes: البيان والخوذة والتنسيق المدعوم بالذكاء الاصطناعي

المكاسب:

  • القدرة على فهم الكائنات الأساسية (Pod، Deployment، Service، ConfigMap، Secret، Namespace) والفلسفة التصريحية لـ Kubernetes وإنتاج بيانات قوية للذكاء الاصطناعي
  • القدرة على جعل البيانات جاهزة للإنتاج وآمنة مع حدود الموارد والفحوصات الصحية (المسبارات) وعلامات الصور الثابتة وRBAC الضيقة
  • القدرة على التحقق من السياق الصحيح قبل التنفيذ وتطبيق نظام التشغيل الجاف مع التشغيل الجاف/الفرق

من السهل تشغيل حاوية واحدة. ولكن إنشاء نظام ينشر مئات الحاويات عبر عشرات الخوادم، ويعيد تشغيله تلقائيًا عندما يتعطل أحد هذه الخوادم، ويكرره عندما يزيد الحمل، ويحدثه دون أي توقف عن العمل؟ هذا هو التنسيق، والأداة القياسية للصناعة هي Kubernetes (K8s للاختصار) - النظام الأساسي الذي يقوم تلقائيًا بنشر الحاويات وتوسيع نطاقها وإدارتها عبر المجموعة. Kubernetes قوي ولكنه معقد: يتم تعريف كل شيء من خلال ملفات YAML طويلة وحساسة للمسافات البادئة - تسمى البيانات. هذا هو المكان الذي يمنح فيه الذكاء الاصطناعي نفسًا من الهواء النقي؛ ومع السياق الصحيح، فإنه ينتج هذه البيانات بسرعة ويفك رموز أخطائها الغامضة.

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

كائنات Kubernetes الأساسية

لتدقيق Kubernetes، يجب أن تعرف المفاهيم الأساسية:

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

Helm هو "مدير الحزم" في Kubernetes: فهو يسمح لك بتصميم البيانات المتكررة (المخططات) وتثبيتها بقيم مختلفة في بيئات مختلفة باستخدام أمر واحد. يقوم الذكاء الاصطناعي بإنتاج بيان أولي ومخطط هيلم.

لماذا هناك الكثير من الأشياء؟ نظرًا لأن الفلسفة الأساسية لـ Kubernetes هي تعريفية: فأنت تحدد "كيف تريد أن يبدو النظام في النهاية" (على سبيل المثال، "لديك دائمًا 3 نسخ من هذا التطبيق قيد التشغيل")، بينما يقوم Kubernetes باستمرار بتحريك الحالة الحالية أقرب إلى تلك الحالة المرغوبة. إذا ماتت الكبسولة، فإنها تخلق واحدة جديدة؛ إذا تعطلت إحدى العقد، فإنه ينقل عبء العمل إلى عقدة أخرى. لهذا السبب فإن البيانات ليست أوامر "افعل"، بل وصفات "فليكن الأمر هكذا". يعد فهم هذا التمييز أمرًا بالغ الأهمية عند قراءة البيانات التي ينتجها الذكاء الاصطناعي: يصف كل مجال جزءًا من الحالة المرغوبة للنظام. يعني النطاق الخاطئ أن Kubernetes يعمل لتحقيق هدف خاطئ، ويتم تنفيذ هذا الهدف بصمت وإصرار.

نصيحة: في Kubernetes، أداة الاختبار الآمن الأكثر أهمية هي kubectl Apply --dry-run=server -f file.yaml: فهي توضح ما إذا كان الخادم سيقبل وما يجب فعله دون تطبيق البيان فعليًا. تأكد من تشغيل التشغيل الجاف وkubectl diff قبل تطبيق البيان على المنتج.

خطوة بخطوة: إنشاء البيانات باستخدام الذكاء الاصطناعي

  1. وصف التطبيق والحاجة. اسم الصورة، المنفذ، عدد النسخ المتماثلة، حدود الموارد (وحدة المعالجة المركزية/الذاكرة).
  2. طلب النشر + الخدمة. عادة ما يكون كلاهما مطلوبًا معًا.
  3. تكوين منفصل وسرية. الإعدادات على ConfigMap، والقيم الحساسة على Secret.
  4. إضافة الشيكات الصحية. يعتبر كل من lifenessProbe (هل هو مباشر) وreadyProbe (هل هو جاهز لحركة المرور) أمرًا بالغ الأهمية.
  5. تعيين حد للموارد. بدون طلبات/حدود، يمكن للكبسولة أن تستهلك العقدة بأكملها.
  6. تحقق باستخدام `--dry-run` و`diff`، ثم قم بالتطبيق. أولاً في مساحة الاسم الاختبارية.

الأمان: المخاطر الخاصة بـ Kubernetes

  1. السر ليس سرًا حقًا - إنه مجرد قاعدة 64. يقوم كائن Kubernetes Secret base64 بتشفير القيم؛ هذا ليس تشفيرًا، بل يمكن فك تشفيره بسهولة. للحصول على خصوصية حقيقية، يلزم تشفير etcd وخزينة خارجية (Vault، مدير الأسرار السحابية). لا تقم أبدًا بتقديم بيانات سرية مباشرة إلى Git (توجد حلول لذلك مثل الأسرار المختومة/الأسرار الخارجية).
  2. تعيين حد للموارد. يمكن أن تؤدي الكبسولة بلا حدود إلى تعطل العقدة بأكملها بسبب تسرب الذاكرة.
  3. الحد الأدنى من السلطة (RBAC). باستخدام التحكم في الوصول المستند إلى الدور، يتمتع كل خدمة/مستخدم بالأذونات التي يحتاجها فقط. يوفر الذكاء الاصطناعي أحيانًا إدارة مجموعة كبيرة؛ تضييق هذا.
  4. لا تستخدم علامة الصورة "الأحدث". أنت لا تعرف الإصدار الذي يعمل ولا يمكنك استرجاعه.
تنبيه: يمكن أن يؤدي حذف kubectl أو التطبيق غير الصحيح إلى تدمير النشر المباشر. تأكد من التحقق من مساحة الاسم التي أنت فيها (السياق الحالي لتكوين kubectl) قبل تشغيل الأوامر؛ يعد العمل العرضي كارثة شائعة في سياق الإنتاج.

بيان أولي مقابل جدول هيلم

المعيار

بيان YAML الخام

مخطط الخوذة

التثبيت

كوبيكتل تطبيق -f

تثبيت الدفة

الوسائط المتعددة (تطوير / إنتاج)

النسخ واللصق معرض للخطأ

مخطط واحد، قيم مختلفة.yaml

الإصدار/التراجع

باليد

سهل مع التراجع عن الدفة

منحنى التعلم

منخفض

متوسطة

متى

بيئة صغيرة واحدة

الوسائط المتعددة، الخدمة المتكررة

ثلاث حالات صغيرة

الحالة 1 - سر الخدمة المحطمة. تم إعادة تشغيل الكبسولة باستمرار (CrashLoopBackOff). أعطى الفريق السجلات والبيان إلى الذكاء الاصطناعي؛ وأظهر الذكاء الاصطناعي أن الكبسولة لم تعتبر أبدًا "جاهزة" لأن مسبار الاستعداد كان يبحث في المنفذ الخطأ. قاموا بإصلاح المنفذ، وأصبحت الخدمة مستقرة خلال 10 دقائق. قد يستغرق إنشاء هذه العلاقة يدويًا ساعات.

الحالة 2 - عدم وضع الحدود أدى إلى كسر العقدة. لم تكن هناك حدود للنشر؛ أدى تسرب الذاكرة إلى تضخم الكبسولة وتعطل العقدة بأكملها، مما أدى إلى تعطيل الخدمات المجاورة أيضًا. بعد الحادث، جعلوا الذكاء الاصطناعي يقول "أضف طلبات وحدود معقولة لوحدة المعالجة المركزية/الذاكرة لجميع عمليات النشر" وجعلوها قياسية. خط واحد مفقود يكلف ساعات من التوقف.

الحالة 3 - تم التقاط RBAC كبير. أثناء التحقيق، تم اكتشاف أن بيان ServiceAccount الذي تم إنشاؤه بواسطة الذكاء الاصطناعي مرتبط بدور مسؤول المجموعة - مما يعني أن الخدمة يمكنها إدارة المجموعة بأكملها. قام الفريق بتضييق نطاق الإذن ليقتصر على قراءة البودات الموجودة في مساحة الاسم الخاصة بهم فقط. أدى مبدأ الامتياز الأقل إلى إغلاق ثغرة أمنية.

أربعة قوالب قابلة للنسخ

1) النشر + إنتاج الخدمة:

اكتب بيان النشر والخدمة لـ Kubernetes. التطبيق: [AD]، الصورة: [الصورة: إصدار ثابت]، المنفذ: [X]، النسخة المتماثلة: [N]. القواعد: - إضافة طلبات وحدود وحدة المعالجة المركزية/الذاكرة. - تحديد مستوى الحيوية ومسبار الاستعداد. - قراءة التكوين من ConfigMap، سر من الكائن السري؛ لا تقم بتضمين القيم في البيان، استخدم العناصر النائبة. - لا تستخدم علامة الصورة ": الأحدث". أعط مع الوصف.

2) حل الخطأ الواضح:

الكبسولة الحالية في حالة [CrashLoopBackOff / Pending / ImagePullBackOff]. وفقًا للبيان التالي ومخرجات "وصف kubectl"، قم بإدراج الأسباب الجذرية المحتملة بترتيب الاحتمالية وأصدر أمر التحقق لكل منها. البيان: [YAML] الوصف: [الإخراج]

3) التحقق من الأمن/النزاهة:

تحقق من بيان Kubernetes هذا: هل حد المورد مفقود، هل هو مفقود على الأرجح، هل هناك علامة: أحدث، هل هناك RBAC/إذن واسع جدًا، هل السر مضمن في البيان؟ اكتب النتائج حسب الأهمية ومع التصحيح. البيان: [YAML]

4) التحويل إلى مخطط الخوذة:

قم بتحويل البيانات الأولية التالية إلى مخطط Helm قابل لإعادة الاستخدام: ما هي القيم التي يجب أن تخرج إلى value.yaml (الصورة، النسخة المتماثلة، المصدر، البيئة)؟ إظهار بنية المخطط وقيم العينة.yaml.Manifests: [YAML]

موجه ضعيف / موجه قوي

ضعيف: "اكتب Kubernetes YAML لطلبي."

النتيجة: نشر بدون مسبار وبلا حدود مع: أحدث علامة، مع تضمين السهل السري؛ غير آمنة وهشة في همز.

Strong: "اكتب Kubernetes Deployment + Service. Image myapp:1.4.2، 3 نسخ متماثلة، 8080 منفذًا. وحدة المعالجة المركزية (CPU) 100m-500m، الذاكرة 128Mi-512Mi إضافة طلبات/حدود. ضع مسبار الحياة لـ /healthz، ومسبار الاستعداد لـ /ready. اقرأ السر من الكائن السري، ولا تقم بتضمينه في البيان. قدم مع الوصف."

الفرق: إصدار الموجه الثاني يعطي النطاق وحدود الموارد والفحوصات الصحية والقاعدة السرية؛ الإخراج قريب من الإنتاج وآمن.

الأخطاء الشائعة

  • عدم وضع حدود للموارد. يمكن لكبسولة واحدة أن تستهلك العقدة بأكملها.
  • عدم إضافة فحص صحي (مسبار). لا يستطيع Kubernetes اكتشاف الكبسولة المعطلة/غير الجاهزة.
  • العلامة `:الأحدث`. يصبح من غير الواضح ما هو الإصدار قيد التشغيل، ولا يمكن التراجع عنه.
  • تسليم السر مباشرة إلى Git. Base64 ليس تشفيرًا؛ الجميع يحلها.
  • تشغيل الأوامر في سياق/مساحة اسم خاطئة. الطريقة الأكثر شيوعًا للتعطل في همز.
  • تخطي `--التشغيل الجاف`/`الفرق`. عدم رؤية ما سيحدث قبل التنفيذ.

باختصار

يعد Kubernetes منسقًا قويًا ولكنه معقد يقوم تلقائيًا بنشر الحاويات وتوسيع نطاقها وتحسينها عبر المجموعة؛ يتم تعريف كل شيء من خلال YAMLs الواضحة، والتي تصممها شركة Helm. يُنتج الذكاء الاصطناعي بسرعة بيانات النشر/الخدمة ومخططات Helm، ويحل الأخطاء الغامضة - ولكن عليك أن تطلب صراحةً الحد الأقصى للموارد، والتحقق من السلامة، وعلامة الصورة غير القابلة للتغيير، وRBAC الضيق، وقواعد الأمان السرية. --التشغيل الجاف والفرق والتحقق من السياق الصحيح هي عادات تمنع تعطل المنتج.

مهمة التطبيق

اطلب من الذكاء الاصطناعي إنشاء بيان لتطبيق نموذجي باستخدام قالب "النشر + إنشاء الخدمة". بعد ذلك: (1) قم بالتحقق من حد الموارد، والتحقيق، والأحدث، والسرية باستخدام قالب "التحقق من الأمان/السلامة"؛ (2) قم بتشغيل kubectl Apply --dry-run=server على مجموعة اختبار/minikube إن أمكن وقراءة المخرجات؛ (3) لاحظ عنصري السلامة/المتانة الأكثر أهمية الذين تجدهما مفقودين.

قائمة مرجعية

  • [ ] أضفت إصدار الصورة وعدد النسخ المتماثلة وحدود المنافذ والموارد إلى طلبي.
  • [ ] أضفت مسبار الحيوية والجاهزية إلى البيان.
  • [ ] تم إصلاح علامة الصورة؛ لم أستخدم :latest.
  • [ ] السر غير مضمن في البيان؛ لقد استخدمت كائنًا سريًا/قبوًا خارجيًا.
  • [ ] لقد قمت بتضييق نطاق RBAC/الأذونات إلى الحد الأدنى من الأذونات.
  • [ ] قبل التقديم، تأكدت من أنني كنت في السياق الصحيح وأن --dry-run/diff مخرجات.