国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

k8s中如何調(diào)用接口刪除處于Terminating狀態(tài)的namespace

這篇具有很好參考價值的文章主要介紹了k8s中如何調(diào)用接口刪除處于Terminating狀態(tài)的namespace。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

k8s中刪除處于Terminating狀態(tài)的namespace

每當刪除 namespace 或 pod 等一些 Kubernetes 資源時,有時資源狀態(tài)會卡在 Terminating,很長時間無法刪除,甚至有時增加 --force grace-period=0 之后還是無法正常刪除。這時就需要 edit 該資源,或者將該資源導出為 json(通過調(diào)用原生接口進行刪除), 將 finalizers 字段設(shè)置為 [],之后 Kubernetes 資源就正常刪除了。

查看 ns 狀態(tài)

[root@master1 ~]# kubectl get ns
NAME                          STATUS        AGE
cattle-fleet-system           Active        7d19h
cattle-impersonation-system   Active        7d19h
cattle-system                 Active        7d19h
default                       Active        8d
kube-node-lease               Active        8d
kube-public                   Active        8d
kube-system                   Active        8d
local                         Active        7d19h
monitoring                    Terminating   7d19h
test                          Active        23h

可以看到 monitoring 這個 namespace 一直處于Terminating狀態(tài),一般情況下強刪是刪不掉的,強刪的方法如下:這個方法在這里會卡主,也是刪不掉的

[root@master1 ~]# kubectl delete ns monitoring --force --grace-period=0

如果刪不掉,就參考下面的方法

獲取 namespace 的 json 文件

[root@master1 ~]# kubectl get ns monitoring -o json > /tmp/monitoring.json

查看monitoring.json的內(nèi)容

{
  "kind": "Namespace",
  "apiVersion": "v1",
  "metadata": {
    "name": "monitoring",
    "uid": "4db2f7a3-5fb2-434a-a2d2-59c70453c1b7",
    "resourceVersion": "2896381",
    "creationTimestamp": "2023-05-17T06:51:39Z",
    "deletionTimestamp": "2023-05-24T09:08:47Z",
    "deletionGracePeriodSeconds": 0,
    "labels": {
      "field.cattle.io/projectId": "p-8bqcb",
      "kubernetes.io/metadata.name": "monitoring"
    },
    "annotations": {
      "cattle.io/status": "{\"Conditions\":[{\"Type\":\"ResourceQuotaInit\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2023-05-17T06:51:40Z\"},{\"Type\":\"InitialRolesPopulated\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2023-05-17T06:51:41Z\"}]}",
      "field.cattle.io/projectId": "c-m-bxmlx5bv:p-8bqcb",
      "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"monitoring\"}}\n"},
  "spec": {
      "finalizers": [
          "kubernetes"
      ]
  },
  "status": {
      "phase": "Terminating"
  }
}

修改此monitoring.json文件內(nèi)容為:

{
"kind": "Namespace",
  "apiVersion": "v1",
  "metadata": {
    "name": "monitoring",
    "uid": "4db2f7a3-5fb2-434a-a2d2-59c70453c1b7",
    "resourceVersion": "2896381",
    "creationTimestamp": "2023-05-17T06:51:39Z",
    "deletionTimestamp": "2023-05-24T09:08:47Z",
    "deletionGracePeriodSeconds": 0,
    "labels": {
      "field.cattle.io/projectId": "p-8bqcb",
      "kubernetes.io/metadata.name": "monitoring"
    },
    "annotations": {
      "cattle.io/status": "{\"Conditions\":[{\"Type\":\"ResourceQuotaInit\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2023-05-17T06:51:40Z\"},{\"Type\":\"InitialRolesPopulated\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2023-05-17T06:51:41Z\"}]}",
      "field.cattle.io/projectId": "c-m-bxmlx5bv:p-8bqcb",
      "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"monitoring\"}}\n"},
  "spec": {
  },
  "status": {
      "phase": "Terminating"
  }
}

調(diào)用 api-server 接口進行刪除

打開一個新的終端,或者把下面的命令放到后臺執(zhí)行

[root@master1 prometheus]# kubectl proxy
Starting to serve on 127.0.0.1:8001

調(diào)用接口刪除

[root@master1 ~]# curl -k -H "Content-Type: application/json" -X PUT --data-binary @monitoring.json http://127.0.0.1:8001/api/v1/namespaces/monitoring/finalize
{
  "kind": "Namespace",
  "apiVersion": "v1",
  "metadata": {
    "name": "monitoring",
    "uid": "4db2f7a3-5fb2-434a-a2d2-59c70453c1b7",
    "resourceVersion": "2896381",
    "creationTimestamp": "2023-05-17T06:51:39Z",
    "deletionTimestamp": "2023-05-24T09:08:47Z",
    "deletionGracePeriodSeconds": 0,
    "labels": {
      "field.cattle.io/projectId": "p-8bqcb",
      "kubernetes.io/metadata.name": "monitoring"
  },
  "spec": {
  },
  "status": {
    "phase": "Terminating"
  }
}

輸出以上內(nèi)容表示刪除成功。

: 如果kubectl get ns monitoring -o json的結(jié)果中"spec": {}中為空,則需要看下metadata部分是否有finalizers字段,如下以cattle-system所示:

{
    "apiVersion": "v1",
    "kind": "Namespace",
    "metadata": {
        "annotations": {
      "cattle.io/status": "{\"Conditions\":[{\"Type\":\"ResourceQuotaInit\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2023-05-17T06:51:40Z\"},{\"Type\":\"InitialRolesPopulated\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2023-05-17T06:51:41Z\"}]}",
      "field.cattle.io/projectId": "c-m-bxmlx5bv:p-8bqcb",
      "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"monitoring\"}}\n",
      "lifecycle.cattle.io/create.namespace-auth": "true"
    },
    "creationTimestamp": "2023-05-17T06:51:39Z",
    "deletionTimestamp": "2023-05-24T09:08:47Z",
    "deletionGracePeriodSeconds": 0,
        "finalizers": [
            "controller.cattle.io/namespace-auth"
        ],
        "labels": {
            "field.cattle.io/projectId": "p-wfknh"
        },
        "name": "cattle-system",
        "resourceVersion": "165368",
        "selfLink": "/api/v1/namespaces/cattle-system",
        "uid": "223ad163-507c-4efe-b3a3-d3bc4b7a5211"
    },
    "spec": {},
    "status": {
        "phase": "Terminating"
    }
}

這里"spec": {},結(jié)果為空,無論我們怎么執(zhí)行,此時此 ns 都不會被刪除,此時想弄清楚這個問題,需要先了解下finalizers這個的含義 Finalizers 字段屬于 Kubernetes GC 垃圾收集器,是一種刪除攔截機制,能夠讓控制器實現(xiàn)異步的刪除前(Pre-delete)回調(diào)。其存在于任何一個資源對象的 Meta 中,在 k8s 源碼中聲明為 []string,該 Slice 的內(nèi)容為需要執(zhí)行的攔截器名稱。
對帶有 Finalizer 的對象的第一個刪除請求會為其 metadata.deletionTimestamp 設(shè)置一個值,但不會真的刪除對象。一旦此值被設(shè)置,finalizers 列表中的值就只能被移除。
當 metadata.deletionTimestamp 字段被設(shè)置時,負責監(jiān)測該對象的各個控制器會通過輪詢對該對象的更新請求來執(zhí)行它們所要處理的所有 Finalizer。 當所有 Finalizer 都被執(zhí)行過,資源被刪除。
metadata.deletionGracePeriodSeconds 的取值控制對更新的輪詢周期。
每個控制器要負責將其 Finalizer 從列表中去除。
每執(zhí)行完一個就從 finalizers 中移除一個,直到 finalizers 為空,之后其宿主資源才會被真正的刪除。
看到這里有 finalizers 時,需要在導出的json文件中將finalizers的內(nèi)容也刪除,并再次調(diào)用接口刪除。方法如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-466846.html

"finalizers": [
        ],
[root@master1 ~]# curl -k -H "Content-Type: application/json" -X PUT --data-binary @monitoring.json http://127.0.0.1:8001/api/v1/namespaces/monitoring/finalize

到了這里,關(guān)于k8s中如何調(diào)用接口刪除處于Terminating狀態(tài)的namespace的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 云原生 | k8s批量刪除Evicted/Terminating/Unknown Pods

    云原生 | k8s批量刪除Evicted/Terminating/Unknown Pods

    宿主機內(nèi)存被docker占滿導致,K8s集群pod處于Evicted?狀態(tài),清理內(nèi)存后處理Evicted和Terminating狀態(tài)的pod 1、在集群查詢pod狀態(tài),發(fā)現(xiàn)大量pod處于Evicted和Terminating狀態(tài) 2.使用kubectl中的強制刪除命令 3.刪除非正常的pod ?

    2024年02月08日
    瀏覽(20)
  • k8s delete namespace Terminating

    k8s delete namespace Terminating

    版本情況 當時Terminating截圖 前段時間pod的數(shù)量增加,懷疑是master節(jié)點機器資源不足導致處理效率問題 目前運行的pod數(shù)量 查看Prometheus監(jiān)控,可以看到master節(jié)點的使用率都很低,排除資源不足問題 執(zhí)行查看資源情況, 沒有發(fā)現(xiàn)依賴資源未釋放情況,排查依賴資源沒有釋放問題

    2024年02月10日
    瀏覽(16)
  • k8s 大量 pod 處于 ContainerStatusUnknown 狀態(tài)

    k8s 大量 pod 處于 ContainerStatusUnknown 狀態(tài)

    如圖所示,nexus 正常運行,但產(chǎn)生了大量的狀態(tài)不明的 pod,原因也無從所知 解決辦法,刪除多余的 pod,一個一個刪除,非常費勁 獲取 namespace 中狀態(tài)為 ContainerStatusUnknown 的 pod,并刪除 獲取所有非 Running 狀態(tài)下的 pod,并刪除

    2024年02月07日
    瀏覽(28)
  • 云原生|kubernetes|刪除不掉的namespace 一直處于Terminating狀態(tài)的解決方案

    在kubesphere部署的過程中,由于kubernetes集群的版本和kubesphere的版本不匹配,因此想要回退重新部署,但發(fā)現(xiàn)要用的namespace? kubesphere-system?普通的刪除方法無效,一直處于 Terminating狀態(tài) 新部署由于namespace一直是刪除狀態(tài),無法繼續(xù)進行: 具體表現(xiàn)為一直掛在刪除界面: 下面就

    2024年02月09日
    瀏覽(17)
  • k8s中如何正確刪除pod

    --- ? 在日常的k8s運維過程中,避免不了會對某些pod進行剔除,那么如何才能正確的剔除不需要的pod呢? 首先,需要查出想要刪除的pod kubectl 刪除pod命令 可是這里你會發(fā)現(xiàn),在進行刪除delete pod后,并不會直接刪除。該pod會自動重新構(gòu)建(可以理解為重啟、重構(gòu)),原因是k

    2023年04月27日
    瀏覽(23)
  • k8s默認StorageClass,解決pvc一直處于“Pending”

    k8s默認StorageClass,解決pvc一直處于“Pending”

    報錯詳情 排查思路 查看 pvc 詳細屬性 persistentvolume-controller waiting for a volume to be created, either by external provisioner \\\"nfs-provisioner-01\\\" or manually created by system administrator 從persistentvolume-controller反饋出來的信息是 沒有權(quán)限來創(chuàng)建出pvc。 查看 nfs-provisioner pod日志 遠程NFS服務器上的動態(tài)子

    2023年04月27日
    瀏覽(20)
  • K8S集群中Pod資源處于ImagePullBackOff狀態(tài)排查思路

    ImagePullBackOff狀態(tài)表示容器的鏡像拉取失敗,可能存在以下幾點原因: 拉取鏡像時間較長導致超時,從而導致鏡像拉取失敗,部署完Docker后,一定要添加上阿里云的鏡像加速器,否則拉取鏡像是非常慢的,很容易就會導致鏡像拉取失敗。 鏡像配置有誤,指定的鏡像在公有倉庫

    2024年02月14日
    瀏覽(26)
  • K8S集群中Pod資源處于CrashLoopBackOff狀態(tài)排查思路

    CrashLoopBackOff狀態(tài)一般都是Pod資源中的容器出現(xiàn)了問題,可以有以下幾點原因: 容器中部署的程序存在Bug,無法正常啟動,就會出現(xiàn)此狀態(tài),可以查詢?nèi)萜鞯膯尤罩?,從日志中獲取重要線索,逐個進行排查。 定義Pod資源時,對于Pod中的容器進行了資源限額,可能限額的資源

    2024年01月21日
    瀏覽(26)
  • 如何批量刪除k8s中的異常pod信息

    kubectl get pods 發(fā)現(xiàn)有很多pod出問題了 Evicted可使用kubectl中的強制刪除命令 批量刪除所有“Evicted”狀態(tài)的pod即可 OutOfCpu可使用kubectl中的強制刪除命令 批量刪除所有“OutOfcpu ”狀態(tài)的pod即可 Terminating可使用kubectl中的強制刪除命令

    2024年02月12日
    瀏覽(38)
  • k8s pod一直處于pending狀態(tài)一般有哪些情況,怎么排查?

    一個pod一開始創(chuàng)建的時候,它本身就是會處于pending狀態(tài),這時可能是正在拉取鏡像,正在創(chuàng)建容器的過程。 如果等了一會發(fā)現(xiàn)pod一直處于pending狀態(tài), 那么我們可以使用kubectl describe命令查看一下pod的Events詳細信息。一般可能會有這么幾種情況導致pod一直處于pending狀態(tài): 1、

    2024年01月17日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包