¿Por qué el espacio de nombres donde está desplegado mi operador de almacenamiento se ha quedado atascado en el estado Terminando?

Resolver los espacios de nombres que quedan bloqueados en el estado Terminating tras eliminar una configuración de almacenamiento de Satellite.

Cuando se elimina una configuración de almacenamiento de un clúster, se eliminan recursos como, por ejemplo, pods de operador y clases de almacenamiento, pero el espacio de nombres se queda atascado en el estado Terminating.

Los finalizadores impiden que se eliminen los recursos restantes del espacio de nombres y el propio espacio de nombres.

Siga los pasos siguientes para eliminar los recursos y el espacio de nombres.

No modifiques ni elimines los finalizadores de recursos en el espacio kube-system de nombres.

  1. Obtenga el espacio de nombres que se ha quedad atascado en el estado Terminating. Apunte los recursos listados en la sección message: 'Some resources are remaining:.
    oc get ns <namespace> -o yaml
    
    Salida de ejemplo para un espacio de nombres Trident de NetApp
    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. Ejecute el comando oc get para obtener los recursos pendientes de eliminación. En la salida de ejemplo, el recurso tridentbackends.trident.netapp.io lista 1 instancia de recurso. Repite este paso para cada recurso que enumere instancias en la sección message del YAML del espacio de nombres que has recuperado anteriormente.
    oc get <resource> -n <namespace>
    
    Comando de ejemplo para el recurso tridentbackends.trident.netapp.io.
    oc get tridentbackends.trident.netapp.io -n trident
    
    Ejemplo de salida
    tbe-bhb5r
    
    pvc-26d97ecd-c268-47ff-a2fd-a0a1a51a9e12
    
  3. Para cada recurso que incluya instancias, ejecute el siguiente comando kubectl patch para eliminar los finalizadores y borrar el recurso. Después de que se hayan aplicado parches a todos los recursos, se elimina el espacio de nombres.
    kubectl -n <namespace> patch <resource>/<instance> -p '{"metadata":{"finalizers":[]}}' --type=merge
    
    Comando de ejemplo para el recurso tridentbackends.trident.netapp.io.
    kubectl -n trident patch tridentbackends.trident.netapp.io/tbe-bhb5r -p '{"metadata":{"finalizers":[]}}' --type=merge
    
  4. Después de eliminar los finalizadores en los recursos restantes, ejecute el mandato oc get ns para verificar que se ha eliminado el espacio de nombres.
    oc get ns