This content originally appeared on DEV Community and was authored by Abhishek Korde
Manage Kubernetes Services and Their Types
Kubernetes is a powerful container orchestration platform, but what truly makes it shine is how it manages networking and services. In Kubernetes, Services are responsible for enabling communication between components inside and outside the cluster.
This blog explains what Kubernetes Services are, the different types of Services, and how to manage them effectively.
What Is a Kubernetes Service?
In Kubernetes, a Service is an abstraction that defines a logical set of Pods and a policy to access them.
Why do we need it?
Because Pods are ephemeral — they can be created, destroyed, or replaced anytime. A Service provides a stable network endpoint (a fixed IP or DNS name) so other applications can reach the Pods reliably, even as Pods change.
Types of Kubernetes Services
Kubernetes supports different types of Services, depending on how you want your application to be accessed.
Let’s explore each one
1⃣ ClusterIP (Default)
Purpose:
Provides internal access between applications inside the cluster.
How it works:
Creates a virtual IP (ClusterIP) accessible only within the cluster.
Distributes traffic between multiple Pods using round-robin load balancing.
Example:
apiVersion: v1
kind: Service
metadata:
name: backend-service
spec:
selector:
app: backend
ports:
- port: 80
targetPort: 8080
type: ClusterIP
Use Case:
Backend-to-database communication or internal microservice communication.
2⃣ NodePort
Purpose:
Expose your application outside the cluster on a specific port.
How it works:
Opens a static port (between 30000–32767) on each Kubernetes node.
Redirects traffic from that port to your service.
Example:
apiVersion: v1
kind: Service
metadata:
name: frontend-service
spec:
type: NodePort
selector:
app: frontend
ports:
- port: 80
targetPort: 3000
nodePort: 30007
Access:
You can access the app using:
http://<NodeIP>:30007
Use Case:
Local testing and development setups (like Minikube).
3⃣ LoadBalancer
Purpose:
Expose the application to the internet using a cloud load balancer.
How it works:
Works on top of NodePort and ClusterIP.
Automatically provisions a cloud provider’s external load balancer (e.g., AWS ELB, Azure LB, GCP LoadBalancer).
Example:
apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
type: LoadBalancer
selector:
app: web
ports:
- port: 80
targetPort: 8080
4⃣ ExternalName (Special Case)
Purpose:
Map a Kubernetes service name to an external DNS name.
How it works:
No proxying or load balancing — it just returns a CNAME record.
Example:
apiVersion: v1
kind: Service
metadata:
name: external-db
spec:
type: ExternalName
externalName: db.example.com
Use Case:
Connecting internal services to external resources (like managed databases or APIs).
Conclusion
Kubernetes Services simplify communication between Pods and make applications stable, scalable, and easy to manage.
- Use ClusterIP for internal traffic.
- Use NodePort for local or limited external access.
- Use LoadBalancer for production environments.
- Use ExternalName for connecting to external systems. With these, you can manage and expose any application confidently — from development to production.
This content originally appeared on DEV Community and was authored by Abhishek Korde