Software Development5 min read1040 words

ما هو كوبرنيتس؟

Ece Kaya

Ece Kaya

Content Strategist

Cloud infrastructure & B2B marketing

ما هو كوبرنيتس؟

شهدت عالم تطوير البرمجيات تحوّلًا مذهلًا في العقد الماضي. انتقلنا من التطبيقات الأحادية إلى الخدمات الصغيرة، ومن الخوادم الفيزيائية إلى الحاويات، ومن النشر اليدوي إلى التكامل المستمر والنشر (CI/CD). بينما لعبت تقنية الحاويات دورًا حاسمًا في هذا التحول، فإن النظام الذي فتح أبواب عصر جديد لإدارة هذه الحاويات هو Kubernetes.

ما هو Kubernetes؟ هل هو مجرد نظام تنسيق؟ أم هو معيار بنية تحتية أحدث ثورة في نشر البرمجيات؟ في هذه المقالة سنتناول كل جانب من جوانب Kubernetes بدءًا من الأسس وصولاً إلى سيناريوهات الاستخدام المتقدمة...

ولادة Kubernetes وعملية تطوره

Kubernetes هو نسخة حديثة من النظام الداخلي المعروف باسم Borg والذي استخدمته Google لسنوات. كان Borg منصة ضخمة قادرة على تشغيل الآلاف من التطبيقات على مئات الآلاف من الخوادم. أرادت Google نقل هذه التجربة إلى عالم المصادر المفتوحة وأعلنت عن Kubernetes في عام 2014.

تمت إدارة Kubernetes بسرعة تحت مظلة مؤسسة Cloud Native Computing Foundation (CNCF). تعتبر CNCF بنية موجهة من قبل المجتمع تدعم تطوير Kubernetes. اليوم، Kubernetes هو منصة تحتوي على نظام بيئي ضخم تدعمه جميع مزودي الخدمات السحابية الكبار مثل AWS وAzure وGoogle Cloud.

فلسفة Kubernetes: بنية تحتية تعبيرية

واحدة من الجوانب التي تميز Kubernetes هي تبنيه لنهج تعبيرية. في الطرق التقليدية، يقوم مدير النظام بتعريف كل خطوة يدويًا (إلزامي). في Kubernetes، يقوم المطور أو مهندس DevOps بتعريف "كيف يجب أن يكون" النظام؛ حيث يتخذ Kubernetes الخطوات اللازمة لتحقيق ذلك.

هذا يضمن أن تكون البنية التحتية قابلة لإعادة الإنتاج (idempotent). بمعنى أنه عندما تحدث مشكلة في النظام، يحاول Kubernetes تلقائيًا العودة إلى الحالة المعرفة.

الهيكل الأساسي لـ Kubernetes

لقد حددنا مكونات Kubernetes في وقت سابق بشكل عام. دعنا نغوص في التفاصيل أكثر.

Control Plane (وحدة التحكم)

تتكون وحدة التحكم، التي تعتبر مركز الخزن لـ Kubernetes، من الخدمات التالية:

· kube-apiserver: نقطة النهاية المركزية الخاصة بالواجهة البرمجية التي تتواصل معها جميع المكونات.

· etcd: قاعدة بيانات موزعة من نوع key-value. يتم تخزين حالة Kubernetes هنا.

· kube-scheduler: يقوم بتعيين Pods إلى العقد المناسبة. يأخذ في الاعتبار العديد من المعايير مثل وحدة المعالجة المركزية والذاكرة ووسم العقد وقواعد القرب/المعاداة.

· controller-manager: منظم يقوم بإدارة حلقات التحكم مثل ReplicaSet وDaemonSet وNodeController.

Node (نقاط العمل)

تتكون العقد من خوادم فعلية أو افتراضية تعمل عليها التطبيقات. تحوي كل عقدة على ما يلي:

· kubelet: عميل يتواصل مع وحدة التحكم.

· container runtime: مثل Docker، أو containerd، وهو مشغل حاويات.

· kube-proxy: يقوم بتوجيه حركة المرور الشبكية، ويضمن مطابقة عناوين IP للخدمات.

المفاهيم الأساسية لـ Kubernetes

Pod

يعتبر Pod أصغر وحدة يمكن لـ Kubernetes تشغيلها. تشارك الحاويات ضمن نفس Pod نفس عنوان IP ومساحة التخزين ودورة الحياة. عادةً ما يحتوي كل Pod على حاوية تطبيق واحدة.

ReplicaSet

يضمن أن عددًا محددًا من الـ Pods يعمل دائمًا. على سبيل المثال، إذا كان هناك تطبيق ويب به 3 نسخ، فإن النظام سيقوم تلقائيًا بإنشاء نسخة جديدة بمجرد تعطل إحدى النسخ.

Deployment

يدير ReplicaSets. يستخدم لإدارة إصدارات التطبيقات، وإجراء تحديثات متتالية، وتوفير إمكانية التراجع.

Service

بما أن Pods تُنشأ وتُحذف بشكل ديناميكي، فإن عناوين IP لها متغيرة. تُخفي الخدمة هذه المتغيرات وتسمح بالوصول إلى التطبيقات من خلال عنوان DNS ثابت. أنواع الخدمات هي:

· ClusterIP: يسمح بالوصول فقط من داخل المجموعة.

· NodePort: يتيح الوصول من العالم الخارجي.

· LoadBalancer: ينشئ موزع تحميل مدعوم من مزود الخدمة السحابية.

Namespace

يستخدم لتقسيم الموارد منطقيًا. يوفر إدارة موارد معزولة في بيئات مختلفة مثل "dev"، "test"، "prod".

المكونات المتقدمة

StatefulSet

تم تصميمه لتطبيقات تعتمد على الحالة مثل قواعد البيانات. يمنح الـ Pods هويات ثابتة ودائمة.

ConfigMap و Secret

يستخدم لتخزين تكوينات التطبيقات والمعلومات السرية (مثل كلمات المرور ورموز API) خارج الحاوية.

DaemonSet

يضمن تشغيل نفس الـ Pod على كل عقدة. غالبًا ما يستخدم لجمع السجلات (مثل fluentd) ومراقبة العقد (مثل node-exporter).

CronJob

ينفذ المهام المجدولة. على سبيل المثال، إجراء نسخ احتياطي في الساعة 3 صباحًا كل ليلة.

سيناريوهات الاستخدام في العالم الحقيقي

1. بنية الخدمات الصغيرة

يمكن نشر كل ميزة (مثل الكتالوج والدفع وإدارة المستخدمين) لموقع التجارة الإلكترونية كخدمة صغيرة منفصلة على Kubernetes. يتم إدارة هذه الخدمات بشكل معزول ومستقل وقابل للتوسع.

2. أتمتة CI/CD

عند تنفيذ دفع Git، يتم تلقائيًا إنشاء صورة جديدة، واختبارها، ونشرها على Kubernetes. يتم دمج هذه العملية مع أدوات مثل ArgoCD أو Jenkins-X.

3. نشرات التعلم الآلي

تستخدم عقدًا مدعومة من GPU لتدريب النماذج. يمكن بعد التدريب، حزمة النموذج كحاوية ونشرها على Kubernetes كواجهة برمجة التطبيقات (MLOps).

4. سيناريوهات السحابة الهجينة

يمكن أن تعمل نفس البنية التحتية على كل من مركز البيانات المحلي وعلى أي مزود سحابي تختاره. وهذا يوفر قابلية النقل والاستقلالية.

وجهة نظر الأمان

يجب تناول أمان Kubernetes من خلال نهج متعدد الطبقات:

  • RBAC (التحكم في الوصول القائم على الدور) مع مصادقة المستخدم والخدمة.

  • سياسات أمان Pod / وحدات التحكم في القبول مع مراقبة على مستوى Pod.

  • سياسة الشبكة لتقييد حركة المرور بين الـ Pods.

  • فحص الصور لمنع الصور الضارة.

  • بالإضافة إلى ذلك، غالبًا ما يتم تخزين الأسرار بشكل مشفر داخل etcd، ولكن يمكن أيضًا إدارتها باستخدام أنظمة مثل HashiCorp Vault.

الرصد وقابلية الملاحظة

لرصد الأنظمة التي تعمل على Kubernetes، هناك مجموعة شائعة:

· Prometheus: جمع مقاييس.

· Grafana: لوحات معلومات بصرية.

· Alertmanager: إنتاج الإنذارات.

· Fluentd / Loki / ELK Stack: جمع السجلات والتحليل.

يمكن أيضًا إجراء الرصد الموزع (التتبع) من خلال تكامل OpenTelemetry.

نظام Kubernetes البيئي

على الرغم من أن Kubernetes قوي بحد ذاته، إلا أن هناك نظامًا كبيرًا من الأدوات التي تكمله:

الفئة الأدوات
التعبئة Helm، Kustomize
GitOps ArgoCD، Flux
الرصد Prometheus، Grafana، Loki
Service Mesh Istio، Linkerd، Consul
أتمتة الاختبار Kube-bench، kube-hunter، Chaos Mesh
أدوات المطورين Skaffold، Tilt، Okteto

رحلة تعلم Kubernetes

خريطة طريق من المستوى الابتدائي إلى المستوى المتقدم:

· تعلم المفاهيم: Pod، Service، Deployment، Volume.

· إعداد مجموعة محلية باستخدام Minikube: للتثبيتات التجريبية.

**· ممارسة كتابة YAML.**
**· تعلم تكامل Helm و CI/CD.**
**· الانتقال إلى موضوعات متقدمة مثل الرصد والأمان و HPA.**
**· استخدامه في مشروع حقيقي.**

خاتمة

Kubernetes هو منصة غيرت قواعد اللعبة في عالم تطوير ونشر التطبيقات الحديثة. بفضل الأتمتة التي توفرها، والقابلية للنقل، والمرونة، ودعم المجتمع؛ لم يعد Kubernetes مجرد أداة، بل أصبح ثقافة بنية تحتية.

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

#كوبيرنيتس ، برامج ، خدمات مصغرة

Frequently Asked Questions

ما هو كوبرنيتس ولماذا يعتبر ثورة في نشر التطبيقات؟

Kubernetes هو منصة مفتوحة المصدر مستندة إلى Borg الذي استخدمته Google لسنوات، وأُعلنت عنها في عام 2014. وتديرها مؤسسة Cloud Native Computing Foundation وتدعمها كبرى مزودي الخدمات السحابية مثل AWS وAzure وGoogle Cloud.

كيف يختلف Kubernetes في تبنيه لنهج تعبيرية عن الأساليب التقليدية التي يحدد فيها مدير النظام كل خطوة يدويًا؟

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

ما هو دور وحدة التحكم Control Plane وما هي مكوناتها الأساسية؟

تتكون Control Plane من kube-apiserver وetcd وkube-scheduler وcontroller-manager، وتعمل كمركز تخزين وحكم على تشغيل الكتلة. هذه المكونات تقرر أين وكيف تُشغّل Pods وتدير حلقات التحكم.

ما هي أصغر وحدة تشغيل في Kubernetes وما الفائدة من وجودها؟

أصغر وحدة يمكن لـ Kubernetes تشغيلها هي Pod، حيث تشترك الحاويات داخلها في عنوان IP واحد ومساحة تخزين ودورة حياة مشتركة. عادةً ما يحتوي Pod على حاوية تطبيق واحدة.

ما الفرق بين StatefulSet و DaemonSet في Kubernetes؟

StatefulSet مصمم لتطبيقات تعتمد على الحالة ويمنح Pods هويات ثابتة ودائمة. DaemonSet يضمن تشغيل نفس Pod على كل عقدة ضمن الكتلة، وغالباً ما يُستخدم للمراقبة أو جمع السجلات.

كيف يمكن أن تساهم Kubernetes في سيناريوهات الاستخدام الواقعية مثل الخدمات المصغّرة وCI/CD ونشر نماذج التعلم الآلي؟

يمكن نشر كل ميزة كخدمة صغيرة مستقلة، وتُدار بشكل معزول وقابل للتوسع. كما يدعم CI/CD عبر أدوات مثل ArgoCD أو Jenkins-X، ويمكن تدريب ونشر نماذج التعلم الآلي على عقد مدعومة من GPU ثم نشرها كواجهة برمجة تطبيقات.

ما الفرق بين أنواع الخدمات في Kubernetes وهدف كل منها، وكيف تستخدم Namespace لفصل الموارد؟

أنواع الخدمات مثل ClusterIP تسمح بالوصول من داخل المجموعة فقط، وNodePort يتيح الوصول من العالم الخارجي، وLoadBalancer ينشئ موزع تحميل مدعوم من مزود الخدمة السحابية. ويستخدم Namespace لتقسيم الموارد منطقيًا وتوفير عزل للبيئات مثل dev وtest وprod.

ما هي أبرز جوانب الأمن والمراقبة في Kubernetes كما وردت في المحتوى؟

يجب اعتماد نهج طبقات متعددة يشمل RBAC مع المصادقة وسياسات أمان Pod ووحدات التحكم في القبول وسياسة الشبكة وفحص الصور. وغالباً ما يتم تخزين الأسرار بشكل مشفر داخل etcd، ويمكن أيضًا إدارتها باستخدام HashiCorp Vault. للمراقبة، هناك أدوات مثل Prometheus وGrafana وAlertmanager وFluentd/Loki/ELK، ويمكن أيضًا إجراء الرصد الموزع باستخدام OpenTelemetry.