Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
linux_faq:kubernetes_delete_namespace_hung_in_terminating_state [2021/07/13 22:27] adminlinux_faq:kubernetes_delete_namespace_hung_in_terminating_state [2021/10/22 09:04] (current) admin
Line 1: Line 1:
-https://github.com/kubernetes/kubernetes/issues/60807+https://github.com/kubernetes/kubernetes/issues/60807 \\ 
 +https://kb.kasten.io/knowledge/how-to-debug-namespaces-that-are-stuck-terminating \\ 
 Что делать, если неймспейс при удалении завис в состоянии **Terminating**? \\ Что делать, если неймспейс при удалении завис в состоянии **Terminating**? \\
   * Нужно попытаться отредактировать его и удалить **finalizers** (в том числе и из спецификации). Например так: <code>kubectl patch ns BAD_NAMESPACE -p '{"metadata":{"finalizers":null}}'</code>   * Нужно попытаться отредактировать его и удалить **finalizers** (в том числе и из спецификации). Например так: <code>kubectl patch ns BAD_NAMESPACE -p '{"metadata":{"finalizers":null}}'</code>
Line 9: Line 11:
 И затем финализируем удаление неймспейса: И затем финализируем удаление неймспейса:
   curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json https://localhost:8080/api/v1/namespaces/BAD_NAMESPACE/finalize   curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json https://localhost:8080/api/v1/namespaces/BAD_NAMESPACE/finalize
 +Однако, если и после этого неймспейс не удалится, то нужно посмотреть на вывод этой команды. Там могут быть сообщения вида:
 +  "status": {
 +    "phase": "Terminating",
 +    "conditions": [
 +      {
 +        "type": "NamespaceDeletionDiscoveryFailure",
 +        "status": "True",
 +        "lastTransitionTime": "2021-10-21T19:59:35Z",
 +        "reason": "DiscoveryFailed",
 +        "message": "Discovery failed for some groups, 1 failing: unable to retrieve the complete list of server APIs: metrics.k8s.io/v1beta1: the server is currently unable to handle the request"
 +      },
 +      ...
 +Что означает, что не работают какие-то сервисы API. Для того, чтобы исправить - просто удаляем заклинивший сервис API:
 +  kubectl delete apiservice v1beta1.metrics.k8s.io
 +И дальше - повторяем curl...       \\
  
 +В самом крайнем случае - можно попробывать ЖЕСТКО перезаупстить все контейнеры кубера:
   systemctl stop kubelet.service   systemctl stop kubelet.service
   for item in `ctr -n k8s.io tasks ls | awk '{print $1}'`; do ctr -n k8s.io tasks kill $item; done    for item in `ctr -n k8s.io tasks ls | awk '{print $1}'`; do ctr -n k8s.io tasks kill $item; done 
  • linux_faq/kubernetes_delete_namespace_hung_in_terminating_state.txt
  • Last modified: 2021/10/22 09:04
  • by admin