最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Kubernetes刪除ns實(shí)現(xiàn)方式(namespace)

 更新時間:2026年01月28日 14:51:49   作者:瀟灑哥Kahn  
文章介紹了在Kubernetes中刪除無法正常刪除的命名空間(namespace)的幾種方法,首先,通過查看和修改命名空間的JSON文件來刪除`finalizers`,然后使用`kubectl proxy`命令來繞過Kubernetes的安全機(jī)制,最終成功刪除了命名空間

一、前言

刪除某個應(yīng)用或模塊的時候,可能會出現(xiàn)命名空間的狀態(tài)一直處于Terminating狀態(tài),無論是重啟k8s還是重啟所有服務(wù)器都沒卵用。

k8s遇到有無法刪除的ns(namespace)命名空間的時候,可以嘗試幾種刪除方式

二、刪除命名空間namespace

1、先查看k8s

[root@k8s-master1 ~]# kubectl get ns
NAME                          STATUS        AGE
cattle-impersonation-system   Terminating   2d14h
cattle-system                 Terminating   2d14h
default                       Active        13d
ingress-nginx                 Terminating   4d13h
kube-node-lease               Active        13d
kube-public                   Active        13d
kube-system                   Active        13d
monitoring                    Active        12d

2、可以先逐步嘗試以下幾種刪除kubernetes命名空間namespace的方法

kubectl delete ns <要刪除的命名空間>
kubectl delete ns <要刪除的命名空間> --froce
kubectl delete ns <要刪除的命名空間> --force --grace-period=0

3、如果上面的3中方法依然無法刪除kubernetes命名空間,則可以再嘗試使用接口去刪除

三、使用接口的方式刪除kubernetes命名空間

1、獲取命名空間的json文件,下面以刪除ingress-nginx這個命名空間為例。

kubectl get ns ingress-nginx -o json > delete-ns-ingress-nginx.json

如得到的源文件:

{
    "apiVersion": "v1",
    "kind": "Namespace",
    "metadata": {
        "annotations": {
            "cattle.io/status": "{\"Conditions\":[{\"Type\":\"ResourceQuotaInit\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2023-06-28T22:44:35Z\"},{\"Type\":\"InitialRolesPopulated\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2023-06-28T22:44:41Z\"}]}",
            "field.cattle.io/projectId": "c-m-x64sl2w6:p-4845x",
            "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"labels\":{\"app.kubernetes.io/instance\":\"ingress-nginx\",\"app.kubernetes.io/name\":\"ingress-nginx\"},\"name\":\"ingress-nginx\"}}\n",
            "lifecycle.cattle.io/create.namespace-auth": "true",
            "management.cattle.io/no-default-sa-token": "true"
        },
        "creationTimestamp": "2023-06-26T15:26:03Z",
        "deletionGracePeriodSeconds": 0,
        "deletionTimestamp": "2023-06-29T15:06:06Z",
        "finalizers": [
            "controller.cattle.io/namespace-auth"            #刪除這一行,并且保持finalizers數(shù)組為空,即[]
        ],
        "labels": {
            "app.kubernetes.io/instance": "ingress-nginx",
            "app.kubernetes.io/name": "ingress-nginx",
            "kubernetes.io/metadata.name": "ingress-nginx"
        },
        "name": "ingress-nginx",
        "resourceVersion": "147165",
        "uid": "7dc28b36-5960-4237-b1b5-41b8d6e20f7c"
    },
    "spec": {},
    "status": {
        "conditions": [
            {
                "lastTransitionTime": "2023-06-29T15:06:14Z",
                "message": "All resources successfully discovered",
                "reason": "ResourcesDiscovered",
                "status": "False",
                "type": "NamespaceDeletionDiscoveryFailure"
            },
            {
                "lastTransitionTime": "2023-06-29T15:06:14Z",
                "message": "All legacy kube types successfully parsed",
                "reason": "ParsedGroupVersions",
                "status": "False",
                "type": "NamespaceDeletionGroupVersionParsingFailure"
            },
            {
                "lastTransitionTime": "2023-06-29T15:06:14Z",
                "message": "All content successfully deleted, may be waiting on finalization",
                "reason": "ContentDeleted",
                "status": "False",
                "type": "NamespaceDeletionContentFailure"
            },
            {
                "lastTransitionTime": "2023-06-29T15:08:52Z",
                "message": "All content successfully removed",
                "reason": "ContentRemoved",
                "status": "False",
                "type": "NamespaceContentRemaining"
            },
            {
                "lastTransitionTime": "2023-06-29T15:06:14Z",
                "message": "All content-preserving finalizers finished",
                "reason": "ContentHasNoFinalizers",
                "status": "False",
                "type": "NamespaceFinalizersRemaining"
            }
        ],
        "phase": "Terminating"
    }
}

2、搜索json文件中finalizers,將其數(shù)組置空。如本次沒刪之前

 

 3、在k8s的master節(jié)點(diǎn)上開啟proxy

kubectl proxy

 注意看端口是8001

4、再開一個k8s-master節(jié)點(diǎn)的終端以便我們執(zhí)行命令

curl -k -H "Content-Type: application/json" -X PUT --data-binary @delete-ns-ingress-nginx.json http://127.0.0.1:8001/api/v1/namespaces/ingress-nginx/finalize

注:delete-ns-ingress-nginx.json 是剛才你導(dǎo)出并修改后的json文件,注意執(zhí)行命令的時候前面有@字符。

http://127.0.0.1:8001/api/v1/namespaces/ingress-nginx/finalize 中的 ingress-nginx 換成你要刪除的命名空間字符串

執(zhí)行完命令后,又返回一堆的字符串,不用管它。

5、再次查看所有Kubernetes的命名空間看目標(biāo)ns是否被刪除了

可以看到本次要刪除的命名空間ingress-nginx已經(jīng)被徹底干掉了。

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。 

相關(guān)文章

最新評論

玉林市| 三原县| 固阳县| 英德市| 汉阴县| 江阴市| 南投县| 湘乡市| 卢氏县| 黄山市| 交口县| 东山县| 乌鲁木齐市| 三原县| 潍坊市| 巫溪县| 阿拉善右旗| 贵德县| 抚州市| 当雄县| 旅游| 白城市| 溆浦县| 金门县| 洛宁县| 长葛市| 满洲里市| 洞头县| 樟树市| 德安县| 巴彦淖尔市| 重庆市| 交城县| 涿鹿县| 革吉县| 苍南县| 阳曲县| 都江堰市| 同仁县| 新野县| 太谷县|