zoukankan      html  css  js  c++  java
  • 5分钟6步强制删除kubernetes NameSpace小技巧

    在使用kubernetes过程中,我们经常会遇到无法删除NameSpace的情况,但是如果一一去删除NameSpace中资源比较麻烦。下面我们给大家介绍强制删除NameSpace的方法。

    一、查看已存在的NameSpace

    $ kubectl get ns
    NAME STATUS AGE
    default Active 56d
    ingress-nginx Active 49d
    istio-system Terminating 37d
    kube-node-lease Active 56d
    kube-public Active 56d
    kube-system Active 56d
    

    二、获取需要强制删除的NameSpace信息

    $  kubectl get namespace istio-system -o json > istio-system.json
    $  cat istio-system.json
    {
    "apiVersion": "v1",
    "kind": "Namespace",
    "metadata": {
    "annotations": {
    "kubectl.kubernetes.io/last-applied-configuration": "{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"labels":{"istio-injection":"disabled","istio-operator-managed":"Reconcile","operator.istio.io/component":"Base","operator.istio.io/managed":"Reconcile","operator.istio.io/version":"1.4.3"},"name":"istio-system"}}
    "
    },
    "creationTimestamp": "2020-01-27T15:26:48Z",
    "deletionTimestamp": "2020-02-15T01:17:05Z",
    "labels": {
    "istio-injection": "disabled",
    "istio-operator-managed": "Reconcile",
    "operator.istio.io/component": "Base",
    "operator.istio.io/managed": "Reconcile",
    "operator.istio.io/version": "1.4.3"
    },
    "name": "istio-system",
    "resourceVersion": "6024170",
    "selfLink": "/api/v1/namespaces/istio-system",
    "uid": "d8bdc915-ee6f-43cd-ac37-5e353218095f"
    },
    "spec": {
    "finalizers": [
    "kubernetes"
    ]
    },
    "status": {
    "conditions": [
    {
    "lastTransitionTime": "2020-02-15T01:17:10Z",
    "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": "2020-02-15T01:17:13Z",
    "message": "All legacy kube types successfully parsed",
    "reason": "ParsedGroupVersions",
    "status": "False",
    "type": "NamespaceDeletionGroupVersionParsingFailure"
    },
    {
    "lastTransitionTime": "2020-02-15T01:17:13Z",
    "message": "All content successfully deleted, may be waiting on finalization",
    "reason": "ContentDeleted",
    "status": "False",
    "type": "NamespaceDeletionContentFailure"
    },
    {
    "lastTransitionTime": "2020-02-15T01:17:40Z",
    "message": "All content successfully removed",
    "reason": "ContentRemoved",
    "status": "False",
    "type": "NamespaceContentRemaining"
    },
    {
    "lastTransitionTime": "2020-02-15T01:17:13Z",
    "message": "All content-preserving finalizers finished",
    "reason": "ContentHasNoFinalizers",
    "status": "False",
    "type": "NamespaceFinalizersRemaining"
    }
    ],
    "phase": "Terminating"
    }
    }
    

    三、修改已获取的NameSpace信息文件

    image

    示例

    $ cat istio-system.json
    {
    "apiVersion": "v1",
    "kind": "Namespace",
    "metadata": {
    "annotations": {
    "kubectl.kubernetes.io/last-applied-configuration": "{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"labels":{"istio-injection":"disabled","istio-operator-managed":"Reconcile","operator.istio.io/component":"Base","operator.istio.io/managed":"Reconcile","operator.istio.io/version":"1.4.3"},"name":"istio-system"}}
    "
    },
    "creationTimestamp": "2020-01-27T15:26:48Z",
    "deletionTimestamp": "2020-02-15T01:17:05Z",
    "labels": {
    "istio-injection": "disabled",
    "istio-operator-managed": "Reconcile",
    "operator.istio.io/component": "Base",
    "operator.istio.io/managed": "Reconcile",
    "operator.istio.io/version": "1.4.3"
    },
    "name": "istio-system",
    "resourceVersion": "6024170",
    "selfLink": "/api/v1/namespaces/istio-system",
    "uid": "d8bdc915-ee6f-43cd-ac37-5e353218095f"
    },
    "spec": {
    },
    "status": {
    "conditions": [
    {
    "lastTransitionTime": "2020-02-15T01:17:10Z",
    "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": "2020-02-15T01:17:13Z",
    "message": "All legacy kube types successfully parsed",
    "reason": "ParsedGroupVersions",
    "status": "False",
    "type": "NamespaceDeletionGroupVersionParsingFailure"
    },
    {
    "lastTransitionTime": "2020-02-15T01:17:13Z",
    "message": "All content successfully deleted, may be waiting on finalization",
    "reason": "ContentDeleted",
    "status": "False",
    "type": "NamespaceDeletionContentFailure"
    },
    {
    "lastTransitionTime": "2020-02-15T01:17:40Z",
    "message": "All content successfully removed",
    "reason": "ContentRemoved",
    "status": "False",
    "type": "NamespaceContentRemaining"
    },
    {
    "lastTransitionTime": "2020-02-15T01:17:13Z",
    "message": "All content-preserving finalizers finished",
    "reason": "ContentHasNoFinalizers",
    "status": "False",
    "type": "NamespaceFinalizersRemaining"
    }
    ],
    "phase": "Terminating"
    }
    }
    

    四、运行kube-proxy

    $ kubectl proxy
    Starting to serve on 127.0.0.1:8001
    

    五、通过API执行强制删除操作

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

    六、强制删除确认

    $ kubectl get ns
    NAME STATUS AGE
    default Active 56d
    ingress-nginx Active 49d
    kube-node-lease Active 56d
    kube-public Active 56d
    kube-system Active 56d
    

    转载至https://zhuanlan.zhihu.com/p/128599556

  • 相关阅读:
    基于Twisted的简单聊天室
    小学题的python实现
    初识Go(8)
    初识Go(7)
    初识Go(6)
    初识Go(5)
    初识Go(4)
    初识Go(3)
    初识Go(2)
    初识Go(1)
  • 原文地址:https://www.cnblogs.com/Aaron-23/p/14887268.html
Copyright © 2011-2022 走看看