Kubernetes does not expose workloads to the internet by default. To make a service reachable, you create a Kubernetes LoadBalancer Service. This triggers the cloud provider to provision an external load balancer and assign it a public IP. Traffic hitting that IP flows to your pods through kube-proxy and the cluster network.
The process starts with a Service definition:
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: LoadBalancer
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
When you apply this, Kubernetes requests a load balancer from the underlying infrastructure—AWS ELB, Google Cloud Load Balancer, Azure Load Balancer, or any compatible service. The status field in the Service object shows the assigned external IP or hostname once provisioning is complete.
Security matters. Use NetworkPolicies or firewall rules to restrict inbound traffic. Configure TLS termination either at the load balancer or within the cluster using an Ingress controller with HTTPS enabled.