Services للوصول عبر الشبكة
أتِح الوصول إلى تطبيقاتك داخل العنقود وخارجه باستخدام أنواع Kubernetes Service المختلفة
Services للوصول عبر الشبكة درس مجاني في Docker & DevOps Fundamentals على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Docker & DevOps Fundamentals، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Docker & DevOps Fundamentals 4 دروس في المجموع.
ما هي Kubernetes Service؟
في Kubernetes، تُعد Pods أصغر وحدات قابلة للنشر. وقد صُممت لتكون مؤقتة، ما يعني أنه يمكن إنشاؤها أو حذفها أو استبدالها في أي وقت، وغالبًا ما تحصل على عناوين IP جديدة.
تجعل هذه الطبيعة الديناميكية من الصعب على التطبيقات الأخرى العثور عليها والتواصل معها بشكل موثوق. وهنا يأتي دور Services!

توفير وصول شبكي مستقر
تعمل Kubernetes Service كنقطة نهاية شبكية مستقرة لمجموعة من Pods. فكّر فيها على أنها عنوان دائم لا يتغير، حتى إذا تغيرت Pods الموجودة خلفه.
- توفر Services عنوان IP واسم DNS ثابتين.
- يمكنها موازنة حركة المرور بين عدة Pods.
- تضمن التوافر المستمر أثناء توسعة Pods أو إعادة تشغيلها.
ربط Pods بـ Services
كيف تعرف Service إلى أي Pods يجب توجيه حركة المرور؟ تستخدم التسميات والمحدِّدات.
عند إنشاء Pods، تسند إليها تسميات (أزواج مفتاح-قيمة مثل app: my-app). ثم تحدد Service محدِّدًا يطابق هذه التسميات، مما ينشئ رابطًا ديناميكيًا.
الوصول الداخلي باستخدام ClusterIP
يُعد ClusterIP نوع Service الافتراضي والأكثر شيوعًا. فهو يعيّن عنوان IP داخليًا مستقرًا داخل مجموعة Kubernetes. ولا يمكن الوصول إلى هذا العنوان إلا من Pods أو Nodes أخرى داخل المجموعة.
وهو مناسب تمامًا لخدمات الخلفية (مثل قاعدة بيانات أو API) التي تحتاج فقط إلى التواصل مع الخدمات الأخرى داخل تطبيقك.
تعريف ClusterIP Service
إليك تعريفًا بسيطًا لخدمة ClusterIP بصيغة YAML. لاحظ selector الذي يطابق التسمية app: my-backend، وكيف يربط port بـ targetPort.
apiVersion: v1
kind: Service
metadata:
name: my-backend-service
spec:
selector:
app: my-backend
ports:
- protocol: TCP
port: 80
targetPort: 8080 # Port your application listens on
type: ClusterIPالوصول الخارجي باستخدام NodePort
تتيح خدمة NodePort الوصول إلى تطبيقك عبر منفذ ثابت على عنوان IP لكل Node. وبذلك تصبح خدمتك متاحة من خارج المجموعة باستخدام عنوان IP لأي Node والمنفذ المحدد.
تكون قيمة nodePort عادةً ضمن النطاق 30000-32767. وهي مفيدة للوصول الخارجي البسيط أو لبيئات التطوير.
تعريف NodePort Service
لإتاحة خدمتك خارجيًا عبر NodePort، اضبط type: NodePort. ويمكنك اختياريًا تحديد nodePort، وإلا فستختار Kubernetes قيمة نيابةً عنك.
apiVersion: v1
kind: Service
metadata:
name: my-frontend-service
spec:
selector:
app: my-frontend
ports:
- protocol: TCP
port: 80
targetPort: 80 # Port your application listens on
nodePort: 30080 # Optional: specific port on the Node
type: NodePortموازنات التحميل السحابية
صُمم نوع Service LoadBalancer لبيئات السحابة. عند إنشاء Service من هذا النوع، يوفّر مزود السحابة لديك (مثل AWS أو GCP أو Azure) موازن تحميل خارجيًا تلقائيًا.
يحصل موازن التحميل هذا على عنوان IP عامًا، ويوجه حركة المرور الخارجية مباشرةً إلى Pods لديك، وغالبًا ما يوفر ميزات متقدمة مثل إنهاء SSL.
تعريف LoadBalancer Service
بالنسبة إلى التطبيقات المتاحة للعامة في مجموعة Kubernetes سحابية، يُعد LoadBalancer الخيار الأنسب. فهو يبسّط إدارة الوصول الخارجي بدرجة كبيرة.
apiVersion: v1
kind: Service
metadata:
name: my-web-app-lb
spec:
selector:
app: my-web-app
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancerاختيار Service المناسبة
يقوم فريقك بنشر تطبيق جديد على Kubernetes. ضع السيناريوهات التالية في اعتبارك:
- واجهة خلفية API لا تحتاج إلى الوصول إليها إلا من قِبل الخدمات الأخرى داخل المجموعة.
- خادم ويب للواجهة الأمامية يجب أن يكون متاحًا من الإنترنت، وأنت تنشره لدى مزود سحابي (AWS أو GCP أو Azure).
ما نوع Service الأنسب لـ خادم الويب للواجهة الأمامية؟
مراجعة: Services للوصول الشبكي
تعلمنا أن Services في Kubernetes توفر وصولًا شبكيًا مستقرًا إلى Pods الديناميكية. وهي أساسية لكي تتواصل تطبيقاتك بشكل موثوق.
- ClusterIP: للاتصال الداخلي داخل المجموعة فقط.
- NodePort: تتيح الوصول إلى خدمة عبر منفذ ثابت على عنوان IP لكل Node، ويمكن الوصول إليها خارجيًا في حالات استخدام محددة.
- LoadBalancer: تتكامل مع مزودي السحابة لتوفير موازن تحميل خارجي للوصول العام.
يُعد اختيار نوع Service المناسب أمرًا بالغ الأهمية للتحكم في كيفية إتاحة تطبيقاتك.
الأسئلة الشائعة
هل درس «Services للوصول عبر الشبكة» مجاني؟
نعم — نص درس «Services للوصول عبر الشبكة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Docker & DevOps Fundamentals، انتقل إلى CoddyKit PRO. تتضمن دورة Docker & DevOps Fundamentals 4 دروس في المجموع.
ماذا ستتعلم في «Services للوصول عبر الشبكة»؟
أتِح الوصول إلى تطبيقاتك داخل العنقود وخارجه باستخدام أنواع Kubernetes Service المختلفة تتمرن على Docker & DevOps Fundamentals مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Docker & DevOps Fundamentals؟
لا تُشترط خبرة سابقة. Docker & DevOps Fundamentals على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «Services للوصول عبر الشبكة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Docker & DevOps Fundamentals هذا؟
نعم. كل درس في Docker & DevOps Fundamentals يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- Deployments للتطبيقات عديمة الحالة
- Services للوصول عبر الشبكة
- ConfigMaps وSecrets
- Ingress والتوجيه الخارجي