跳转至

001 k8s删除资源时hang住案例和处理过程

k8s 删除资源时hang 住

背景描述

  • 删除pods、namespace等资源时,hang在删除命令界面无法自动退出

解决过程

  • 尝试用strace kubectl delete ...命令追踪命令执行过程中的hang死信息,无太多帮助,放弃此线路

  • 尝试重启kube-dns,问题仍存在

  • 查看docker日志,无太多发现

  • 查看kubelet日志,有以下重要提示:unable to retrieve the complete list of server API

解决方案

k8s

#1.查找到出问题的apiservice
$ kubectl get apiservice
#可以看到其中有出现false状态的apiservice,删除出问题的apiservice故障即可解决。
#2. 删除出问题的apiservice
$ kubectl delete apiservce <service-name>

OpenShift

# kubectl get ns 查看处于Terminating的ns
[root@VM_1_4_centos ~]# kubectl get ns | grep testns
testns Terminating 21d
# 将处于Terminating的ns的描述文件保存下来
[root@VM_1_4_centos ~]# kubectl get ns testns -o json > tmp.json
[root@VM_1_4_centos ~]# cat tmp.json 
{
 "apiVersion": "v1",
 "kind": "Namespace",
  "metadata": {
 "creationTimestamp": "2020-10-13T14:28:07Z",
 "name": "testns",
 "resourceVersion": "13782744400",
 "selfLink": "/api/v1/namespaces/testns",
 "uid": "9ff63d71-a4a1-43bc-89e3-78bf29788844"
 },
 "spec": {
 "finalizers": [
 "kubernetes"
 ]
 },
 "status": {
 "phase": "Terminating"
 }
}
# 删除上述json文件的spec和status部分
 "spec": {
 "finalizers": [
 "kubernetes"
 ]
 },
 "status": {
 "phase": "Terminating"
 } 
# 本地启动kube proxy
kubectl proxy --port=8081
# 新开窗口执行删除操作
curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json http://
127.0.0.1:8081/api/v1/namespaces/testns/finalize