《OpenShift 4.x HOL教程汇总》

  1. 创建模拟项目。
$ oc new-project finalizer-example
  1. 创建内容如下的test-secret.yaml文件,其中定义了一个Secret类型的对象。
apiVersion: v1
kind: Secret
metadata:name: test-secretfinalizers:- kubernetes.io/finalizer-example
stringData:sensitiveKey: sensitiveValue
  1. 创建Secret对象。
$ oc create -f test-secret.yaml
  1. 删除finalizer-example项目,返回项目被删。
$ oc delete namespace finalizer-example --wait=false
namespace "finalizer-example" deleted
  1. 不过查看finalizer-example项目状态,此时项目还处于“Terminating”状态。
$ oc get namespace finalizer-example
NAME                STATUS        AGE
finalizer-example   Terminating   15m
  1. 查看项目的当前详细情况。从’Some resources are remaining: secrets. has 1 resource instances’的提示可确认是由于项目中还有一个secret,所以项目无法被删除掉。
$ oc get namespace finalizer-example -o yaml
apiVersion: v1
kind: Namespace。
。。。
spec:                                                                                                finalizers:                                                                                        -- kubernetes
status:                                                                                              conditions:                                                                                        -- lastTransitionTime: "2020-08-21T14:50:49Z"                                                       message: All resources successfully discovered                                                   reason: ResourcesDiscovered                                                                      status: "False"                                                                                  type: NamespaceDeletionDiscoveryFailure                                                          -- lastTransitionTime: "2020-08-21T14:50:49Z"                                                       message: All legacy kube types successfully parsed                                               reason: ParsedGroupVersions                                                                      status: "False"                                                                                  type: NamespaceDeletionGroupVersionParsingFailure                                                -- lastTransitionTime: "2020-08-21T14:50:49Z"                                                       message: All content successfully deleted, may be waiting on finalization                        reason: ContentDeleted                                                                           status: "False"                                                                                  type: NamespaceDeletionContentFailure                                                            -- lastTransitionTime: "2020-08-21T14:50:49Z"                                                       message: 'Some resources are remaining: secrets. has 1 resource instances'                       reason: SomeResourcesRemain                                                                      status: "True"                                                                                   type: NamespaceContentRemaining                                                                  -- lastTransitionTime: "2020-08-21T14:50:49Z"                                                       message: 'Some content in the namespace has finalizers remaining: kubernetes.io/finalizer-example in 1 resource instances'                                                                       reason: SomeFinalizersRemain                                                                     status: "True"                                                                                   type: NamespaceFinalizersRemaining                                                               phase: Terminating
  1. 查看finalizer-example项目中包括的所有对象向。我们可以看到除了test-secret对象外,还有很多其他隐含对象。
$ oc api-resources --verbs=list --namespaced -o name | xargs -n 1 oc get --show-kind --ignore-not-found -n finalizer-example
NAME                 TYPE     DATA   AGE
secret/test-secret   Opaque   1      45s
NAME                                                                                       CATALOG               AGE
packagemanifest.packages.operators.coreos.com/openshiftxray-operator                       Certified Operators   6d13h
packagemanifest.packages.operators.coreos.com/kong-offline-operator                        Certified Operators   6d13h
packagemanifest.packages.operators.coreos.com/argocd-operator                              Community Operators   6d13h
packagemanifest.packages.operators.coreos.com/jaeger-product                               Red Hat Operators     6d13h
...
  1. 由于所有对象都存放在Etcd中,因此我们可以进入运行Etcd的Pod中。
$ oc rsh -n openshift-etcd $(oc get pods -n openshift-etcd -o=jsonpath='{.items[0].metadata.name}')
Defaulting container name to etcdctl.
Use 'oc describe pod/etcd-ip-10-0-139-90.ap-southeast-1.compute.internal -n openshift-etcd' to see all of the containers in this pod.
  1. 查询Etcd中finalizer-example项目下的资源,确认查询到“test-secret”。
sh-4.2# for r in `etcdctl get / --prefix --keys-only | grep "^/.*/.*/finalizer-example/.*"`; do echo "Resource: '$(echo $r | cut -d"/" -f 3)' - Name: '$(echo $r | cut -d"/" -f 5)'"; done
Resource: 'secrets' - Name: 'test-secret'
  1. 手动删除test-secret对象中的finalizers中的内容。
$ oc patch secret test-secret -n finalizer-example -p '{"metadata":{"finalizers":[]}}' --type=merge
secret/test-secret patched
  1. 确认此时finalizer-example项目已经被删除掉。
$ oc get namespace finalizer-example
Error from server (NotFound): namespaces "finalizer-example" not found
  1. 如果finalizer-example项目还没有被删除,可以执行以下操作删除finalizer-example项目。
    将finalizer-example项目配置导出文件。
$ oc get project finalizer-example -o json > finalizer-example.json

编辑finalizer-example.json文件,删除"finalizers"的内容。

{"apiVersion": "v1","kind": "Namespace","metadata": {..."name": "finalizer-example",...},"spec": {"finalizers": []},"status": {...}
}

然后执行命令,将修改后的finalizer-example.json提价到OpenShift中即可。

$ curl -k -H "Content-Type: application/json" -H "Authorization: Bearer $(oc whoami -t)" -X PUT --data-binary @finalizer-example.json $(oc whoami --show-server)/api/v1/namespaces/finalizer-example/finalize

OpenShift 4 - 如何删除Terminating状态的项目相关推荐

  1. 删除Terminating状态的Pod

    <OpenShift 4.x HOL教程汇总> 第一招:强制删除名为POD_NAME的Pod. $ oc delete pod POD_NAME --grace-period=0 --fo ...

  2. Kubernetes删除一直处于Terminating状态的namespace

    背景:近期由于公司需要将部署在ucloud上的rancher迁移到阿里云上,所以需要将原有Rancher依赖的namespace(cattle-system)删除,但在删除中出现了删除的namespa ...

  3. K8S命名空间处于Terminating状态,如何强制删除

    一.现象 当删除命名空间后,发现该空间一直处于Terminating状态 [root@imanager-beta-arm-21756-5g5ap ~]# kubectl get ns NAME STA ...

  4. 服务器上的此文件夹中具有更多项目,清理或删除“可恢复的项目”文件夹中的项目...

    清理或删除"可恢复的项目"文件夹中的项目 2021/6/1 本文内容 "可恢复的项目"文件夹 (在 Exchange 早期版本中称为垃圾站 ) , 用于防止意外 ...

  5. configuration 命名空间_kubernetes30:monitoring命名空间处于Terminating状态的处理方法...

    删除monitoring命名空间时总也无法彻底删除,发现monitoring处于Terminating状态,故有此文. kubectl get namespaces -o wide 解决:尝试使用fo ...

  6. Pod 一直停留在 Terminating 状态,我等得花儿都谢了~

    更多奇技淫巧欢迎订阅博客:https://fuckcloudnative.io 前言 近期,弹性云线上集群发生了几起特殊的容器漂移失败事件,其特殊之处在于容器处于 Pod Terminating 状态 ...

  7. VS2005中删除最近打开的项目和文件的记录

                VS2005中删除最近打开的项目和文件的记录 VS2005中总是保留最近打开的项目和文件的记录,甚至是以删除的它也不删,-_-! 下面介绍几种删除的方法: 第一种:建立一个ba ...

  8. Git之删除本地和远程项目

    目录 删除本地项目 删除远程项目 删除本地项目: git rm -rf project  或者 rm -rf project   [删除工作区项目] git add project [将删除的项目添加 ...

  9. 软定时器的删除与状态查询

    文章目录 1 软定时器的删除与状态查询 1 软定时器的删除与状态查询 定时器的删除: 定时器状态查询: 参考资料: [李述铜]从0到1自己动手写嵌入式操作系统

最新文章

  1. OpenCV中 Mat 按行或按列合并程序
  2. 苹果手机换了屏显示无服务器,苹果将​​为存在显示问题的iPhone 11提供免费更换...
  3. mac用什么写python程序_mac下的应用程序发布 及 打包(Python写的脚本,可打包第三方库)...
  4. JS对象与Dom对象与jQuery对象之间的区别
  5. 图片转注释python代码(转)
  6. 老工程师谈电子物料:别拿一分钱不当回事!
  7. 【转】java io 总结(图)
  8. Pytest之pytest.assume用例中断言1失败会继续执行后续代码断言2
  9. ASP.NET MVC中,通用的异常处理
  10. m苹果放n篮子_能用一只手,我绝对不用一双:苹果试图解锁更多Apple Watch控制手势...
  11. 非线性最小二乘通俗易懂解释
  12. 四、Linux常用命令——文件搜索命令
  13. 解决ASP.NET页面回车回发的问题
  14. UNIGUI中如果获得Session情况
  15. Redux 入门 -- 处理 async action
  16. 五万美元的年薪是如何花光的
  17. 【073】首届工控中国大会|翼辉为自主生态共建发声
  18. Java Shiro 设置 anon 无效
  19. CAD图纸该如何修改背景颜色呢?
  20. NDN助力网络5.0时代

热门文章

  1. 怎样把php网站转为h5,【php】php如何把网页中的一部分生成.jpg
  2. usb连接不上 艾德克斯电源_工程师,USB与SPI之间如何通信?什么芯片方案可以实现...
  3. 无线鼠标可以强制配对_酷冷至尊MM831三模游戏鼠标评测
  4. 随机数插入排序c 语言,C语言程序设计100例之(22):插入排序
  5. 怎样获取php页面get的值,PHP循环获取GET和POST值的代码
  6. java 堆 栈 ===_Java堆,栈,堆栈
  7. 浓郁东方民俗剪纸风新年春节海报,psd分层模板
  8. 灵感加油站|当设计师没有灵感时怎么办?
  9. 稀缺PSD分层质感男模特男装电商海报
  10. 完美的做图配色专辑,UI设计师赶紧收藏