<p>I want to remove pod that I deployed to my cluster with <code>helm install</code>.</p>
<p>I used 3 ways to do so:</p>
<ol>
<li><code>helm uninstall &lt;release name&gt;</code> -&gt; remove the pod from the cluster and from the helm list</li>
<li><code>helm delete &lt;release name&gt;</code> -&gt; remove the pod from the cluster and from the helm list</li>
<li><code>kubectl delete -n &lt;namespace&gt; deploy &lt;deployment name&gt;</code> -&gt; remove the pod from the cluster but not from the helm list</li>
</ol>
<p>What's the difference between them?
Is one better practice then the other?</p>

<p><code>helm delete</code> is an alias for <code>helm uninstall</code> and you can see this when you check the <code>--help</code> syntax:</p>
<pre><code>$ helm delete --help
...
Usage:
  helm uninstall RELEASE_NAME [...] [flags]
</code></pre>
<p><code>kubectl delete ...</code> just removes the resource in the cluster.</p>
<p>Doing <code>helm uninstall ... </code>  won't just remove the pod, but it will remove all the resources created by helm when it installed the chart. For a single pod, this might not be any different to using <code>kubectl delete...</code> but when you have tens or hundreds of different resources and dependent charts, doing all this manually by doing <code>kubectl delete...</code> becomes cumbersome, time-consuming and error-prone.</p>
<p>Generally, if you're deleting something off of the cluster, use the same method you used to install it in the first place. Namely, if you used <code>helm install</code> or <code>helm upgrade --install</code> to install it into the cluster, use <code>helm uninstall</code> to remove it (or <code>helm delete --purge</code> if you're still running Helm v2); and if you used <code>kubectl create</code> or <code>kubectl apply</code>, use <code>kubectl delete</code> to remove it.</p>
