حاويات كوبرنيتس المؤقتة: تعزيز الأمان وتبسيط استكشاف الأخطاء وإصلاحها في تجمعات الإنتاج

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

ما هي الحاويات المؤقتة؟

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

النقاط الرئيسية

  • قصيرة العمر: الحاويات المؤقتة مخصصة فقط للتصحيح أو حل المشكلات.
  • غير مدمرة: لا تؤثر على الحاويات التطبيقية الموجودة في البود.
  • مشاركة الموارد: تشارك الموارد مثل أحجام التخزين ومساحات الشبكة مع البود، مما يجعل التصحيح أكثر قوة.

اعتبارات الأمان مع الحاويات المؤقتة

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

حالات الاستخدام

  • استكشاف أعطال التطبيق: عندما تحتاج إلى فحص السجلات أو تشغيل أدوات تصحيح الأخطاء في حاوية معطلة أو تتعطل، تتيح لك الحاويات المؤقتة الدخول إلى بيئة تشغيلية دون تغيير تكوين الحاوية الرئيسية.
  • تصحيح الشبكة: يمكنك تثبيت أدوات تصحيح الأخطاء (مثل tcpdump، netstat) في الحاوية المؤقتة لتشخيص مشكلات الشبكة داخل مساحة أسماء الشبكة الخاصة بالحاوية.
  • التحقق من نظام الملفات الحي: إذا كنت تشك في تلف الملفات أو مسارات الملفات غير الصحيحة، تتيح لك الحاويات المؤقتة فحص نظام الملفات في الوقت الحقيقي.

المتطلبات الأساسية

  • إصدار Kubernetes: تتطلب الحاويات المؤقتة على الأقل Kubernetes 1.23+ حيث تتوفر ميزة الحاويات المؤقتة بشكل عام (GA). في إصدارات Kubernetes الأقدم، قد تحتاج إلى تفعيل بوابة الميزة EphemeralContainers.
  • kubectl: تأكد من أن عميل kubectl المحلي لديك هو على الأقل بنفس الإصدار أو إصدار أحدث من وحدة التحكم في الكلاستر لديك.
  • أذونات RBAC كافية: تحتاج إلى إذن لاستخدام أمر kubectl debug ولتحديث الـ Pods (يتم إضافة الحاوية المؤقتة عبر تحديث مواصفات الـ Pod).

دليل خطوة بخطوة: استخدام الحاويات المؤقتة

فيما يلي عملية عامة ستعمل في أي بيئة Kubernetes، بما في ذلك EKS (خدمة Kubernetes المرنة على AWS)، AKS (خدمة Kubernetes على Azure)، GKE (محرك Kubernetes من Google)، أو الكلاسترات المحلية. سنركز على أمر kubectl debug، وهو الآلية الرئيسية لإضافة الحاويات المؤقتة.

تحقق من تكوين الكلاستر لديك

Shell

 

  • تأكد من أن نسخة الخادم لديك هي على الأقل 1.23.
  • أكد أن نسخة العميل لديك متوافقة أيضًا.

إذا كنت في بيئة مُدارة مثل EKS أو AKS، تحقق من إصدار الكلاستر من لوحة التحكم لمزود السحابة أو واجهة سطر الأوامر للتأكد من أنه 1.23 أو أحدث.

تحديد الـ Pod الذي تريد تصحيحه

قم بإدراج الـ Pods في مساحة اسم محددة:

Shell

 

اختر اسم الـ Pod الذي تحتاج إلى استكشافه، على سبيل المثال: my-app-pod-abc123.

إضافة حاوية مؤقتة باستخدام kubectl debug

استخدم أمر kubectl debug لإضافة حاوية مؤقتة. على سبيل المثال، سنستخدم صورة Ubuntu بسيطة:

Shell

 

إليك تحليل الأعلام:

  • my-app-pod-abc123: اسم الـ Pod الموجود.
  • –image=ubuntu: صورة Docker التي ستستخدم للحاوية الزائية.
  • –target=my-container: (اختياري) يحدد الحاوية في الـ Pod التي تريد استهدافها لمشاركة مساحة الأسماء. عادةً ما تكون هذه هي الحاوية الرئيسية في الـ Pod.
  • –interactive=true و –tty=true: تسمح لك بالحصول على جلسة شل داخل الحاوية الزائية.

بمجرد تشغيل الأمر أعلاه، ستحصل على موجه شل في الحاوية الزائية داخل الـ Pod الحالي. يمكنك الآن تشغيل أوامر تصحيح الأخطاء مثل ls، ps، netstat، أو تثبيت حزم إضافية.

تأكيد إنشاء الحاوية الزائية

في نافذة الأوامر الأخرى، أو بعد الخروج من جلسة شل الحاوية الزائية، قم بتشغيل:

Shell

 

يجب أن ترى قسمًا جديدًا تحت spec أو status يصف الحاوية الزائية.

تصحيح الأخطاء واستكشاف الأخطاء

من داخل الحاوية الزائية، يمكنك:

  • فحص السجلات أو تكوين التطبيق.
  • استخدام أدوات تصحيح الأخطاء مثل curl، wget، telnet للتحقق من توصيل الشبكة.
  • تفحص المتغيرات البيئية لتأكيد تكوين تطبيقك.
Shell

 

تنظيف الحاويات الزائية

تتم إزالة الحاويات المؤقتة تلقائيًا عند تدمير الـ Pod أو بعد إزالتها يدويًا. لإزالة الحاوية المؤقتة من الـ Pod دون تدمير الـ Pod بالكامل (على الإصدارات المدعومة)، يمكنك تعديل مواصفات الـ Pod. ومع ذلك، عادةً ما لا يُقصد بالحاويات المؤقتة أن تدوم طويلاً. بمجرد حذف الـ Pod أو تقليص حجم النشر الخاص بك، سيتم أيضًا إزالة الحاوية المؤقتة.

ملاحظات محددة للخدمات المدارة

أمازون EKS

  • تأكد من أن مجموعة EKS الخاصة بك تعمل على Kubernetes 1.23 أو أعلى.
  • أكد أن أذونات IAM تسمح لك بتنفيذ kubectl debug.
  • إذا كنت تستخدم إصدارات EKS أقدم (1.22 أو سابقًا)، ستحتاج إلى تمكين ميزة EphemeralContainers.

أزور AKS

  • استخدم Azure CLI (az aks update) لترقية مجموعة AKS الخاصة بك إلى إصدار متوافق إذا لزم الأمر.

تأكد من أن سياق kubectl مضبوط على مجموعة AKS:

Shell

 

مجموعات أخرى مدارة أو محلية

  • تحقق من وثائق مجموعتك أو اطلب من مزودك تأكيد تمكين الحاويات المؤقتة.
  • تحتوي معظم الحلول الحديثة المحلية (OpenShift، Rancher، إلخ) على الحاويات المؤقتة مفعلة بشكل افتراضي من Kubernetes 1.23 فصاعدًا، ولكن قد تحتاج إلى تمكين ميزة البوابة يدويًا إذا كنت تستخدم إصدارًا أقدم.

أفضل الممارسات

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

الاستنتاج

الحاويات العابرة هي طريقة متعددة الاستخدامات وقوية لتحديد مشاكل الوقت الحقيقي دون التأثير على حاويات التطبيق الأساسية. سواء كنت تقوم بتشغيل Kubernetes على EKS، AKS، on-prem، أو حلاً مُدارًا آخر، يمكن لفهم واستخدام الحاويات العابرة أن يقلل بشكل كبير من وقت الاستعادة المتوسط (MTTR) ويحسن الكفاءة التشغيلية.

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

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

Source:
https://dzone.com/articles/enhancing-security-troubleshooting-in-production-clusters