<p>I had a &quot;stuck&quot; namespace that I deleted showing in this eternal &quot;terminating&quot; status.</p>

<p>Assuming you've already tried to force-delete resources like: 
<a href="https://stackoverflow.com/q/35453792">Pods stuck at terminating status</a>, and your at your wits' end trying to recover the namespace...</p>

<p>You can force-delete the namespace (perhaps leaving dangling resources):</p>

<pre><code>(
NAMESPACE=your-rogue-namespace
kubectl proxy &amp;
kubectl get namespace $NAMESPACE -o json |jq '.spec = {"finalizers":[]}' &gt;temp.json
curl -k -H "Content-Type: application/json" -X PUT --data-binary @temp.json 127.0.0.1:8001/api/v1/namespaces/$NAMESPACE/finalize
)
</code></pre>

<ul>
<li><p>This is a refinement of the answer <a href="https://stackoverflow.com/a/52412965/86967">here</a>, which is based on the comment <a href="https://github.com/kubernetes/kubernetes/issues/60807#issuecomment-408599873" rel="noreferrer">here</a>.</p></li>
<li><p>I'm using the <code>jq</code> utility to programmatically delete elements in the finalizers section.  You could do that manually instead.</p></li>
<li><p><code>kubectl proxy</code> creates the listener at <code>127.0.0.1:8001</code> <em>by default</em>.  If you know the hostname/IP of your cluster master, you may be able to use that instead.</p></li>
<li><p>The funny thing is that this approach seems to work even when using <code>kubectl edit</code> making the same change has no effect.</p></li>
</ul>
