【问题标题】:Namespace “stuck” as Terminating命名空间“卡住”为终止
【发布时间】:2021-04-16 10:53:42
【问题描述】:

我在终止集群中的命名空间时遇到问题,它在命名空间 JSON 中显示了许多参数。我点击了这个链接https://medium.com/@craignewtondev/how-to-fix-kubernetes-namespace-deleting-stuck-in-terminating-state-5ed75792647e

 "spec": {},
    "status": {
        "conditions": [
            {
                "lastTransitionTime": "2021-01-11T08:41:48Z",
                "message": "All resources successfully discovered",
                "reason": "ResourcesDiscovered",
                "status": "False",
                "type": "NamespaceDeletionDiscoveryFailure"
            },
            {
                "lastTransitionTime": "2021-01-11T08:41:48Z",
                "message": "All legacy kube types successfully parsed",
                "reason": "ParsedGroupVersions",
                "status": "False",
                "type": "NamespaceDeletionGroupVersionParsingFailure"
            },
            {
                "lastTransitionTime": "2021-01-11T08:41:48Z",
                "message": "All content successfully deleted, may be waiting on finalization",
                "reason": "ContentDeleted",
                "status": "False",
                "type": "NamespaceDeletionContentFailure"
            },
            {
                "lastTransitionTime": "2021-01-11T08:42:09Z",
                "message": "All content successfully removed",
                "reason": "ContentRemoved",
                "status": "False",
                "type": "NamespaceContentRemaining"
            },
            {
                "lastTransitionTime": "2021-01-11T08:41:48Z",
                "message": "All content-preserving finalizers finished",
                "reason": "ContentHasNoFinalizers",
                "status": "False",
                "type": "NamespaceFinalizersRemaining"
            }
        ],
        "phase": "Terminating"
    }
}```

【问题讨论】:

  • 当 webhook 仍然处于活动状态时,我已经看到了这一点。在这种情况下,删除命名空间大约需要 30 分钟。你等了多久?
  • 自 215 分钟后仍显示终止
  • @SaikatChakrabortty 不,即使我尝试了kubectl delete ns fleet-system --grace-period=0 --force --namespace -n fleet-system 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. 也无济于事:删除集群范围的资源,而不是提供的命名空间命名空间“fleet-system”强制删除并卡在这里-- ----

标签: kubernetes namespaces amazon-eks rancher


【解决方案1】:

您使用的教程不正确,因为通过删除终结器来删除命名空间并不是一个好方法,因为它可能会使资源注册到不存在的命名空间。 请看这篇帖子:finalizer-kubernetes-ns

您可以尝试通过以下方式找出命名空间中的哪些资源正在等待删除:

  • 使用命令kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get -n $yotur-ns-to-delete查找所有仍然存在的资源
  • 通过执行命令 kubectl get apiservice|grep False 检查是否有任何 apiservice 不可用,因此不提供其资源

也看看这个问题:ns-kubernetes-stuck-terminating

【讨论】:

  • kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get -n prometheus 错误:无法检索服务器 API 的完整列表:custom.metrics.k8s.io/v1beta1:服务器当前无法处理请求 Prometheus 命名空间中找不到资源。 kubectl get apiservice|grep Falsev1beta1.custom.metrics.k8s.io prometheus/prometheus-adapter False (ServiceNotFound) 60d
  • 尝试执行命令:$ kubectl delete apiservice v1beta1.custom.metrics.k8s.io
  • 服务器出错(未找到):apiservices.apiregistration.k8s.io "v1beta1.custom.metrics.k8s.io" 未找到
  • 你也可以试试 $ kubectl api-resources --verbs=list --namespaced -o name \ | xargs -n 1 kubectl get --show-kind --ignore-not-found -l = -n 我认为错误是由于之前删除的终结器不正确,我已经提到过你的步骤应该从头开始。
【解决方案2】:

我找到了终止卡住的命名空间的答案。

for ns in $(kubectl get ns --field-selector status.phase=Terminating -o jsonpath='{.items[*].metadata.name}'); do kubectl get ns $ns -ojson | jq '.spec.finalizers = []' | kubectl replace --raw "/api/v1/namespaces/$ns/finalize" -f -; done

for ns in $(kubectl get ns --field-selector status.phase=Terminating -o jsonpath='{.items[*].metadata.name}'); do kubectl get ns $ns -ojson | jq '.metadata.finalizers = []' | kubectl replace --raw "/api/v1/namespaces/$ns/finalize" -f -; done

【讨论】:

    【解决方案3】:

    首先将您的命名空间名称导出到处于终止状态的环境中

    export NAMESPACE="monitoring"
    

    然后运行下面的命令来删除终止命名空间

    kubectl get namespace $NAMESPACE -o json   | tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/"   | kubectl replace --raw /api/v1/namespaces/$NAMESPACE/finalize -f -
    

    【讨论】:

      猜你喜欢
      • 2019-02-21
      • 2020-09-26
      • 1970-01-01
      • 2023-01-22
      • 1970-01-01
      • 2019-03-27
      • 1970-01-01
      • 2020-05-07
      相关资源
      最近更新 更多