本文记录了k8s实践中遇到的操作层面的一些坑

  1. 无法删除namespace

在操作过程中遇到这样的报错,unable to create new content in namespace nodedeployment-system because it is being terminated,查了一下,发现是nodedeployment-system这个namespace没删掉,一直处于terminating状态。如下所示:

1
2
3
4
5
6
7
8
$ kubectl get namespace
NAME                    STATUS        AGE
kube-public             Active        126d
kube-system             Active        126d
kubeedge                Active        32d
logging                 Active        125d
monitoring              Active        42d
nodedeployment-system   Terminating   12d

造成这个问题的原因很可能是,在这个namespace下,还有一些所属资源没有删掉。所以我们要手动把这些资源删掉,然后对应的,这个namespace就能正常删除了。

通过如下命令查看指定namespace下的资源

1
$ kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n <your_namespace> 

参考:https://www.ibm.com/support/knowledgecenter/SSBS6K_3.2.x/troubleshoot/ns_terminating.html

  1. 强制删除资源

使用--grace-period=0 --force参数。

1
kubectl delete pod <PODNAME> --grace-period=0 --force --namespace <NAMESPACE>

参考:https://stackoverflow.com/questions/35453792/pods-stuck-in-terminating-status