المشروع projet11-kubernetes-services · النظرية المفيدة قبل الممارسة (أو أثناءها).
الـ Pod زائل: يمكن حذفه وإعادة إنشائه ونقله إلى عقدة أخرى — وعنوان IP يتغيّر. إذن مستحيل ترميز IP لـ Pod «ثابتاً في الشفرة».
تحل الخدمة هذه المشكلة: توفّر عنواناً مستقراً (IP + اسم DNS) وتوزّع الحركة تلقائياً نحو مجموعة الـ Pods المطابقة لـ مُنتقي الوسوم.
الرابط خدمة → Pods ليس عنوان IP ثابتاً: هو مُنتقي وسوم. يصون Kubernetes وحده قائمة الـ Pods المطابقة (Endpoints).
http://demo-clusterip).http://<ip-du-noeud>:<nodePort> (هنا http://localhost:30082).EXTERNAL-IP localhost (http://localhost:8090).| النوع | النطاق | الوصول | حالة استخدام نموذجية |
|---|---|---|---|
| ClusterIP | داخلي | اسم DNS داخلي | قاعدة بيانات، واجهة داخلية، تواصل Pod↔Pod |
| NodePort | خارجي | localhost:<30000-32767> | عرض / تطوير محلي |
| LoadBalancer | خارجي | IP عام (localhost محلياً) | خدمة عامة في إنتاج سحابي |
يوجد أيضاً ExternalName (اسم مستعار DNS نحو خدمة خارجية) وIngress (توجيه HTTP/HTTPS باسم نطاق، يُرى لاحقاً) — خارج هذا المشروع.
يشغّل Kubernetes CoreDNS في العنقود. تتلقى كل خدمة اسم DNS:
<nom-du-service> # من النطاق نفسه
<nom-du-service>.<namespace> # من نطاق آخر
<nom-du-service>.<namespace>.svc.cluster.local # الاسم الكامل (FQDN)هكذا، من أي Pod في النطاق نفسه:
curl http://demo-clusterip # يحله CoreDNS -> IP الخدمة -> PodIP:port للـ Pods المطابقة، تُحدَّث تلقائياً بواسطة Kubernetes.kubectl get endpoints demo-clusterip # يعرض عناوين IP للـ Pods خلف الخدمةدورة من إعداد د. هيثم رحومة — تطوير ونشر حلول البيانات