Pods are replaced all the time and each new one gets a new IP, so other apps cannot rely on pod addresses. A Service gives a set of pods one stable name and IP and spreads traffic across them. Use a ClusterIP Service whenever one app inside the cluster calls another. To expose many HTTP apps to the internet, put an Ingress in front instead of creating a LoadBalancer Service for each.