أنواع Service: ClusterIP وNodePort وLoadBalancer
تعلّم الطرق المختلفة لإتاحة الخدمات داخل عنقود Kubernetes وخارجه
أنواع Service: ClusterIP وNodePort وLoadBalancer درس مجاني في Kubernetes Basics على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kubernetes Basics، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kubernetes Basics 4 دروس في المجموع.
احتياجات إتاحة الخدمة
في Kubernetes، تكون Pods مؤقتة وتمتلك عناوين IP ديناميكية. توفّر Services وصولًا شبكيًا مستقرًا إلى تطبيقاتكم. ولكن كيف تتيحون الوصول إليها؟
اعتمادًا على ما إذا كان تطبيقكم يحتاج إلى الوصول إليه من داخل الـ cluster أو خارجه، وكيفية ذلك، يوفّر Kubernetes أنواعًا مختلفة من Service. لنستكشف الأنواع الرئيسية الثلاثة!
ClusterIP: الوصول الداخلي
يُعد ClusterIP نوع Service الافتراضي. فهو يمنح Service عنوان IP داخليًا مستقرًا، لا يمكن الوصول إليه إلا من داخل Kubernetes cluster.
- يمكن لـ Pods الوصول إلى Pods أخرى باستخدام عناوين ClusterIP واسم Service.
- وهو مناسب تمامًا لخدمات backend التي لا تحتاج إلى إتاحة مباشرة من خارج cluster.
- يمكنكم اعتباره موازن تحميل داخليًا لـ Pods.
ملف YAML لخدمة ClusterIP
إليكم طريقة تعريف Service من النوع ClusterIP. لاحظوا الحقل type: ClusterIP، مع أنه اختياري لأنه النوع الافتراضي.
apiVersion: v1
kind: Service
metadata:
name: my-internal-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: ClusterIPالوصول إلى خدمات ClusterIP
بعد النشر، يعيّن Kubernetes تلقائيًا عنوان IP داخليًا فريدًا (ClusterIP) لهذه الخدمة. ويمكن لـ Pods الأخرى بعد ذلك استخدام اسم الخدمة (مثل my-internal-service) أو عنوان IP الخاص بها للاتصال.
تحل خدمة DNS في Kubernetes اسم الخدمة إلى ClusterIP الخاص بها، مما يجعل الاتصال الداخلي سهلًا وموثوقًا.
NodePort: الوصول الخارجي
ماذا لو احتجتم إلى الوصول إلى تطبيقكم من خارج cluster؟ هنا يأتي دور NodePort.
تتيح NodePort Service الوصول إلى تطبيقكم عبر منفذ ثابت على عنوان IP لكل node في cluster. وتُوجَّه أي حركة مرور تُرسل إلى NodeIP:NodePort إلى Service الخاصة بكم.
- مفيدة للتطوير وعمليات النشر الصغيرة.
- يكون NodePort عادةً ضمن النطاق 30000-32767.
ملف YAML لخدمة NodePort
لإنشاء NodePort Service، حدّدوا صراحةً type: NodePort. وسيختار Kubernetes تلقائيًا منفذًا متاحًا ضمن نطاق NodePort إذا لم تحددوا منفذًا.
apiVersion: v1
kind: Service
metadata:
name: my-nodeport-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
nodePort: 30080 # Optional: K8s picks if omitted
type: NodePortالاتصال عبر NodePort
بعد نشر NodePort Service، يمكنكم الوصول إلى تطبيقكم من خارج cluster باستخدام <AnyNodeIP>:<NodePort>.
على سبيل المثال، إذا كان عنوان IP لإحدى العقد هو 192.168.1.100 وكان NodePort المعيّن هو 30080، فيمكنكم الوصول إلى تطبيقكم عبر http://192.168.1.100:30080.
LoadBalancer: التكامل مع السحابة
في بيئات الإنتاج لدى موفّري الخدمات السحابية (AWS وGCP وAzure)، غالبًا ما يُفضَّل استخدام Service من نوع LoadBalancer. إذ ينشئ تلقائيًا موازن تحميل سحابيًا خارجيًا.
يحصل موازن التحميل هذا على عنوان IP عام، ويوزّع حركة المرور الخارجية على Pods التابعة لـ Service. ويتولى جميع عمليات التوجيه المعقدة نيابةً عنكم.
ملف YAML لخدمة LoadBalancer
يُعد تعريف LoadBalancer Service أمرًا مباشرًا. إذ يتولى موفّر الخدمة السحابية الجزء الأكبر من العمل لإنشاء موازن التحميل الخارجي.
apiVersion: v1
kind: Service
metadata:
name: my-loadbalancer-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancerالوصول الخارجي باستخدام LoadBalancer
بعد النشر، سينشئ موفّر الخدمة السحابية موازن تحميل مخصصًا ويعيّن له عنوان IP خارجيًا أو اسم مضيف. ويمكنكم بعد ذلك استخدام نقطة النهاية العامة هذه للوصول إلى تطبيقكم.
يوفّر ذلك طريقة قوية وقابلة للتوسع ومتاحة بدرجة عالية لإتاحة خدماتكم عبر الإنترنت.
تحقق سريع: أنواع Service
ما أنواع Kubernetes Service التي تتيح الوصول الخارجي المباشر إلى تطبيقكم من خارج cluster؟
مراجعة: اختيار Service المناسبة
لقد تعلّمتم الأنواع الرئيسية الثلاثة من Kubernetes Service:
- ClusterIP: للوصول الداخلي فقط من داخل cluster.
- NodePort: تتيح الوصول إلى الخدمات عبر منفذ ثابت على عنوان IP لكل node، مما يسمح بالوصول الخارجي.
- LoadBalancer: تتكامل مع موفّري الخدمات السحابية لإنشاء موازن تحميل خارجي مزوّد بعنوان IP عام.
اختاروا النوع المناسب استنادًا إلى احتياجات إتاحة تطبيقكم وبيئة النشر لديكم!
الأسئلة الشائعة
هل درس «أنواع Service: ClusterIP وNodePort وLoadBalancer» مجاني؟
نعم — نص درس «أنواع Service: ClusterIP وNodePort وLoadBalancer» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kubernetes Basics، انتقل إلى CoddyKit PRO. تتضمن دورة Kubernetes Basics 4 دروس في المجموع.
ماذا ستتعلم في «أنواع Service: ClusterIP وNodePort وLoadBalancer»؟
تعلّم الطرق المختلفة لإتاحة الخدمات داخل عنقود Kubernetes وخارجه تتمرن على Kubernetes Basics مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Kubernetes Basics؟
لا تُشترط خبرة سابقة. Kubernetes Basics على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «أنواع Service: ClusterIP وNodePort وLoadBalancer»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Kubernetes Basics هذا؟
نعم. كل درس في Kubernetes Basics يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إتاحة التطبيقات باستخدام Services
- أنواع Service: ClusterIP وNodePort وLoadBalancer
- Ingress للوصول الخارجي
- DNS واكتشاف الخدمات