在用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. C# Thread.Sleep 不精准的问题以及解决方案

    1.问题 最近在写一个熔断的 SDK,其中一种策略是根据慢请求来进行熔断. 我们在测试的时候,在对应 API 里面采用了 Thread.Sleep(ms) 来模拟慢请求. 设置的慢请求阈值是 RT 1 ...

  2. psexec.py规避杀软

    前言 在内网渗透中,当获取到一个账号密码后,经常会使用impacket套件中的psexec.py进行远程连接并执行命令,但是因为用的人多了,杀软也对psexec.py特征进行了拦截,也就导致了如果使用 ...

  3. python入门基础知识二(字符串的常用操作方法)

    下标/索引: a = "I'm interested in Python." print(a[4]) i # 英文的字符串每一个下标/索引对应一个字母(含标点) a = '我喜欢p ...

  4. TS 自学笔记(一)

    TS 自学笔记(一) 本文写于 2020 年 5 月 6 日 日常废话两句 有几天没有更新了,最近学的比较乱,休息了两天感觉好一些了.这两天玩了几个设计软件,过几天也写篇文章分享分享. 为啥要学 TS ...

  5. Vue的vue-router基本使用

    一.Vue-router是什么? Vue Router是Vue.js的路由管理器.和Vue.js的核心深度集成,是SPA单页应用的路径管理器,适合用于构建单页面应用.Vue的单页面应用是基于路由和组件 ...

  6. hash和history路由的区别

    在了解路由模式前,我们先看下 什么是单页面应用,vue-router  的实现原理是怎样的,这样更容易理解路由. SPA与前端路由 SPA(单页面应用,全程为:Single-page Web appl ...

  7. MySQLDocker 主从复制搭建

    MySQLDocker 主从复制搭建 MySQLDocker 的搭建 docker search mysql docker pull mysql/mysql-server:8.0.26 docker ...

  8. 深入C++03:面向对象

    面向对象 类和对象.this指针 不用做太多笔记,都可以看初识C++的笔记: 记住:声明后面都要加":",比如声明方法和变量还有class结束的地方:而实现函数出来的地方是不需要加 ...

  9. 使用JavaCV实现读取视频信息及自动截取封面图

    概述 最近在对之前写的一个 Spring Boot 的视频网站项目做功能完善,需要利用 FFmpeg 实现读取视频信息和自动截图的功能,查阅资料后发现网上这部分的内容非常少,于是就有了这篇文章. 视频 ...

  10. EasyExcel-合并单元格

    pom版本 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</ ...