记一次删除k8s namespace无法删除的问题
在用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无法删除的问题的更多相关文章
- 5分钟6步强制删除kubernetes NameSpace小技巧
在使用kubernetes过程中,我们经常会遇到无法删除NameSpace的情况,但是如果一一去删除NameSpace中资源比较麻烦.下面我们给大家介绍强制删除NameSpace的方法. 一.查看已存 ...
- k8s pv无法删除问题
一般删除步骤为:先删pod再删pvc最后删pv 但是遇到pv始终处于“Terminating”状态,而且delete不掉.如下图: 解决方法: 直接删除k8s中的记录: kubectl patch p ...
- 正确删除k8s版本jenkins的pod
1.kubectl delete -f jenkins-deployment.yaml 或者先删除pod,再删除对应的depllyment 这两步都要执行否则删除pod不管用 2.删除数据目录下的数据 ...
- k8s namespace/volume
https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/ 只挑个人感觉使用较多/比较重要的点来说 ...
- 【Java EE 学习 71 下】【数据采集系统第三天】【分析答案实体】【删除问题】【删除页面】【删除调查】【清除调查】【打开/关闭调查】
一.分析答案实体 分析答案实体主要涉及到的还是设计上的问题,技术点几乎是没有的.首先需要确定一下答案的格式才能最终确定答案实体中需要有哪些属性. 答案格式的设计是十分重要的,现设计格式如下: 在表单中 ...
- JSON相关知识,转载:删除JSON中数组删除操作
一:JSON是什么 JSONg格式:对象是一个无序的“名称/值”对的集合. 对象以括号开始,括号结束. 名称冒号分隔值. "名称/值"之间用逗号分隔 例: var people = ...
- jq 确定删除方法与文件删除
var choice=confirm("您确认要删除吗?", function() { }, null); if(choice) ...
- PDF中的空白页面怎么删除,PDF页面删除技巧
在Word中想要删除其中一页文档的怎么办?直接打开就可以删除了,那么我们如何删除PDF其中几页呢?下面小编就来告诉大家PDF删除页面跟空白页面的方法.想要删除PDF文档中的页面,可以使用PDF编辑器, ...
- mui 列表项左右滑删除功能升级(仿微信左滑 点击删除后出现确认删除)
mui 列表项左右滑删除功能升级(仿微信左滑 点击删除后出现确认删除) 2018-06-19更新显示样式
随机推荐
- 嵌入:CAN
说下我的学习过程.刚到公司的时候我根本不知道什么是CAN,甚至连以太网和串口通讯都不懂.领导把USBCAN分析仪拿给我,把铜线短接上,用软件在CAN1窗口点下发送,CAN2窗口马上接收到了发送出来的数 ...
- 好客租房27-state的基本使用
5.1state的基本使用 状态:数据 是组件内部的私有数据 只能再组件内部使用 state的值是对象 表示一个组件中可以有多个数据 获取数据 this.state //导入react imp ...
- 好客租房5-React脚手架的应用
3.1react脚手架意义 1脚手架是开发现代web应用的必备 2充分利用webpack babel eslint等工具进行使用 3零配置 4关注业务即可 3.2使用react脚手架初始化项目 1初始 ...
- [C++STL] 迭代器 iterator 的使用
定义 迭代器是一种检查容器内元素并遍历元素的数据类型,表现的像指针. 基本声明方式 容器::iterator it = v.begin();//例:vector<int>::iterato ...
- shellcode编写
shellcode编写 shellcode是一段用于利用软件漏洞而执行的代码,通常使用机器语言编写,其目的往往是让攻击者获得目标机器的命令行shell而得名,其他有类似功能的代码也可以称为shellc ...
- ES6 - promise(2)
从上一篇中我们知道promise的概念,上一篇也提到了 promise的过程: 启动异步任务 => 返回promise对象 =>给promise对象绑定回调函数(甚至可以在异步任务结束后指 ...
- Java 进阶路线图
前言 个人的从事Java开发行业已经也有一段时间,提升自己的Java水平,特整理下学习路线图,以备日后使用. 路线图资料收集 图片打不开,建议使用复制链接打开:或者私信告诉我. Java架构师学习路线 ...
- 自动装箱与自动拆箱——JavaSE基础
自动装箱与自动拆箱 自动装箱与拆箱就是编译器蜜糖(Compiler Sugar) Integer a = 234; // 自动装箱,实际上是Integer a = Integer.valueOF(23 ...
- transforms.py
from PIL import Image from torchvision import transforms #python的用法-->tensor数据类型 #通过transforms.To ...
- composition api和react hooks的对比
一. 我的走位: 保持中立 1. 各有各的好处, 谁也别说谁 2. 一个东西带来的好处, 相应的副作用肯定也有, 人无完人 二 . vue3 的composition api 和 rea ...