码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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删除
    • 四:重启deploy的方式:
      • 1. 有yaml文件的重启方式
      • 2. 没有yaml文件重启方式
        • 2.1 使用scale命令
        • 2.2 直接删除重启
        • 2.3 使用 "-o yaml"参数导出Pod模板并重建模板(推荐)
    • 五:驱逐pod
      • 1、 设置节点不可调用。
      • 2、驱逐pod
      • 3、可调度
      • 4、删除evicted状态pod
    • etcd报错
    • 六、docker overaly2占用巨量空间内容删除

    如果名称空间、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  -n  --force --grace-period=0
    
    kubectl patch pod xxx -n  xxx -p '{"metadata":{"finalizers":null}}'
    
    • 1
    • 2
    • 3

    二:强制删除pv、pvc

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

    # 删除 namespace下的pod名为pod-to-be-deleted-0
        export ETCDCTL_API=3 
    etcdctl del /registry/pods/《namespace》/《》
    # 删除需要删除的
        etcdctl del /registry/namespaces/NAMESPACENAME
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

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

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

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

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

    2、最终解决方法:

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

    kubectl get ns -A
    
    • 1

    在这里插入图片描述

    2、查看Terminating namespace中的finalizer。

    kubectl get ns kubesphere-system -o yaml
    
    • 1

    在这里插入图片描述

    3、导出json格式到文件

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

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

    5行 : 5dd
    {​

    5、开启proxy:8001端口

    kubectl proxy
    
    • 1

    在这里插入图片描述

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    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
    
    • 1

    在这里插入图片描述

    7、确认namespace删除

    在这里插入图片描述

    四:重启deploy的方式:

    1. 有yaml文件的重启方式

    kubectl replace --force -f xxx.yaml
    
    • 1

    2. 没有yaml文件重启方式

    2.1 使用scale命令

    kubectl scale   --replicas=0 -n {namespace}
    kubectl scale   --replicas=1 -n {namespace}
    
    • 1
    • 2

    2.2 直接删除重启

    此方式只针对使用的deployment对象,并且重启策略为可以重启,则可以尝试删除重启

    kubectl delete replicaset {rs_name} -n {namespace}
    
    • 1

    2.3 使用 "-o yaml"参数导出Pod模板并重建模板(推荐)

    kubectl get pod {podname} -n {namespace} -o yaml | kubectl replace --force -f -
    
    • 1

    五:驱逐pod

    1、 设置节点不可调用。

     kubectl cordon 192.168.220.131
    
    • 1

    2、驱逐pod

    kubectl drain 192.168.220.131 --delete-local-data --ignore-daemonsets --force 
    
    • 1

    3、可调度

    kubectl uncordon   192.168.220.131
    
    • 1

    4、删除evicted状态pod

    kubectl -n kube-system  get pods | grep -i evicted | awk '{print$1}'|xargs kubectl -n kube-system delete pods
    
    • 1

    etcd报错

    1 台 master 加入集群后发现忘了修改主机名,而在 k8s 集群中修改节点主机名非常麻烦,将 master 退出集群改名并重新加入集群(前提是用的是高可用集群)。

    问题:
    k8s现在使用的是etcd v3,必须提供ca、key、cert,否则会出现Error: context deadline exceeded
    不加–endpoint参数时,默认访问的127.0.0.1:2379,而使用–endpoint参数时,必须提供ca,key,cert。

    Failed to get etcd status for with maintenance client: context deadline exc...
    
    code = DeadlineExceded desc = latest balancer error: last connection error: connection closed before server preface received"
    
    • 1
    • 2
    • 3

    查询

    etcdctl --write-out=table member list
    
    
    
    etcdctl --endpoints=$ETCD_ENDPOINTS \
    --cert=/srv/etcd/etc/ssl/etcd.crt \
    --key=/srv/etcd/etc/ssl/etcd.key \
    --cacert=/srv/etcd/etc/ssl/ca.crt \
    member list --write-out=table 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    删除

    docker exec -it $(docker ps -f name=etcd_etcd -q) /bin/sh
    
    etcdctl --endpoints 127.0.0.1:2379 --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key member remove 
    
    • 1
    • 2
    • 3

    六、docker overaly2占用巨量空间内容删除

    #删除所有未使用的镜像:
    docker image prune -a
    
    #删除未使用的Docker数据卷:
    docker volume prune
    
    ¥清理overlay2目录中未使用的文件。使用以下命令列出所有未使用的文件:
    docker system df
    
    #使用以下命令删除所有未使用的文件:
    docker system prune --all --force --volumes
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    网络安全(黑客)自学
    腾讯云2023年最新优惠券领取入口
    行为设计模式之职责链模式
    17--Django-项目实战-博客开发-登录功能和首页页面搭建
    学生个人网页设计作品:旅游网页设计与实现——成都旅游网站4个页HTML+CSS web前端网页设计期末课程大作业 学生DW静态网页设计 学生个人网页设计作品
    【牛客网】HJ91.走方格的方案数
    Opensips安装配置(以下操作均已centOS 6.3系统为准)
    (六)Spring源码解析:Spring AOP源码解析
    导航app为什么知道还有几秒变绿灯?
    springboot+vue微信小程序的医院核酸检测预约挂号微信小程序#毕业设计
  • 原文地址:https://blog.csdn.net/qq_44637753/article/details/133780941
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号