<p>These are recommended labels:</p>
<pre><code>app.kubernetes.io/name
app.kubernetes.io/instance
app.kubernetes.io/version
app.kubernetes.io/component
app.kubernetes.io/part-of
app.kubernetes.io/managed-by
</code></pre>
<p>I don't quite figure out what <code>app.kubernetes.io/instance</code> is for.</p>
<p>Could you provide any useful examples?</p>

<p>A generic application <code>name</code> can have multiple <code>instance</code>s.</p>
<p>Say if an application used <code>nginx</code> to serve different types of content, so each type of nginx can be scaled independantly:</p>
<pre><code>app.kubernetes.io/name: nginx

app.kubernetes.io/instance: static-01

app.kubernetes.io/instance: img-02

app.kubernetes.io/instance: dynamic-05
</code></pre>
<p>They are only recommendations though so you can use them how you want. In small scale clusters you might not have a need to make <code>name</code> and <code>instance</code> different.</p>
<p>See <a href="https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/#applications-and-instances-of-applications" rel="nofollow noreferrer">Applications And Instances Of Applications</a></p>
<blockquote>
<p>An application can be installed one or more times into a Kubernetes cluster and, in some cases, the same namespace. For example, wordpress can be installed more than once where different websites are different installations of wordpress.</p>
<p>The name of an application and the instance name are recorded separately. For example, WordPress has a <code>app.kubernetes.io/name</code> of <code>wordpress</code> while it has an instance name, represented as <code>app.kubernetes.io/instance</code> with a value of <code>wordpress-abcxzy</code>. This enables the application and instance of the application to be identifiable. Every instance of an application must have a unique name.</p>
</blockquote>
