zoukankan      html  css  js  c++  java
  • k8s删除Terminating状态的命名空间

    k8s中namespace有两种常见的状态,即Active和Terminating状态,其中后者一般会比较少见,只有当对应的命名空间下还存在运行的资源,但是该命名空间被删除时才会出现所谓的terminating状态,这种情况下只要等待k8s本身将命名空间下的资源回收后,该命名空间将会被系统自动删除。但是今天遇到命名空间下已没相关资源,但依然无法删除terminating状态的命名空间的情况,特此记录一下.

    在项目的k8s中安装了kube-prometheus,但是根据用处不是太大,而且阿里云资源不多,就准备卸载了,结果卡住了

    image-20210726201843298

    查看napespace定义的json配置

    删除掉spec部分即可

    [root@k8s-master ~]# kubectl get ns monitoring  -o json > monitoring.json
    [root@k8s-master ~]# cat monitoring.json
    {
        "apiVersion": "v1",
        "kind": "Namespace",
        "metadata": {
            "annotations": {
                "kubectl.kubernetes.io/last-applied-configuration": "{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"monitoring"}}
    "
            },
            "creationTimestamp": "2021-07-19T03:13:20Z",
            "deletionTimestamp": "2021-07-26T10:23:58Z",
            "name": "monitoring",
            "resourceVersion": "2912094",
            "selfLink": "/api/v1/namespaces/monitoring",
            "uid": "88cfc047-3736-42bb-ab51-db07fec7c6ef"
        },
        "spec": {
            "finalizers": [
                "kubernetes"
            ]
        },
        "status": {
            "conditions": [
                {
                    "lastTransitionTime": "2021-07-26T10:24:09Z",
                    "message": "Discovery failed for some groups, 1 failing: unable to retrieve the complete list of server APIs: metrics.k8s.io/v1beta1: the server is currently unable to handle the request",
                    "reason": "DiscoveryFailed",
                    "status": "True",
                    "type": "NamespaceDeletionDiscoveryFailure"
                },
                {
                    "lastTransitionTime": "2021-07-26T10:24:04Z",
                    "message": "All legacy kube types successfully parsed",
                    "reason": "ParsedGroupVersions",
                    "status": "False",
                    "type": "NamespaceDeletionGroupVersionParsingFailure"
                },
                {
                    "lastTransitionTime": "2021-07-26T10:24:04Z",
                    "message": "All content successfully deleted, may be waiting on finalization",
                    "reason": "ContentDeleted",
                    "status": "False",
                    "type": "NamespaceDeletionContentFailure"
                },
                {
                    "lastTransitionTime": "2021-07-26T10:24:20Z",
                    "message": "All content successfully removed",
                    "reason": "ContentRemoved",
                    "status": "False",
                    "type": "NamespaceContentRemaining"
                },
                {
                    "lastTransitionTime": "2021-07-26T10:24:04Z",
                    "message": "All content-preserving finalizers finished",
                    "reason": "ContentHasNoFinalizers",
                    "status": "False",
                    "type": "NamespaceFinalizersRemaining"
                }
            ],
            "phase": "Terminating"
        }
    }
    
    

    删除下面的部分

    image-20210726202233999

    导出k8s的密钥

    导出K8s访问密钥
    echo $(kubectl config view --raw -oyaml | grep client-cert  |cut -d ' ' -f 6) |base64 -d > /tmp/client.pem
    echo $(kubectl config view --raw -oyaml | grep client-key-data  |cut -d ' ' -f 6 ) |base64 -d > /tmp/client-key.pem
    echo $(kubectl config view --raw -oyaml | grep certificate-authority-data  |cut -d ' ' -f 6  ) |base64 -d > /tmp/ca.pem
    

    使用http接口进行删除

    [root@k8s-master ~]# curl --cert /tmp/client.pem --key /tmp/client-key.pem --cacert /tmp/ca.pem -H "Content-Type: application/json" -X PUT --data-binary @/root/monitoring.json https://172.16.8.43:6443/api/v1/namespaces/monitoring/finalize
    {
      "kind": "Namespace",
      "apiVersion": "v1",
      "metadata": {
        "name": "monitoring",
        "selfLink": "/api/v1/namespaces/monitoring/finalize",
        "uid": "88cfc047-3736-42bb-ab51-db07fec7c6ef",
        "resourceVersion": "2912094",
        "creationTimestamp": "2021-07-19T03:13:20Z",
        "deletionTimestamp": "2021-07-26T10:23:58Z",
        "annotations": {
          "kubectl.kubernetes.io/last-applied-configuration": "{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"monitoring"}}
    "
        }
      },
      "spec": {
    
      },
      "status": {
        "phase": "Terminating",
        "conditions": [
          {
            "type": "NamespaceDeletionDiscoveryFailure",
            "status": "True",
            "lastTransitionTime": "2021-07-26T10:24:09Z",
            "reason": "DiscoveryFailed",
            "message": "Discovery failed for some groups, 1 failing: unable to retrieve the complete list of server APIs: metrics.k8s.io/v1beta1: the server is currently unable to handle the request"
          },
          {
            "type": "NamespaceDeletionGroupVersionParsingFailure",
            "status": "False",
            "lastTransitionTime": "2021-07-26T10:24:04Z",
            "reason": "ParsedGroupVersions",
            "message": "All legacy kube types successfully parsed"
          },
          {
            "type": "NamespaceDeletionContentFailure",
            "status": "False",
            "lastTransitionTime": "2021-07-26T10:24:04Z",
            "reason": "ContentDeleted",
            "message": "All content successfully deleted, may be waiting on finalization"
          },
          {
            "type": "NamespaceContentRemaining",
            "status": "False",
            "lastTransitionTime": "2021-07-26T10:24:20Z",
            "reason": "ContentRemoved",
            "message": "All content successfully removed"
          },
          {
            "type": "NamespaceFinalizersRemaining",
            "status": "False",
            "lastTransitionTime": "2021-07-26T10:24:04Z",
            "reason": "ContentHasNoFinalizers",
            "message": "All content-preserving finalizers finished"
          }
        ]
      }
    
    

    再次查看namespace发现已经被删除了

    [root@k8s-master ~]#kubectl get ns
    NAME              STATUS   AGE
    default           Active   13d
    dev               Active   13d
    framework         Active   11d
    ingress-nginx     Active   7d21h
    kube-node-lease   Active   13d
    kube-public       Active   13d
    kube-system       Active   13d
    kuboard           Active   13d
    [root@k8s-master ~]#
    
  • 相关阅读:
    EF6 Code First 模式更新数据库架构
    bootstrap-datepicker 插件修改为默认中文
    常用网络资源下载
    jQuery框架学习第十一天:实战jQuery表单验证及jQuery自动完成提示插件
    AngularJS实现原理
    [个人翻译]GitHub指导文件(GitHub Guides[Hello World])
    年后跳槽如何准备?
    前端学数据库之子查询
    Ionic实战 自动升级APP(Android版)
    读书笔记:《HTML5开发手册》Web表单
  • 原文地址:https://www.cnblogs.com/dalianpai/p/15063214.html
Copyright © 2011-2022 走看看