<p>I will end up having around 20 microservices on the Kubernetes cluster eventually. I am thinking &quot;services meshes&quot; like Istio are overkill. if I have to do just basic <strong>&quot;service discovery and communication&quot;</strong> within each of the 20 microservices with 1 external ingress/LB (<strong>for public traffic</strong>), do I need to create a K8's <strong>'service'</strong> type for each of the 20 microservices so that they can call each other over http/grpc?</p>

<p>Correct, you need a <code>Service</code> for everything you call. <code>Service</code> is a LoadBalancer, it spreads the load and hides the scale and placement of the underlying pods, plus it gives you a service discovery based on DNS.</p>
