ClusterIP
This is Kubernetes' default service type, which:
Creates an internal IP accessible only within the cluster
Cannot be reached directly from outside the cluster
Is useful for internal communication between services
NodePort
This service type:
Exposes the application on each node's IP at a static port (range 30000-32767)
Requires you to access via <NodeIP>:<NodePort>
Needs additional configuration for stable DNS and security
Requires manual firewall rules to expose the ports
C) LoadBalancer
This service type:
Extends NodePort functionality by automatically provisioning an external load balancer
Provides a single external IP address that routes to your service
Integrates with cloud providers' DNS services for stable naming
Includes built-in traffic distribution capabilities
Requires minimal configuration as the cloud provider handles most setup
D) ExternalName
This service type:
Maps a service to a DNS name (CNAME record)
Doesn't expose anything - just provides a redirect to an external service
Used for connecting to services outside the Kubernetes cluster
Doesn't create any kind of proxy or endpoint
In practice, a complete solution would often combine the LoadBalancer with an Ingress controller for HTTP routing, TLS termination, and authentication mechanisms, but from the given options, LoadBalancer is clearly the best fit for the requirements.