在用longhorn工具做k8s存储卷动态预配的时候,需要修改longhorn.yaml的一个默认参数,修改完成需要重新加载longhorn.yaml,结果重新加载出错了,修改的参数没有生效,于是执行kubectl delete -f longhorn.yaml想将部署的资源全部删除重新启动;但是发现创建的namespace无法删除,状态一直是Terminating;

[root@k8smaster longhorn]# kubectl get ns
NAME STATUS AGE
default Active 49d
dev Active 29d
kube-node-lease Active 49d
kube-public Active 49d
kube-system Active 49d
longhorn-system Terminating 11h
stage Active 29d
[root@k8smaster longhorn]# kubectl delete ns longhorn-system
Error from server (Conflict): Operation cannot be fulfilled on namespaces "longhorn-system": The system is ensuring all content is removed from this namespace. Upon completion, this namespace will automatically be purged by the system.
从报错来看是因为在该名称空间中还有没有删除的内容,但是查找了该名称空间,该名称空间中已经没有运行的pod了;

解决方式:通过api来删除

先查找到该namespace的api接口地址
[root@k8smaster longhorn]# kubectl get ns/longhorn-system -o yaml
apiVersion: v1
kind: Namespace
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"longhorn-system"}}
creationTimestamp: "2021-06-29T15:43:23Z"
deletionTimestamp: "2021-06-30T02:48:32Z"
name: longhorn-system
resourceVersion: "6197365"
selfLink: /api/v1/namespaces/longhorn-system
uid: bcc59118-d8f0-11eb-b1e9-000c29087c24
spec:
finalizers:
- kubernetes
status:
phase: Terminating
导出该namespace json格式的详细信息
[root@k8smaster longhorn]# kubectl get ns longhorn-system -o json > longhorn-system.json
[root@k8smaster longhorn]# cat longhorn-system.json
{
"apiVersion": "v1",
"kind": "Namespace",
"metadata": {
"annotations": {
"kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"longhorn-system\"}}\n"
},
"creationTimestamp": "2021-06-29T15:43:23Z",
"deletionTimestamp": "2021-06-30T02:48:32Z",
"name": "longhorn-system",
"resourceVersion": "6197365",
"selfLink": "/api/v1/namespaces/longhorn-system",
"uid": "bcc59118-d8f0-11eb-b1e9-000c29087c24"
},
"spec": {
"finalizers": [
"kubernetes"
]
},
"status": {
"phase": "Terminating"
}
}
删除finalizers的认证方式;
删除后的json文件;
[root@k8smaster longhorn]# cat longhorn-system.json
{
"apiVersion": "v1",
"kind": "Namespace",
"metadata": {
"annotations": {
"kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"longhorn-system\"}}\n"
},
"creationTimestamp": "2021-06-29T15:43:23Z",
"deletionTimestamp": "2021-06-30T02:48:32Z",
"name": "longhorn-system",
"resourceVersion": "6197365",
"selfLink": "/api/v1/namespaces/longhorn-system",
"uid": "bcc59118-d8f0-11eb-b1e9-000c29087c24"
},
"spec": {
"finalizers": [
]
},
"status": {
"phase": "Terminating"
}
}
调用接口删除该namespace
1、因为k8s接口默认使用https访问的,所以需要临时开一个HTTP代理端口
[root@k8smaster ~]# kubectl proxy
Starting to serve on 127.0.0.1:8001
2、新开一个终端,执行调用接口命令,注意接口最后加上finalize
[root@k8smaster longhorn]# curl -k -H "Content-Type: application/json" -X PUT --data-binary @longhorn-system.json http://127.0.0.1:8001/api/v1/namespaces/longhorn-system/finalize
{
"kind": "Namespace",
"apiVersion": "v1",
"metadata": {
"name": "longhorn-system",
"selfLink": "/api/v1/namespaces/longhorn-system/finalize",
"uid": "bcc59118-d8f0-11eb-b1e9-000c29087c24",
"resourceVersion": "6202444",
"creationTimestamp": "2021-06-29T15:43:23Z",
"deletionTimestamp": "2021-06-30T02:48:32Z",
"annotations": {
"kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"longhorn-system\"}}\n"
}
},
"spec": { },
"status": {
"phase": "Terminating"
}
}
3、查看k8s的ns,发现longhorn-system被删除了
[root@k8smaster longhorn]#kubectl get ns
NAME STATUS AGE
default Active 49d
dev Active 29d
kube-node-lease Active 49d
kube-public Active 49d
kube-system Active 49d
stage Active 29d

记一次删除k8s namespace无法删除的问题的更多相关文章

  1. 5分钟6步强制删除kubernetes NameSpace小技巧

    在使用kubernetes过程中,我们经常会遇到无法删除NameSpace的情况,但是如果一一去删除NameSpace中资源比较麻烦.下面我们给大家介绍强制删除NameSpace的方法. 一.查看已存 ...

  2. k8s pv无法删除问题

    一般删除步骤为:先删pod再删pvc最后删pv 但是遇到pv始终处于“Terminating”状态,而且delete不掉.如下图: 解决方法: 直接删除k8s中的记录: kubectl patch p ...

  3. 正确删除k8s版本jenkins的pod

    1.kubectl delete -f jenkins-deployment.yaml 或者先删除pod,再删除对应的depllyment 这两步都要执行否则删除pod不管用 2.删除数据目录下的数据 ...

  4. k8s namespace/volume

    https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/ 只挑个人感觉使用较多/比较重要的点来说 ...

  5. 【Java EE 学习 71 下】【数据采集系统第三天】【分析答案实体】【删除问题】【删除页面】【删除调查】【清除调查】【打开/关闭调查】

    一.分析答案实体 分析答案实体主要涉及到的还是设计上的问题,技术点几乎是没有的.首先需要确定一下答案的格式才能最终确定答案实体中需要有哪些属性. 答案格式的设计是十分重要的,现设计格式如下: 在表单中 ...

  6. JSON相关知识,转载:删除JSON中数组删除操作

    一:JSON是什么 JSONg格式:对象是一个无序的“名称/值”对的集合. 对象以括号开始,括号结束. 名称冒号分隔值. "名称/值"之间用逗号分隔 例: var people = ...

  7. jq 确定删除方法与文件删除

    var choice=confirm("您确认要删除吗?", function() { }, null);                if(choice)           ...

  8. PDF中的空白页面怎么删除,PDF页面删除技巧

    在Word中想要删除其中一页文档的怎么办?直接打开就可以删除了,那么我们如何删除PDF其中几页呢?下面小编就来告诉大家PDF删除页面跟空白页面的方法.想要删除PDF文档中的页面,可以使用PDF编辑器, ...

  9. mui 列表项左右滑删除功能升级(仿微信左滑 点击删除后出现确认删除)

    mui 列表项左右滑删除功能升级(仿微信左滑 点击删除后出现确认删除) 2018-06-19更新显示样式

随机推荐

  1. Nginx的常用配置

    Nginx配置文件结构 设置worker进程的用户,指的linux中的用户,会涉及到nginx操作目录或文件的一些权限,默认为 nobodyuser root; worker进程工作数设置,一般来说C ...

  2. 手脱FSG(2.0)

    1.查壳 2.x32dbg脱壳 在第二个xchg处使用ESP定律脱壳: 由于FSG壳特性,在跳转后位置向上查找,找到js\jne\jmp,jmp就是OEP位置: 在此处使用工具进行脱壳: 完成! 3. ...

  3. 基于 range 的 for 循环和 auto

    基于 range 的 for 循环和 auto C++11 引入一种循环的新形式,叫基于 range 的 for 循环,它允许我们用更简单易读的形式遍历容器中的所有元素 vector<int&g ...

  4. mapstruct 的 mapstruct-processor 自动生成的 Impl 文件中未设置属性值(时好时坏)

    配置依赖和注解处理器 ... <properties> <org.mapstruct.version>1.4.2.Final</org.mapstruct.version ...

  5. 无线:SSID

    BSSID,SSID,ESSID区别   SSID(Service Set Identifier)   SSID,AP唯一的ID码,许多人认为可以将SSID写成ESSID,其实不然,SSID是个笼统的 ...

  6. 用python实现自动化登录禅道系统 设置定时器自动执行脚本

    由于各种原因,我想试下用python实现自动登录禅道系统,并且每天定时执行.(本人第一次接触自动化,在大佬眼中门槛都没摸到的类型) 首先缕清思路: 1.实现自动登录禅道系统,用selenium实现2. ...

  7. 2020级C++实验课-期末机考模拟考题解

    做这个题解的理由很简单,有很多同学想写但是不会写,凑巧我写了,所以搞个题解. 顺序就是题单里的顺序(界面左上角菜单切换文章,右上角目录方便查看) 1:黑马白马 题意: 随机得到一个数字,如果是偶数,则 ...

  8. OI中组合数学公式和定理90%歼灭

    组合数学 基础概念 加法和乘法原理 加法原理 同一步下的不同选择,可以通过累加得到方案数. 乘法原理 整个流程的方案数可以由每一步的方案数相乘得到. 有了加法原理和乘法原理,就可以解决一些没有选择导致 ...

  9. Spring Boot整合Swagger报错:"this.condition" is null

    前段时间看到群里有吐槽swagger整合问题,当时没仔细看,总以为是姿势不对. 这两天正好自己升级Spring Boot版本,然后突然出现了这样的一个错误: Caused by: java.lang. ...

  10. python变量名下划线

    xx: 公有变量 _x: 单前置下划线,保护变量,私有化属性或方法,不能用于'from module import *' 以单下划线开头的表示的是protected类型的变量.即保护类型只能允许其/类 ...