Warum ist der Namespace, in dem mein Speicheroperator implementiert wurde, im Status Beenden hängen geblieben?

Beheben Sie Namespaces, die nach dem Entfernen einer Satellite-Speicherkonfiguration im Status Terminating stuck hängen geblieben sind.

Wenn Sie eine Speicherkonfiguration aus einem Cluster entfernen, werden die Ressourcen, wie z. B. Operatorpods und Speicherklassen, entfernt, aber der Namensbereich befindet sich im Status Terminating fest.

Finalizer verhindern, dass die verbleibenden Ressourcen im Namensraum und der Namensraum selbst gelöscht werden.

Führen Sie die folgenden Schritte aus, um die Ressourcen und den Namespace zu entfernen.

Patchen oder löschen Sie keine Ressourcen-Finalizer im Namespace kube-system.

  1. Geben Sie den Namensbereich an, der im Status Terminating blockiert ist. Notieren Sie die Ressourcen, die im Abschnitt message: 'Some resources are remaining: aufgelistet sind.
    oc get ns <namespace> -o yaml
    
    Beispielausgabe für einen NetApp-Trident-Namespace
    status:
        conditions:
        - lastTransitionTime: "2021-05-18T17:40:31Z"
        message: All resources successfully discovered
        reason: ResourcesDiscovered
        status: "False"
        type: NamespaceDeletionDiscoveryFailure
        - lastTransitionTime: "2021-05-18T17:40:31Z"
        message: All legacy kube types successfully parsed
        reason: ParsedGroupVersions
        status: "False"
        type: NamespaceDeletionGroupVersionParsingFailure
        - lastTransitionTime: "2021-05-18T17:40:31Z"
        message: All content successfully deleted, may be waiting on finalization
        reason: ContentDeleted
        status: "False"
        type: NamespaceDeletionContentFailure
        - lastTransitionTime: "2021-05-18T17:40:31Z"
        message: 'Some resources are remaining: tridentbackends.trident.netapp.io has 1 resource instances, tridentnodes.trident.netapp.io has 3 resource instances, tridentversions.trident.netapp.io has 1 resource instances, tridentvolumes.trident.netapp.io has 1 resource instances'
        reason: SomeResourcesRemain
        status: "True"
        type: NamespaceContentRemaining
        - lastTransitionTime: "2021-05-18T17:40:31Z"
        message: 'Some content in the namespace has finalizers remaining: trident.netapp.io
        in 6 resource instances'
        reason: SomeFinalizersRemain
        status: "True"
        type: NamespaceFinalizersRemaining
        phase: Terminating
    
  2. Führen Sie den Befehl oc get aus, um die Ressourcen abzurufen, die bis zum Entfernen stehen. In der Beispielausgabe listet die Ressource tridentbackends.trident.netapp.io eine Ressourceninstanz auf. Wiederholen Sie diesen Schritt für jede Ressource, die Instanzen im Abschnitt message des zuvor abgerufenen Namespace-YAML-Dokuments auflistet.
    oc get <resource> -n <namespace>
    
    Beispielbefehl für die Ressource tridentbackends.trident.netapp.io .
    oc get tridentbackends.trident.netapp.io -n trident
    
    Beispielausgabe
    tbe-bhb5r
    
    pvc-26d97ecd-c268-47ff-a2fd-a0a1a51a9e12
    
  3. Führen Sie für jede Ressource, die Instanzen auflistet, den folgenden kubectl patch Befehl aus, um die Finalizer zu entfernen und die Ressource zu löschen. Nachdem alle Ressourcen korrigiert wurden, wird der Namensbereich entfernt.
    kubectl -n <namespace> patch <resource>/<instance> -p '{"metadata":{"finalizers":[]}}' --type=merge
    
    Beispielbefehl für die Ressource tridentbackends.trident.netapp.io .
    kubectl -n trident patch tridentbackends.trident.netapp.io/tbe-bhb5r -p '{"metadata":{"finalizers":[]}}' --type=merge
    
  4. Nachdem Sie die Finalizer für die verbleibenden Ressourcen entfernt haben, führen Sie den Befehl oc get ns aus, um zu überprüfen, ob der Namensbereich entfernt wurde.
    oc get ns