k8s强制删除pod、svc、namespace(Terminating)

2023-10-14 19:45

本文主要是介绍k8s强制删除pod、svc、namespace(Terminating),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

k8s强制删除pod、svc、namespace(Terminating)

  • 一:强制删除pod
    • 1、命令加参方法:
  • 二:强制删除pv、pvc
  • 三、强制删除ns,以namespace:kubesphere-system为例
    • 1、以下强制删除也不好使:
    • 2、最终解决方法:
      • 1)查看处于“Terminating”状态的namespace:
      • 2、查看Terminating namespace中的finalizer。
      • 3、导出json格式到文件
      • 4、编辑tmp.josn,删除finalizers 字段的值
      • 5、开启proxy:8001端口
        • 5注:
      • 6、新开窗口、调用8001--api
      • 7、确认namespace删除

如果名称空间、pod、pv、pvc全部处于“Terminating”状态时,此时的该名称空间下的所有控制器都已经被删除了,之所以出现pod、pvc、pv、ns无法删除,那是因为kubelet 阻塞,有其他的资源在使用该namespace,比如CRD等,尝试重启kubelet,再删除该namespace 也不好使。

正确的删除方法:删除pod–> 删除pvc —> 删除pv --> 删除名称空间

一:强制删除pod

1、命令加参方法:

加参数 --force --grace-period=0,grace-period表示过渡存活期,默认30s,在删除POD之前允许POD慢慢终止其上的容器进程,从而优雅退出,0表示立即终止POD

kubectl delete pod <your-pod-name> -n <name-space> --force --grace-period=0kubectl patch pod xxx -n  xxx -p '{"metadata":{"finalizers":null}}'

二:强制删除pv、pvc

直接删除k8s etcd数据库中的记录!

# 删除 namespace下的pod名为pod-to-be-deleted-0export ETCDCTL_API=3 
etcdctl del /registry/pods/default/pod-to-be-deleted-0
# 删除需要删除的etcdctl del /registry/namespaces/NAMESPACENAME

命令,将PV的状态设置为“released”。

kubectl patch pv xxx -p '{"metadata":{"finalizers":null}}'
kubectl patch pvc xxx -p '{"metadata":{"finalizers":null}}'
kubectl delete pv my-pv

三、强制删除ns,以namespace:kubesphere-system为例

1、以下强制删除也不好使:

kubectl delete ns kubesphere-system --force --grace-period=0kubectl get namespace my-namespace -o json | kubectl delete -f -  (未实验)

2、最终解决方法:

1)查看处于“Terminating”状态的namespace:

kubectl get ns -A

在这里插入图片描述

2、查看Terminating namespace中的finalizer。

kubectl get ns kubesphere-system -o yaml

在这里插入图片描述

3、导出json格式到文件

kubectl get ns kubesphere-system -o json >tmp.json

4、编辑tmp.josn,删除finalizers 字段的值

5行 : 5dd
{​

5、开启proxy:8001端口

kubectl proxy

在这里插入图片描述

5注:

如果不用Proxy 模式, 要想用curl直接访问API,则需要自带密码认证信息:

APISERVER=$(kubectl config view --minify | grep server | cut -f 2- -d ":" | tr -d " ")
SECRET_NAME=$(kubectl get secrets | grep ^default | cut -f1 -d ' ')
TOKEN=$(kubectl describe secret $SECRET_NAME | grep -E '^token' | cut -f2 -d':' | tr -d " ")curl $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure

6、新开窗口、调用8001–api

curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json http://127.0.0.1:8001/api/v1/namespaces/kubesphere-system/finalize

在这里插入图片描述

7、确认namespace删除

在这里插入图片描述

这篇关于k8s强制删除pod、svc、namespace(Terminating)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/212729

相关文章

Mysql实现范围分区表(新增、删除、重组、查看)

《Mysql实现范围分区表(新增、删除、重组、查看)》MySQL分区表的四种类型(范围、哈希、列表、键值),主要介绍了范围分区的创建、查询、添加、删除及重组织操作,具有一定的参考价值,感兴趣的可以了解... 目录一、mysql分区表分类二、范围分区(Range Partitioning1、新建分区表:2、分

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

如何在Mac上彻底删除Edge账户? 手动卸载Edge浏览器并清理残留文件技巧

《如何在Mac上彻底删除Edge账户?手动卸载Edge浏览器并清理残留文件技巧》Mac上的Edge账户里存了不少网站密码和个人信息,结果同事一不小心打开了,简直尴尬到爆炸,想要卸载edge浏览器并清... 如果你遇到 Microsoft Edge 浏览器运行迟缓、频繁崩溃或网页加载异常等问题,可以尝试多种方

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir