100% Free Forever
AI-Powered Learning
Industry Expert Content
Certificates & Badges
Learn At Your Own Pace

What Are the Different Kubernetes Service Types?

Understand ClusterIP, NodePort, LoadBalancer, and ExternalName Kubernetes Service types and when to use each, for DevOps interviews.

mediumQ41 of 224 in DevOps Est. time: 6 minsLast updated:
Open Code Lab

Expected Interview Answer

Kubernetes offers four main Service types — ClusterIP, NodePort, LoadBalancer, and ExternalName — each controlling a different scope of network exposure for a stable set of Pods, from internal-only cluster traffic to fully public internet access.

ClusterIP, the default, creates a virtual IP reachable only from inside the cluster and is used for internal service-to-service communication. NodePort builds on ClusterIP by additionally opening a static port (30000-32767) on every node’s IP, so external traffic can reach the service by hitting any node on that port, though it is rarely used directly in production because it is clunky and unencrypted. LoadBalancer builds on NodePort by asking the cloud provider to provision an external load balancer that routes public traffic to the NodePort, which is the standard way to expose a service to the internet on a managed cloud cluster. ExternalName is different in kind — it does not proxy traffic at all, but returns a CNAME DNS record mapping the service name to an external DNS name, letting in-cluster code refer to an external database or API using cluster-local service discovery syntax. In all cases, a Service selects Pods by label selector and load-balances across every matching, ready Pod, decoupling clients from individual Pod IP churn.

  • Provides a stable virtual IP/DNS name despite Pod churn
  • Load-balances traffic automatically across matching healthy Pods
  • Lets teams choose the right exposure scope per workload
  • Decouples service consumers from Pod-level networking details

AI Mentor Explanation

ClusterIP is like a team’s internal dressing-room intercom that only players and staff inside the stadium can use to reach the physio. NodePort is like publishing the physio’s direct extension number so anyone who calls the stadium’s main switchboard from outside can be routed to them, which works but is awkward for the public. LoadBalancer is like the board hiring a proper reception desk that answers all public calls and forwards them cleanly to the physio without callers needing to know any extension. ExternalName is like the intercom simply forwarding a call to an outside specialist clinic’s phone number rather than routing it internally at all.

Step-by-Step Explanation

  1. Step 1

    Choose the scope

    Decide whether traffic should stay internal (ClusterIP), reach every node (NodePort), reach the public internet (LoadBalancer), or point to an external name (ExternalName).

  2. Step 2

    Define label selector

    The Service selects target Pods purely by matching labels, independent of Pod identity or IP.

  3. Step 3

    Kubernetes assigns endpoints

    An Endpoints/EndpointSlice object tracks the current ready Pod IPs matching the selector.

  4. Step 4

    Traffic is load-balanced

    kube-proxy (or a cloud LB) distributes traffic across all matching ready Pods, transparently handling Pod churn.

What Interviewer Expects

  • Ability to name and correctly distinguish all four Service types
  • Understanding that each type builds on the previous (NodePort includes ClusterIP, LoadBalancer includes NodePort)
  • Knowledge that ExternalName does not proxy traffic, only DNS
  • Awareness that label selectors, not Pod names, determine Service membership

Common Mistakes

  • Saying NodePort is the standard way to expose production services publicly
  • Confusing ExternalName with a proxying Service type
  • Forgetting that LoadBalancer requires cloud-provider integration to work
  • Not mentioning that Services select Pods via labels, not static IPs

Best Answer (HR Friendly)

Kubernetes gives us a few ways to expose an app depending on who needs to reach it. ClusterIP keeps traffic internal to the cluster, NodePort opens a port on every server, LoadBalancer asks the cloud provider for a real public load balancer, and ExternalName just points to an outside address by DNS. In practice, we mostly use ClusterIP for internal traffic and LoadBalancer for anything the public needs to reach.

Code Example

A LoadBalancer Service exposing an app publicly
apiVersion: v1
kind: Service
metadata:
  name: myapp-public
spec:
  type: LoadBalancer
  selector:
    app: myapp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Follow-up Questions

  • Why is NodePort rarely used directly in production?
  • How does kube-proxy actually route traffic to Pods for a Service?
  • When would you use an ExternalName Service instead of a ConfigMap with a hostname?
  • How does a headless Service differ from a normal ClusterIP Service?

MCQ Practice

1. Which Service type is only reachable from inside the cluster by default?

ClusterIP is the default type and only exposes a virtual IP reachable from within the cluster.

2. What does an ExternalName Service actually do?

ExternalName is DNS-only — it maps the service name to an external DNS name via CNAME with no traffic proxying involved.

3. What does a LoadBalancer Service rely on to work?

LoadBalancer Services depend on the cloud provider (or an equivalent controller) to provision the actual external load balancer.

Flash Cards

What is the default Service type?ClusterIP — internal-only virtual IP.

What does NodePort add on top of ClusterIP?A static port opened on every node’s IP for external access.

What does LoadBalancer add on top of NodePort?A cloud-provisioned external load balancer routing to the NodePort.

What does ExternalName do?Returns a CNAME DNS record to an external name; it never proxies traffic.

1 / 4

Continue Learning