容器技术
ubuntu使用APT安装docker并指定版本
Helm部署与使用
Helm常用命令
从Helm仓库创建应用流程示例
Helm部署与使用
K8S中部署mysql-ha高可用集群
helm启动mysql-ha
helm几个常用仓库
Kubernetes使用helm部署Mysql-Ha
k8s入门:Helm 构建 MySQL
docker批量修改tag(批量push)
k8s之yaml文件详解
将 MySQL 通过 bitpoke/mysql-operator 部署到 k8s 内部
k8s pvc扩容:pvc创建后扩容
K8S性能分析
部署Metrics Server
Kubernetes集群搭建
kubespray 部署常见问题和优化汇总
kubernetes-sigs/kubespray at release-2.15
K8S-pod配置文件详解
KubeSphere知识库
在 Kubernetes 上最小化安装 KubeSphere
卸载 KubeSphere 和 Kubernetes
KubeSphere 应用商店
修改pod中容器的时区
k8s之Pod安全策略
Harbor 登陆失败,用户名或者密码不正确。405 Not Allowed
Docker-leanote_n1
kubesphere/kubekey
Kubernetes Static Pod (静态Pod)
kubernets kube-proxy的代理 iptables和ipvs - 30岁再次出发 - 博客园
k8s生产实践之获取客户端真实IP - SSgeek - 博客园
kube-proxy ip-tables故障解决
k8s入门:Helm 构建 MySQL
docker批量修改tag(批量push)
prometheus operator 监控redis-exporter
Helm3 安装 ElasticSearch & Kibana 7.x 版本
kubernete强力删除namespace_redis删除namespace命令
EFK (Elasticsearch + Fluentd + Kibana) 日志分析系统
k8s日志收集实战(无坑)
fluentd收集k8s集群pod日志
Elasticsearch+Fluentd+Kibana 日志收集系统的搭建
TKE/EKS之configmap,secret只读挂载
K8s基于Reloader的ConfigMap/Secret热更新
使用 Reloader 实现热部署_k8s reloader
k8s使用Reloader实现更新configmap后自动重启pod
在 Kubernetes 上对 gRPC 服务器进行健康检查 | Kubernetes
Kubernetes ( k8s ) gRPC服务 健康检查 ( livenessProbe ) 与 就绪检查 ( readinessProbe )
排查kubernetes中高磁盘占用pod
helm 安装 MongoDB 集群
helm 安装 Redis 1 主 2 从 3哨兵
【k8s】使用 Reloader 实现热部署
k8s证书过期,更新后kubelet启动失败
kubeadm证书/etcd证书过期处理
三种监控 Kubernetes 集群证书过期方案
K8s 集群(kubeadm) CA 证书过期解决方案
k8s调度、污点、容忍、不可调度、排水、数据卷挂载
5分钟搞懂K8S的污点和容忍度(理论+实战)
Kubernetes进阶-8基于Istio实现微服务治理
macvlan案例配置
快速解决Dockerhub镜像站无法访问问题
info_scan开源漏洞扫描主系统部署
本文档使用 MrDoc 发布
-
+
首页
kubernete强力删除namespace_redis删除namespace命令
- [问题描述](#_1) - [解决办法](#_4) - [强力删除rancher的Namespace需要下面的办法](#rancherNamespace_101) ## 问题描述 在k8s中,有些namespace创建之后,觉得不需要了,想删除掉,但怎么都删不掉。类似于下图,即使用delete --force命令也删不掉,这些ns最终还是现实为terminating状态。  ## 解决办法 1. 将该namespace导出为json格式。 ```shell kubectl get ns redis -o json > tmp.json ``` 2. 编辑该json,去除掉spec部分。 ```shell vim tmp.json # 原始数据 { "apiVersion": "v1", "kind": "Namespace", "metadata": { "annotations": { "cattle.io/status": "{\"Conditions\":[{\"Type\":\"InitialRolesPopulated\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2020-05-15T03:14:31Z\"},{\"Type\":\"ResourceQuotaInit\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2020-05-15T03:14:30Z\"}]}", "field.cattle.io/creatorId": "user-gpdkw", "field.cattle.io/projectId": "c-bz2b7:p-w5xc9", "lifecycle.cattle.io/create.namespace-auth": "true" }, "creationTimestamp": "2020-05-15T03:05:12Z", "deletionTimestamp": "2020-05-15T03:13:31Z", "labels": { "cattle.io/creator": "norman", "field.cattle.io/projectId": "p-w5xc9" }, "name": "redis", "resourceVersion": "29284653", "selfLink": "/api/v1/namespaces/redis", "uid": "e4763eae-9658-11ea-b716-000c291a5adf" }, #删除掉spec包裹的部分 "spec": { "finalizers": [ "kubernetes" ] }, "status": { "phase": "Terminating" } } # 修改后的数据 { "apiVersion": "v1", "kind": "Namespace", "metadata": { "annotations": { "cattle.io/status": "{\"Conditions\":[{\"Type\":\"InitialRolesPopulated\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2020-05-15T03:14:31Z\"},{\"Type\":\"ResourceQuotaInit\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2020-05-15T03:14:30Z\"}]}", "field.cattle.io/creatorId": "user-gpdkw", "field.cattle.io/projectId": "c-bz2b7:p-w5xc9", "lifecycle.cattle.io/create.namespace-auth": "true" }, "creationTimestamp": "2020-05-15T03:05:12Z", "deletionTimestamp": "2020-05-15T03:13:31Z", "labels": { "cattle.io/creator": "norman", "field.cattle.io/projectId": "p-w5xc9" }, "name": "redis", "resourceVersion": "29284653", "selfLink": "/api/v1/namespaces/redis", "uid": "e4763eae-9658-11ea-b716-000c291a5adf" }, "spec": { }, "status": { "phase": "Terminating" } } ``` 3. 编辑该json,去除掉spec部分。 ```shell # 打开一个终端,开启proxy。不然要经过API server的验证。 kubectl proxy # 向开放的端口提交修改后的json。 curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json 127.0.0.1:8001/api/v1/namespaces/redis/finalize # 查看是否应用成功 kubectl get ns ``` 4.脚本 ```shell NAMESPACE=rook-ceph kubectl proxy & kubectl get namespace $NAMESPACE -o json |jq '.spec = {"finalizers":[]}' >temp.json curl -k -H "Content-Type: application/json" -X PUT --data-binary @temp.json 127.0.0.1:8001/api/v1/namespaces/$NAMESPACE/finalize ``` ## 强力删除rancher的Namespace需要下面的办法 ```shell kubectl patch namespace cattle-system -p '{"metadata":{"finalizers":[]}}' --type='merge' -n cattle-system kubectl delete namespace cattle-system --grace-period=0 --force kubectl patch namespace cattle-global-data -p '{"metadata":{"finalizers":[]}}' --type='merge' -n cattle-system kubectl delete namespace cattle-global-data --grace-period=0 --force kubectl patch namespace local -p '{"metadata":{"finalizers":[]}}' --type='merge' -n cattle-system for resource in `kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get -o name -n local`; do kubectl patch $resource -p '{"metadata": {"finalizers": []}}' --type='merge' -n local; done kubectl delete namespace local --grace-period=0 --force ```
adouk
2023年4月18日 17:01
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码