DEV Community

Shiva Charan
Shiva Charan

Posted on

🧩 Need for Services in Kubernetes.

Kubernetes Pods are not permanent. They can:

  • restart
  • scale up/down
  • get recreated
  • move to another node

👉 Every time a Pod is recreated, it receives a new Pod IP.

This makes Pod IPs unreliable for direct communication.

🚨 Without Services

If App A wants to talk to App B:

  • App B’s Pod IP might change at any moment
  • App A would immediately lose connection
  • You would need to manually update IPs everywhere

This is completely unacceptable in production.

✅ So Kubernetes created “Services”

A Service gives a stable, permanent virtual IP (ClusterIP) that always points to the current healthy Pods, even if Pods keep changing.


🎯 What Is the Use of a Service?

A Kubernetes Service provides:

1️⃣ Stable Network Identity

A fixed virtual IP (VIP) for a group of Pods.

Example:

frontend → backend.default.svc.cluster.local
Enter fullscreen mode Exit fullscreen mode

Even if backend pods die and get new IPs, the Service IP stays the same.


2️⃣ Automatic Load Balancing

Service uses an EndPoints / EndpointSlice list of all matching Pods:

backend-1 → 10.1.1.20
backend-2 → 10.1.2.54
backend-3 → 10.1.3.77
Enter fullscreen mode Exit fullscreen mode

The Service load-balances traffic to these Pods.


3️⃣ Service Discovery

Pods do not need to know IPs; they connect using:

  • DNS name
  • ClusterIP
  • Labels

Example:

curl http://backend
Enter fullscreen mode Exit fullscreen mode

4️⃣ Exposing Pods Internally or Externally

Different Service types expose Pods at different levels:

Service Type Purpose
ClusterIP Expose internally inside the cluster
NodePort Expose on each node’s IP
LoadBalancer Expose to the Internet (cloud LB)
ExternalName Map to an external URL

💡 Benefits of Kubernetes Services

✅ 1. Stability

Pods change constantly. Service IPs & DNS names do not.


✅ 2. Auto Load Balancing

Traffic intelligently splits across all available Pods.


✅ 3. Auto Service Discovery

Pods connect using:

service-name.namespace.svc.cluster.local
Enter fullscreen mode Exit fullscreen mode

✅ 4. Health-Aware Routing

Service automatically avoids:

  • unready Pods
  • failing Pods
  • terminating Pods

✅ 5. Decoupling of Application Layers

Frontend doesn’t need to know backend Pod IPs.
Backend doesn’t need to know DB Pod IPs.

This enables microservices.


✅ 6. Flexible Exposure Options

Choose whether Pods are:

  • internal (ClusterIP)
  • node-exposed (NodePort)
  • internet-exposed (LoadBalancer)
  • or mapped to external systems (ExternalName)

🚀 Summary — The Purpose of Services in Kubernetes

Question Answer
Why created? Pods have unstable IPs; apps needed stable endpoints
What’s the use? Provide stable networking, discovery, and load balancing
Benefits? Stable IP, DNS, load balancing, health awareness, microservices, internal/external access

Top comments (0)