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

云原生|kubernetes|刪除不掉的namespace 一直處于Terminating狀態(tài)的解決方案

這篇具有很好參考價值的文章主要介紹了云原生|kubernetes|刪除不掉的namespace 一直處于Terminating狀態(tài)的解決方案。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言:

在kubesphere部署的過程中,由于kubernetes集群的版本和kubesphere的版本不匹配,因此想要回退重新部署,但發(fā)現(xiàn)要用的namespace? kubesphere-system?普通的刪除方法無效,一直處于Terminating狀態(tài)

[root@centos1 ~]# kubectl get ns
NAME                STATUS        AGE
default             Active        12h
kube-flannel        Active        95m
kube-node-lease     Active        12h
kube-public         Active        12h
kube-system         Active        12h
kubesphere-system   Terminating   27m

新部署由于namespace一直是刪除狀態(tài),無法繼續(xù)進行:

[root@centos1 ~]# kubectl apply -f kubesphere-installer.yaml 
customresourcedefinition.apiextensions.k8s.io/clusterconfigurations.installer.kubesphere.io created
Warning: Detected changes to resource kubesphere-system which is currently being deleted.
namespace/kubesphere-system unchanged
clusterrole.rbac.authorization.k8s.io/ks-installer configured
clusterrolebinding.rbac.authorization.k8s.io/ks-installer unchanged
Error from server (Forbidden): error when creating "kubesphere-installer.yaml": serviceaccounts "ks-installer" is forbidden: unable to create new content in namespace kubesphere-system because it is being terminated
Error from server (Forbidden): error when creating "kubesphere-installer.yaml": deployments.apps "ks-installer" is forbidden: unable to create new content in namespace kubesphere-system because it is being terminated

具體表現(xiàn)為一直掛在刪除界面:

[root@centos1 ~]# kubectl delete ns kubesphere-system 
namespace "kubesphere-system" deleted
^C
[root@centos1 ~]# kubectl delete ns kubesphere-system 
namespace "kubesphere-system" deleted
^C

下面就本次拍錯和最終解決方案做一個比較詳細的說明

一,

解決方案一

這個說來慚愧,不過也是比較常規(guī)的,因為百分之九十的錯誤可以通過重啟服務(wù)解決,百分之九十九的錯誤可以通過重啟服務(wù)器解決,但很不幸,這次的namespace異常狀態(tài)是那百分之一

重啟服務(wù),重啟服務(wù)器沒什么好說的,該方案無效

二,

解決方案二

刪除命令增加強制刪除參數(shù)

kubectl delete ns kubesphere-system --force --grace-period=0

實際效果不盡如人意,仍然沒有完成刪除:

可以看到該命令貼心(無用)的給了一個警告,現(xiàn)在是立刻刪除,不會等待Terminating狀態(tài)結(jié)束的立刻刪除,然而并沒有卵用

[root@centos1 ~]# kubectl delete ns kubesphere-system --force --grace-period=0
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
namespace "kubesphere-system" force deleted

三,

解決方案三

其實普通的方式已經(jīng)確定是無法刪除的,那么,現(xiàn)在有兩條路,一個是通過etcd直接刪除,一個是通過apiserver服務(wù)的api來進行刪除

那么,etcd直接刪除是有一定的風(fēng)險的,因此,這里使用api刪除

1,

獲取namespace的頂用文件,格式為json

kubectl get ns kubesphere-system -o json > /tmp/kubesphere.json

文件關(guān)鍵內(nèi)容如下:

    "spec": {
        "finalizers": [
            "kubernetes"
        ]
    },
    "apiVersion": "v1",
    "kind": "Namespace",
    "metadata": {
        "annotations": {
            "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"kubesphere-system\"}}\n"
        },
        "creationTimestamp": "2023-06-29T15:16:45Z",
        "deletionGracePeriodSeconds": 0,
        "deletionTimestamp": "2023-06-30T04:28:31Z",
        "finalizers": [
            "finalizers.kubesphere.io/namespaces"
        ],

?刪除后:

    "apiVersion": "v1",
    "kind": "Namespace",
    "metadata": {
        "annotations": {
            "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"kubesphere-system\"}}\n"
        },
        "creationTimestamp": "2023-06-29T15:16:45Z",
        "deletionGracePeriodSeconds": 0,
   "spec": {
    },

?

Finalize字段的說明:

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è)置時,負責(zé)監(jiān)測該對象的各個控制器會通過輪詢對該對象的更新請求來執(zhí)行它們所要處理的所有 Finalizer。 當所有 Finalizer 都被執(zhí)行過,資源被刪除。
metadata.deletionGracePeriodSeconds 的取值控制對更新的輪詢周期。
每個控制器要負責(zé)將其 Finalizer 從列表中去除。
每執(zhí)行完一個就從 finalizers 中移除一個,直到 finalizers 為空,之后其宿主資源才會被真正的刪除。

因此,將finalizers字段刪除即可,(有得情況是只有spec字段有finalizers,有得情況是spec和metadata都有,總之所有finalizers刪除即可,一般是只有一個spec包含finalizers)

2,

將該json文件放置到root根目錄,開啟apiserver的代理:

[root@centos1 ~]# kubectl proxy --port=8001
Starting to serve on 127.0.0.1:8001

3,

重新開一個shell窗口,調(diào)用api開始刪除,命令如下:

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

輸出如下表示刪除成功:

{
  "kind": "Namespace",
  "apiVersion": "v1",
  "metadata": {
    "name": "kubesphere-system",
    "uid": "7a1c9fed-dbe3-4d65-9f57-db93f7a358f7",
    "resourceVersion": "18113",
    "creationTimestamp": "2023-06-24T02:27:18Z",
    "deletionTimestamp": "2023-06-24T02:28:29Z",
    "labels": {
      "kubernetes.io/metadata.name": "kubesphere-system"
    },
    "annotations": {
      "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"kubesphere-system\"}}\n"
    },
    "managedFields": [
      {
        "manager": "kubectl-client-side-apply",
        "operation": "Update",
        "apiVersion": "v1",
        "time": "2023-06-24T02:27:18Z",
        "fieldsType": "FieldsV1",
        "fieldsV1": {"f:metadata":{"f:annotations":{".":{},"f:kubectl.kubernetes.io/last-applied-configuration":{}},"f:labels":{".":{},"f:kubernetes.io/metadata.name":{}}}}
      },
      {
        "manager": "kube-controller-manager",
        "operation": "Update",
        "apiVersion": "v1",
        "time": "2023-06-24T02:28:35Z",
        "fieldsType": "FieldsV1",
        "fieldsV1": {"f:status":{"f:conditions":{".":{},"k:{\"type\":\"NamespaceContentRemaining\"}":{".":{},"f:lastTransitionTime":{},"f:message":{},"f:reason":{},"f:status":{},"f:type":{}},"k:{\"type\":\"NamespaceDeletionContentFailure\"}":{".":{},"f:lastTransitionTime":{},"f:message":{},"f:reason":{},"f:status":{},"f:type":{}},"k:{\"type\":\"NamespaceDeletionDiscoveryFailure\"}":{".":{},"f:lastTransitionTime":{},"f:message":{},"f:reason":{},"f:status":{},"f:type":{}},"k:{\"type\":\"NamespaceDeletionGroupVersionParsingFailure\"}":{".":{},"f:lastTransitionTime":{},"f:message":{},"f:reason":{},"f:status":{},"f:type":{}},"k:{\"type\":\"NamespaceFinalizersRemaining\"}":{".":{},"f:lastTransitionTime":{},"f:message":{},"f:reason":{},"f:status":{},"f:type":{}}}}},
        "subresource": "status"
      }
    ]
  },
  "spec": {
    
  },
  "status": {
    "phase": "Terminating",
    "conditions": [
      {
        "type": "NamespaceDeletionDiscoveryFailure",
        "status": "True",
        "lastTransitionTime": "2023-06-24T02:28:34Z",
        "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": "2023-06-24T02:28:35Z",
        "reason": "ParsedGroupVersions",
        "message": "All legacy kube types successfully parsed"
      },
      {
        "type": "NamespaceDeletionContentFailure",
        "status": "False",
        "lastTransitionTime": "2023-06-24T02:28:35Z",
        "reason": "ContentDeleted",
        "message": "All content successfully deleted, may be waiting on finalization"
      },
      {
        "type": "NamespaceContentRemaining",
        "status": "False",
        "lastTransitionTime": "2023-06-24T02:28:35Z",
        "reason": "ContentRemoved",
        "message": "All content successfully removed"
      },
      {
        "type": "NamespaceFinalizersRemaining",
        "status": "False",
        "lastTransitionTime": "2023-06-24T02:28:35Z",
        "reason": "ContentHasNoFinalizers",
        "message": "All content-preserving finalizers finished"
      }
    ]
  }
}

檢查是否刪除了Terminating狀態(tài)的namespace?kubesphere-system:

root@centos1 ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   13h
kube-flannel      Active   104m
kube-node-lease   Active   13h
kube-public       Active   13h
kube-system       Active   13h

注:打錯了namespace的錯誤調(diào)用api(激動了,kubesphere-system?給打成了kubespheer-system):
[root@centos1 ~]# curl -k -H "Content-Type: application/json" -X PUT --data-binary @kubesphere.json http://127.0.0.1:8001/api/v1/namespaces/kubespheer-system/finalize
{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {
    
  },
  "status": "Failure",
  "message": "the name of the object (kubesphere-system) does not match the name on the URL (kubespheer-system)",
  "reason": "BadRequest",
  "code": 400

那么,有得時候遇到刪除不掉的pod也是可以用此方法刪除的,等以后碰到了我在補充哈。文章來源地址http://www.zghlxwxcb.cn/news/detail-705758.html

到了這里,關(guān)于云原生|kubernetes|刪除不掉的namespace 一直處于Terminating狀態(tài)的解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • k8s強制刪除處于Terminating狀態(tài)的namespace

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

    一、問題背景 ? ? ? ? 按照kubord官方文檔安裝刪除Kuboard之后,再重新執(zhí)行kubectl apply時,出現(xiàn)Error from server (Forbidden): error when creating \\\"https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml\\\": configmaps \\\"kuboard-v3-config\\\" is forbidden: unable to create new content in namespace kuboard because it is being terminated報錯

    2024年02月05日
    瀏覽(24)
  • k8s中如何調(diào)用接口刪除處于Terminating狀態(tài)的namespace

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

    2024年02月07日
    瀏覽(20)
  • Kubernetes刪除ns(namespace)

    Kubernetes刪除ns(namespace)

    一、前言 刪除某個應(yīng)用或模塊的時候,可能會出現(xiàn)命名空間的狀態(tài)一直處于Terminating狀態(tài),無論是重啟k8s還是重啟所有服務(wù)器都沒卵用。 k8s遇到有無法刪除的ns(namespace)命名空間的時候,可以嘗試幾種刪除方式 二、刪除命名空間namespace 1、先查看k8s 2、可以先逐步嘗試以下

    2024年02月15日
    瀏覽(18)
  • 一個 Kill 不掉的 MySQL 會話

    一個 Kill 不掉的 MySQL 會話

    究竟是什么原因,導(dǎo)致主從切換過程中存在一個無法 kill 的會話? 作者:秦廣飛 愛可生 DBA 團隊成員,負責(zé)項目日常問題處理及公司平臺問題排查,對數(shù)據(jù)庫有興趣,對技術(shù)有想法。一入 IT 深似海,從此節(jié)操是路人。 本文來源:原創(chuàng)投稿 愛可生開源社區(qū)出品,原創(chuàng)內(nèi)容未經(jīng)

    2024年02月12日
    瀏覽(22)
  • kubernetes -- 刪除namespace的過程以及遇到的bug解決

    kubernetes -- 刪除namespace的過程以及遇到的bug解決

    通過閱讀本篇文章你可以收獲如下知識: 解決一個bug。 理解k8s的controller中,刪除namespace的源碼,理解其中的刪除過程。 執(zhí)行 kubectl delete ns {ns-name} 命令來刪除 ns-name 的時候,發(fā)現(xiàn)狀態(tài)一直停留在 Terminating 。 我想到的是可能是namespace底下有資源,等資源被刪除之后系統(tǒng)才能

    2024年02月09日
    瀏覽(19)
  • 暴力解決注冊表刪不掉的問題

    暴力解決注冊表刪不掉的問題

    今天在使用注冊表編輯器修改注冊表權(quán)限的時候,不小心把所有用戶對某個注冊表的權(quán)限全部拒絕了。等到我再想修改的時候,右鍵點擊該文件,選擇了“權(quán)限”后,彈出的編輯界面的“組或用戶名”一欄中沒有出現(xiàn)任何內(nèi)容。倒騰了半天也實在不知道怎么處理,于是一氣之

    2024年02月12日
    瀏覽(28)
  • Linux如何殺死kill -9殺不掉的進程

    在Linux中,我們經(jīng)常使用kill或者kill -9來殺死特定的進程,但是有些時候,這些方法可能無法終止某些進程。本文將詳細解釋為什么會出現(xiàn)這種情況,以及如何處理這種問題。 首先,我們來理解一下為什么有些進程無法被殺死。通常,這是因為這些進程處于以下兩種狀態(tài)之一

    2024年02月09日
    瀏覽(22)
  • 【云原生|Kubernetes】10-Namespace的cpu和內(nèi)存的請求與限制

    ? 一個 Kubernetes 集群可被劃分為多個命名空間。 如果你在具有默認內(nèi)存限制的命名空間內(nèi)嘗試創(chuàng)建一個 Pod,并且這個 Pod 中的容器沒有聲明自己的內(nèi)存資源限制, 那么控制面會為該容器設(shè)定默認的內(nèi)存限制。 創(chuàng)建namespace 為該 namespace 創(chuàng)建內(nèi)存 LimitRange 查看 namespace 詳細信息

    2024年02月08日
    瀏覽(21)
  • 內(nèi)存利用:遲來的blindless與逃不掉的exit漏洞

    在計算機安全領(lǐng)域,漏洞的危險性往往與其廣泛性和潛在攻擊方式密切相關(guān)。今天,我們將深入探討一個異常危險的漏洞,它存在于程序退出時執(zhí)行的常見函數(shù)\\\"exit\\\"中。無論是在操作系統(tǒng)還是應(yīng)用程序中,\\\"exit\\\"都是一個普遍存在的函數(shù),通常用于正常退出程序。但這種普遍性

    2024年02月08日
    瀏覽(16)
  • STC的官網(wǎng),是我永遠忘不掉的煉丹爐

    STC的官網(wǎng),是我永遠忘不掉的煉丹爐

    搞電子的,應(yīng)該都搞過8051 搞8051的,那應(yīng)該都搞過STC 在國內(nèi),STC已經(jīng)成為了8051的代名詞 http://www.stcmcudata.com/ 如果你剛開始搞嵌入式,應(yīng)該學(xué)單片機,你學(xué)習(xí)單片機,就應(yīng)該學(xué)習(xí)下8051,學(xué)習(xí)8051,那你應(yīng)該記得這個煉丹爐的照片。 細心的朋友應(yīng)該看到,右下角的煉丹爐,這是

    2024年02月02日
    瀏覽(16)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包