Sugerencia de OpenShift: solucione un problema de estado de terminación

Red Hat OpenShift es una plataforma de Kubernetes diseñada para capacitar a los desarrolladores para que innoven y entreguen más rápido utilizando el poder de la nube híbrida y los contenedores. Siempre hay una curva de aprendizaje empinada cuando se trabaja con una plataforma de nivel empresarial, y aprender a solucionar problemas es una parte importante para poder administrar de manera efectiva un sistema Kubernetes. Lidiar con estos problemas en el camino y aprender a solucionarlos lo convierte en un mejor administrador del sistema y desarrollador de OpenShift.

Como administrador del sistema OpenShift, debe saber cómo operar y administrar los diferentes estados de la plataforma. Saber cómo hacer un proyecto OpenShift es tan importante como saber cómo hacer un nuevo proyecto, aunque el beneficio suele ser menos obvio.

Índice

    Gestión de estados de terminación

    Su proyecto puede atascarse Terminating estado, como se ve en la captura de pantalla a continuación.

    Este problema persiste incluso después de confirmar que ha eliminado todos los recursos encontrados mediante el oc get all comando en el proyecto. En OpenShift 4, administrar el ciclo de vida de la aplicación. El problema del bloqueo final es fácilmente reproducible y puede encontrarlo.

    No te preocupes. En esta publicación de blog, explicaré cómo resolver este error. Para brindarle una descripción general, esto implica modificar un recurso de OpenShift denominado espacio de nombres, que significa Red Hat. Más precisamente, modificamos finalizador en OpenShift, que es un mecanismo para notificar al plano de control de Kubernetes que se debe realizar una acción para que se lleve a cabo la lógica de desperdicio estándar de Kubernetes.

    Para modificar cualquier proyecto/espacio de nombres necesitas el administrador del clúster Control de acceso basado en roles (RBAC) autorización. Si no tiene permiso, obtendrá un error como este:

    # oc get namespace
    
    Error from server (Forbidden): namespaces is forbidden: User "USERNAME" cannot list namespaces at the cluster scope: no RBAC policy matched

    O NOMBRE DEL USUARIO es su nombre de usuario de OpenShift.

    Solicite a su administrador de OpenShift que le conceda la administrador del clúster permiso con un comando como este:

    # oc adm policy add-cluster-role-to-user cluster-admin USERNAME

    Donde

    # oc adm policy add-role-to-user admin USERNAME -n PROJECT

    si quieres el administrador privilegio para el individuo PROYECTO visible para usted, use el siguiente comando:

    Todavía puede seguir el resto de la guía, incluso si solo tiene la administrador privilegio para un proyecto específico.

    Después de obtener un administrador del clúster función, puede ejecutar este comando:

    # oc get namespace

    Este comando enumera todos los proyectos disponibles en OpenShift. Verás tu proyecto en Terminating indicar como sigue:

    Ejecute el siguiente comando para mostrar el contenido del espacio de nombres problemático:

    # oc get -o yaml namespace/PROJECT

    O PROYECTO es su espacio de nombres/nombre del proyecto.

    A continuación, cambie este valor en finalizadores. Básicamente eliminar la línea - kubernetes.

    Sin embargo, si intenta editar y guardar el archivo directamente con el oc edit namespace/PROJECT ordenar, su finalizador no está actualizado

    En su lugar, guarde el espacio de nombres en un archivo con el siguiente comando:

    # oc get namespace DELETABLE_PROJECT -o yaml > BACKUP_NAMESPACE.yaml

    O ELIMINAR_PROYECTO es el espacio de nombres / nombre del proyecto que desea eliminar, y BACKUP_ESPACIO DE NOMBRES es el nombre del archivo en el que desea guardar su espacio de nombres. Abra el archivo guardado con un editor de texto de su elección. En la captura de pantalla a continuación estoy usando vim, pero puede usar cualquier otro editor de texto.

    Eliminar valor bajo finalizadores, y eso es todo lo que hay que hacer. En la captura de pantalla a continuación, eliminé la línea (línea 19), donde dice - kubernetes.

    Después de eliminar el archivo, el resultado se ve así. Guarda el archivo y cierra.

    A continuación, inicie un servidor proxy local temporal para permitir que el servidor local se comunique con el clúster OpenShift remoto. Ejecutar el siguiente comando inicia el proceso de proxy temporal en segundo plano.

    # oc proxy &

    El siguiente comando es el comando más largo que debe ingresar para este ejemplo:

    # curl -k -H "Content-Type: application/yaml" -X PUT --data-binary @BACKUP_NAMESPACE.yaml http://127.0.0.1:8001/api/v1/namespaces/DELETABLE_PROJECT/finalize

    O ELIMINAR_PROYECTO es el espacio de nombres / nombre del proyecto que desea eliminar, y BACKUP_ESPACIO DE NOMBRES es el nombre de archivo de la copia de seguridad de su espacio de nombres. Tenga en cuenta que http://127.0.0.1:8001 es el servidor proxy que comenzamos arriba.

    El comando anterior da una respuesta exitosa, lo que indica que actualizó el espacio de nombres al enviar la solicitud de actualización con el archivo. Como alternativa, puede probar el oc apply -f BACKUP_NAMESPACE.yaml comando, pero no siempre funciona.

    Ya no debería ver el espacio de nombres/proyecto.

    # oc get namespace DELETABLE_PROJECT

    ¡Eso es! Asegúrese de eliminar el servidor proxy con el siguiente comando:

    # oc kill -9 %%

    Conclusión

    En este blog, aprendió cómo eliminar un proyecto bloqueado en Terminating Expresar. Aprender a solucionar un problema como este en Red Hat OpenShift lo prepara para convertirse en un experto en plataformas en muy poco tiempo. Gracias por la lectura.

    Artículos de interés

    Subir