
ذكاء الأعمال كخدمة
جرب خدمة PlusClouds إيجلت واكتشف فرص وعملاء محتملين عالي الجودة في مجال الأعمال بين الشركات بدعم الذكاء الاصطناعي
شهدت عالم تطوير البرمجيات تحوّلًا مذهلًا في العقد الماضي. انتقلنا من التطبيقات الأحادية إلى الخدمات الصغيرة، ومن الخوادم الفيزيائية إلى الحاويات، ومن النشر اليدوي إلى التكامل المستمر والنشر (CI/CD). بينما لعبت تقنية الحاويات دورًا حاسمًا في هذا التحول، فإن النظام الذي فتح أبواب عصر جديد لإدارة هذه الحاويات هو 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، يقوم المطور أو مهندس DevOps بتعريف "كيف يجب أن يكون" النظام؛ حيث يتخذ Kubernetes الخطوات اللازمة لتحقيق ذلك.
هذا يضمن أن تكون البنية التحتية قابلة لإعادة الإنتاج (idempotent). بمعنى أنه عندما تحدث مشكلة في النظام، يحاول Kubernetes تلقائيًا العودة إلى الحالة المعرفة.
لقد حددنا مكونات Kubernetes في وقت سابق بشكل عام. دعنا نغوص في التفاصيل أكثر.
تتكون وحدة التحكم، التي تعتبر مركز الخزن لـ Kubernetes، من الخدمات التالية:
· kube-apiserver: نقطة النهاية المركزية الخاصة بالواجهة البرمجية التي تتواصل معها جميع المكونات.
· etcd: قاعدة بيانات موزعة من نوع key-value. يتم تخزين حالة Kubernetes هنا.
· kube-scheduler: يقوم بتعيين Pods إلى العقد المناسبة. يأخذ في الاعتبار العديد من المعايير مثل وحدة المعالجة المركزية والذاكرة ووسم العقد وقواعد القرب/المعاداة.
· controller-manager: منظم يقوم بإدارة حلقات التحكم مثل ReplicaSet وDaemonSet وNodeController.
تتكون العقد من خوادم فعلية أو افتراضية تعمل عليها التطبيقات. تحوي كل عقدة على ما يلي:
· kubelet: عميل يتواصل مع وحدة التحكم.
· container runtime: مثل Docker، أو containerd، وهو مشغل حاويات.
· kube-proxy: يقوم بتوجيه حركة المرور الشبكية، ويضمن مطابقة عناوين IP للخدمات.
يعتبر Pod أصغر وحدة يمكن لـ Kubernetes تشغيلها. تشارك الحاويات ضمن نفس Pod نفس عنوان IP ومساحة التخزين ودورة الحياة. عادةً ما يحتوي كل Pod على حاوية تطبيق واحدة.
يضمن أن عددًا محددًا من الـ Pods يعمل دائمًا. على سبيل المثال، إذا كان هناك تطبيق ويب به 3 نسخ، فإن النظام سيقوم تلقائيًا بإنشاء نسخة جديدة بمجرد تعطل إحدى النسخ.
يدير ReplicaSets. يستخدم لإدارة إصدارات التطبيقات، وإجراء تحديثات متتالية، وتوفير إمكانية التراجع.
بما أن Pods تُنشأ وتُحذف بشكل ديناميكي، فإن عناوين IP لها متغيرة. تُخفي الخدمة هذه المتغيرات وتسمح بالوصول إلى التطبيقات من خلال عنوان DNS ثابت. أنواع الخدمات هي:
· ClusterIP: يسمح بالوصول فقط من داخل المجموعة.
· NodePort: يتيح الوصول من العالم الخارجي.
· LoadBalancer: ينشئ موزع تحميل مدعوم من مزود الخدمة السحابية.
يستخدم لتقسيم الموارد منطقيًا. يوفر إدارة موارد معزولة في بيئات مختلفة مثل "dev"، "test"، "prod".
تم تصميمه لتطبيقات تعتمد على الحالة مثل قواعد البيانات. يمنح الـ Pods هويات ثابتة ودائمة.
يستخدم لتخزين تكوينات التطبيقات والمعلومات السرية (مثل كلمات المرور ورموز API) خارج الحاوية.
يضمن تشغيل نفس الـ Pod على كل عقدة. غالبًا ما يستخدم لجمع السجلات (مثل fluentd) ومراقبة العقد (مثل node-exporter).
ينفذ المهام المجدولة. على سبيل المثال، إجراء نسخ احتياطي في الساعة 3 صباحًا كل ليلة.
يمكن نشر كل ميزة (مثل الكتالوج والدفع وإدارة المستخدمين) لموقع التجارة الإلكترونية كخدمة صغيرة منفصلة على Kubernetes. يتم إدارة هذه الخدمات بشكل معزول ومستقل وقابل للتوسع.
عند تنفيذ دفع Git، يتم تلقائيًا إنشاء صورة جديدة، واختبارها، ونشرها على Kubernetes. يتم دمج هذه العملية مع أدوات مثل ArgoCD أو Jenkins-X.
تستخدم عقدًا مدعومة من GPU لتدريب النماذج. يمكن بعد التدريب، حزمة النموذج كحاوية ونشرها على Kubernetes كواجهة برمجة التطبيقات (MLOps).
يمكن أن تعمل نفس البنية التحتية على كل من مركز البيانات المحلي وعلى أي مزود سحابي تختاره. وهذا يوفر قابلية النقل والاستقلالية.
يجب تناول أمان Kubernetes من خلال نهج متعدد الطبقات:
RBAC (التحكم في الوصول القائم على الدور) مع مصادقة المستخدم والخدمة.
سياسات أمان Pod / وحدات التحكم في القبول مع مراقبة على مستوى Pod.
سياسة الشبكة لتقييد حركة المرور بين الـ Pods.
فحص الصور لمنع الصور الضارة.
بالإضافة إلى ذلك، غالبًا ما يتم تخزين الأسرار بشكل مشفر داخل etcd، ولكن يمكن أيضًا إدارتها باستخدام أنظمة مثل HashiCorp Vault.
لرصد الأنظمة التي تعمل على Kubernetes، هناك مجموعة شائعة:
· Prometheus: جمع مقاييس.
· Grafana: لوحات معلومات بصرية.
· Alertmanager: إنتاج الإنذارات.
· Fluentd / Loki / ELK Stack: جمع السجلات والتحليل.
يمكن أيضًا إجراء الرصد الموزع (التتبع) من خلال تكامل OpenTelemetry.
على الرغم من أن Kubernetes قوي بحد ذاته، إلا أن هناك نظامًا كبيرًا من الأدوات التي تكمله:
الفئة | الأدوات |
---|---|
التعبئة | Helm، Kustomize |
GitOps | ArgoCD، Flux |
الرصد | Prometheus، Grafana، Loki |
Service Mesh | Istio، Linkerd، Consul |
أتمتة الاختبار | Kube-bench، kube-hunter، Chaos Mesh |
أدوات المطورين | Skaffold، Tilt، Okteto |
خريطة طريق من المستوى الابتدائي إلى المستوى المتقدم:
· تعلم المفاهيم: Pod، Service، Deployment، Volume.
· إعداد مجموعة محلية باستخدام Minikube: للتثبيتات التجريبية.
· ممارسة كتابة YAML.
· تعلم تكامل Helm و CI/CD.
· الانتقال إلى موضوعات متقدمة مثل الرصد والأمان و HPA.
· استخدامه في مشروع حقيقي.
Kubernetes هو منصة غيرت قواعد اللعبة في عالم تطوير ونشر التطبيقات الحديثة. بفضل الأتمتة التي توفرها، والقابلية للنقل، والمرونة، ودعم المجتمع؛ لم يعد Kubernetes مجرد أداة، بل أصبح ثقافة بنية تحتية.
كل يوم، تتجه المزيد من المؤسسات إلى نقل تطبيقاتها إلى Kubernetes. لذلك، فإن معرفة Kubernetes تعتبر استثمارًا استراتيجيًا من حيث الوظائف بالنسبة لمطوري البرمجيات والمهندسين النظم ومتخصصي DevOps.