no way to compare when less than two revisions

Differences

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


Previous revision
linux_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://kb.kasten.io/knowledge/how-to-debug-namespaces-that-are-stuck-terminating \\
  
 +Что делать, если неймспейс при удалении завис в состоянии **Terminating**? \\
 +  * Нужно попытаться отредактировать его и удалить **finalizers** (в том числе и из спецификации). Например так: <code>kubectl patch ns BAD_NAMESPACE -p '{"metadata":{"finalizers":null}}'</code>
 +  * Если это не помогло (**finalizers** вернулись а место после удаления), то нужно сделать так:
 +<code>kubectl get namespace BAD_NAMESPACE -o json > tmp.json</code>
 +Отредактировать файлик **tmp.json**, удалив из него **finalizers**, а затем применить его. \\
 +Для этого - проксируем API на локальный порт:
 +  sudo -E kubectl proxy --port=8080
 +И затем финализируем удаление неймспейса:
 +  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
 +  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 containers ls | awk '{print $1}'`; do ctr -n k8s.io containers rm $item; done
 +  ctr -n k8s.io tasks ls
 +  ctr -n k8s.io containers ls
 +  systemctl start kubelet.service
  • linux_faq/kubernetes_delete_namespace_hung_in_terminating_state.txt
  • Last modified: 2021/10/22 09:04
  • by admin