<p>We are evaluating Dapr for our microservice framework. We will be using Kubernetes.  One of the advertised selling points for Dapr is service invocation and service discovery.  Doesn't K8s already offer service discovery out of the box?</p>

<p>Short answer: <strong>Yes</strong> (<em>Kubernetes</em> offers Service Discovery)</p>
<p>While there may be several patterns (and tools being the implementation of these patterns) for Service Discovery, <em>Kubernetes</em> offers service discovery <em>at its core</em> through the <strong>Service</strong> objects avoiding any needs of using a particular technology or tool to achieve a basic Container-Managed runtime environment.</p>
<p>You can read <a href="https://kubernetes.io/docs/concepts/services-networking/service/" rel="nofollow noreferrer">more on <em>Kubernetes Service</em>s in the official documentation</a>.</p>
<p>It is worth noting that <em>dapr</em> is a platform agnostic portable runtime that does not depend on Kubernetes and its core Service Discovery feature.</p>
<p>It offers more features than simply discovering your services (it has been usually compared to Service Meshes tools as the tend to look out being the same):</p>
<ul>
<li>It offers transparent and secured service-to-service calls</li>
<li>It allows Publish-Subscribe communication style</li>
<li>It offers a way to register triggers and resource bindings (allowing for function-as-a-service development style)</li>
<li>It offers observability out-of-the-box</li>
<li>...</li>
</ul>
