删除处于 "terminating" 状态的 linkerd kubernetes 命名空间

Delete linkerd kubernetes namespace in "terminating" status

这是资源状态:

kind: Namespace
api
Version: v1
metadata:
  name: linkerd
  selfLink: /api/v1/namespaces/linkerd
  uid: e7337b2b-bddb-4344-a986-d450973bc8cf
  resourceVersion: '5540346'
  creationTimestamp: '2020-05-10T13:49:21Z'
  deletionTimestamp: '2020-06-03T20:16:30Z'
  labels:
    config.linkerd.io/admission-webhooks: disabled
    linkerd.io/is-control-plane: 'true'
spec:
  finalizers:
    - kubernetes
status:
  phase: Terminating
  conditions:
    - type: NamespaceDeletionDiscoveryFailure
      status: 'True'
      lastTransitionTime: '2020-06-03T20:16:44Z'
      reason: DiscoveryFailed
      message: >-
        Discovery failed for some groups, 1 failing: unable to retrieve the
        complete list of server APIs: tap.linkerd.io/v1alpha1: the server is
        currently unable to handle the request
    - type: NamespaceDeletionGroupVersionParsingFailure
      status: 'False'
      lastTransitionTime: '2020-06-03T20:16:38Z'
      reason: ParsedGroupVersions
      message: All legacy kube types successfully parsed
    - type: NamespaceDeletionContentFailure
      status: 'False'
      lastTransitionTime: '2020-06-03T20:16:38Z'
      reason: ContentDeleted
      message: 'All content successfully deleted, may be waiting on finalization'
    - type: NamespaceContentRemaining
      status: 'False'
      lastTransitionTime: '2020-06-03T20:16:57Z'
      reason: ContentRemoved
      message: All content successfully removed
    - type: NamespaceFinalizersRemaining
      status: 'False'
      lastTransitionTime: '2020-06-03T20:16:38Z'
      reason: ContentHasNoFinalizers
      message: All content-preserving finalizers finished

API 服务:

$ kubectl get apiservice

NAME                                   SERVICE               AVAILABLE                 AGE
v1.                                    Local                 True                      28d
v1.admissionregistration.k8s.io        Local                 True                      28d
v1.apiextensions.k8s.io                Local                 True                      28d
v1.apps                                Local                 True                      28d
v1.authentication.k8s.io               Local                 True                      28d
v1.authorization.k8s.io                Local                 True                      28d
v1.autoscaling                         Local                 True                      28d
v1.batch                               Local                 True                      28d
v1.coordination.k8s.io                 Local                 True                      28d
v1.networking.k8s.io                   Local                 True                      28d
v1.rbac.authorization.k8s.io           Local                 True                      28d
v1.scheduling.k8s.io                   Local                 True                      28d
v1.storage.k8s.io                      Local                 True                      28d
v1alpha1.linkerd.io                    Local                 True                      18d
v1alpha1.snapshot.storage.k8s.io       Local                 True                      28d
v1alpha1.split.smi-spec.io             Local                 True                      18d
v1alpha1.tap.linkerd.io                linkerd/linkerd-tap   False (ServiceNotFound)   24d
v1alpha2.acme.cert-manager.io          Local                 True                      18d
v1alpha2.cert-manager.io               Local                 True                      18d
v1alpha2.linkerd.io                    Local                 True                      18d
v1beta1.admissionregistration.k8s.io   Local                 True                      28d
v1beta1.apiextensions.k8s.io           Local                 True                      28d
v1beta1.authentication.k8s.io          Local                 True                      28d
v1beta1.authorization.k8s.io           Local                 True                      28d
v1beta1.batch                          Local                 True                      28d
v1beta1.certificates.k8s.io            Local                 True                      28d
v1beta1.coordination.k8s.io            Local                 True                      28d
v1beta1.discovery.k8s.io               Local                 True                      18d
v1beta1.events.k8s.io                  Local                 True                      28d
v1beta1.extensions                     Local                 True                      28d
v1beta1.networking.k8s.io              Local                 True                      28d
v1beta1.node.k8s.io                    Local                 True                      28d
v1beta1.policy                         Local                 True                      28d
v1beta1.rbac.authorization.k8s.io      Local                 True                      28d
v1beta1.scheduling.k8s.io              Local                 True                      28d
v1beta1.storage.k8s.io                 Local                 True                      28d
v2.cilium.io                           Local                 True                      18d
v2beta1.autoscaling                    Local                 True                      28d
v2beta2.autoscaling                    Local                 True                      28d

我尝试删除终结器,但什么也没做。 还尝试用 --grace-period=0 --force 删除仍然没有。 它不显示命名空间下的任何资源。

我还能做些什么来强制删除?

您遇到的错误是由 api 服务 v1alpha1.tap.linkerd.io 不工作 (ServiceNotFound) 引起的。很难说是什么原因造成的,但我可以看到两种解决方法:

  1. 如果您不需要那个 API 而不是简单地删除它:kubectl delete apiservice v1alpha1.tap.linkerd.io.

  2. 如果需要,可以尝试删除相关的pods重启一下看看有没有用

之后您应该可以删除您提到的命名空间。

如果有帮助,请告诉我。

您可以 运行 linkerd uninstall | kubectl delete -f - 它将按正确的顺序删除资源,因此不会发生此错误。