Service Discovery
لماذا لا نستخدم Pod IP؟
Section titled “لماذا لا نستخدم Pod IP؟”Pod IP يتغير عند إعادة إنشاء Pod. لذلك لا يجب أن يعتمد تطبيق على IP الخاص بـ Pod مباشرة.
الحل هو Service.
اسم Service داخل Cluster
Section titled “اسم Service داخل Cluster”لو عندك Service اسمها api داخل Namespace اسمه dev، يمكن الوصول لها بالأسماء:
apiapi.devapi.dev.svcapi.dev.svc.cluster.localClusterIP
Section titled “ClusterIP”ClusterIP هو النوع الافتراضي من Service. يفتح الخدمة داخل Cluster فقط.
apiVersion: v1kind: Servicemetadata: name: apispec: selector: app: api ports: - port: 80 targetPort: 3000Endpoints و EndpointSlices
Section titled “Endpoints و EndpointSlices”Service لا يرسل traffic بنفسه بشكل سحري. Kubernetes يربطه بـ Pods المطابقة للـ selector، ويخزن هذه الوجهات في Endpoints أو EndpointSlices.
kubectl get service apikubectl get endpoints apikubectl get endpointslicesاختبار DNS من داخل Cluster
Section titled “اختبار DNS من داخل Cluster”kubectl run dns-test --rm -it --image=busybox:1.36 --restart=Never -- nslookup apiLab: اختبار Service name
الهدف: التأكد أن Pod يستطيع الوصول إلى Service بالاسم.
شغل Deployment و Service باسم web، ثم نفذ:
kubectl run curl --rm -it --image=curlimages/curl --restart=Never -- curl http://web