¿Por qué veo un UnresponsiveMountHelperContainerUtility error paraFile Storage for VPC ?
Nube privada virtual
Tu aplicación, que utiliza el cifrado en tránsito (EIT) con un perfil zonal de dp2 File Storage for VPC, falla y muestra el error UnresponsiveMountHelperContainerUtility.
Soluciona los problemas de los sistemas de almacenamiento de archivos VPC que no responden con EIT (Encrypted In Transit).
Aparece un mensaje de error similar al del siguiente ejemplo:
Code: UnresponsiveMountHelperContainerUtility,
Description: Failed to mount target because unable to make connection to mount helper container service.,
BackendError: Failed to send EIT based request. Failed with error:
Post "http://unix/api/mount": dial unix /var/lib/ibmshare.sock: connect: no such file or directory,
Action: Check if EIT is enabled from storage operator.
Run command 'kubectl edit configmap addon-vpc-file-csi-driver-configmap -n kube-system'
and set 'ENABLE_EIT' flag to 'true'.
O bien EIT no está habilitado en tus grupos de trabajadores, o bien el pod de tu aplicación se ha programado en un nodo de un grupo de trabajadores en el que EIT no está habilitado. Se cumple una de las siguientes condiciones:
ENABLE_EIT¿falseoEIT_ENABLED_WORKER_POOLSestán vacíos en el configmap?- El grupo de trabajadores en el que se está ejecutando el pod no aparece en
EIT_ENABLED_WORKER_POOLS. - En los nodos de trabajo de RHCOS, los paquetes EIT están instalados, pero aún no se ha reiniciado el nodo para activarlos.
- En los nodos de trabajo de RHCOS, se llevó a cabo un ciclo previo de desinstalación y reinstalación sin reiniciar el sistema entre ambas operaciones, lo que dejó el paquete en un estado defectuoso de «ya superpuesto».
Resolución del problema
Sigue los siguientes pasos para identificar y resolver la causa.
Comprueba qué nodos tienen activada la función EIT
Revisa el mapa de configuración « file-csi-driver-status » para ver qué nodos tienen instalados los paquetes EIT y comprueba que la configuración sea correcta.
-
Describe el «configmap» de estado para ver qué nodos tienen habilitado el EIT. Busca la clave «
EIT_ENABLED_WORKER_NODES», que recoge los nombres de los grupos de trabajadores y las direcciones IP de los nodos en los que se ha completado la instalación de EIT.oc describe cm file-csi-driver-status -n kube-systemSalida de ejemplo:
EIT_ENABLED_WORKER_NODES: ---- default: - 10.240.0.89 - 10.240.0.87 - 10.240.0.88Un valor vacío significa que aún no se ha instalado EIT en ningún nodo.
-
Comprueba que la opción «
ENABLE_EIT» esté configurada en «true» y que el grupo de trabajadores de destino aparezca en la lista deEIT_ENABLED_WORKER_POOLS.oc describe cm addon-vpc-file-csi-driver-configmap -n kube-system
Comprueba que el pod de tu aplicación se esté ejecutando en un nodo compatible con EIT
Haz una lista de tus pods para averiguar en qué nodo están programados y, a continuación, compáralos con la lista de la sección anterior.
-
Enumera tus pods y anota la dirección IP del nodo en el que se ejecuta cada uno de ellos.
oc get pods -A -o wide -
Comprueba que la dirección IP del nodo coincida con la lista de
EIT_ENABLED_WORKER_NODESdel paso 1. Si el pod se encuentra en un nodo que no figura en esa lista, realiza una de las siguientes acciones:- Mueve el pod a un nodo compatible con EIT utilizando selectores de nodo o reglas de afinidad.
- Añade el grupo de trabajadores que contiene ese nodo a «
EIT_ENABLED_WORKER_POOLS» en el configmap y espera a que el operador realice la reconciliación.
Consideraciones específicas del sistema operativo
Los paquetes necesarios se instalan de forma diferente según el sistema operativo del nodo de trabajo.
Ubuntu y RHEL
No es necesario reiniciar. Los paquetes se activan inmediatamente después de la instalación. Si la dirección IP del nodo aparece en EIT_ENABLED_WORKER_NODES y el pod se encuentra en ese nodo, el EIT debería funcionar correctamente.
Si el socket sigue sin aparecer, comprueba los registros del pod del operador de almacenamiento para ver si hay errores de instalación.
oc logs -n kube-system -l app=ibm-vpc-file-csi-operator --tail=100
RHCOS / CoreOS
RHCOS es un sistema operativo inmutable. Los paquetes no se activan hasta que se reinicie el nodo, aunque la dirección IP del nodo ya figure en EIT_ENABLED_WORKER_NODES.
Node Aparece como compatible con EIT, pero el montaje sigue fallando
Si la dirección IP del nodo aparece en EIT_ENABLED_WORKER_NODES pero sigues viendo el error « UnresponsiveMountHelperContainerUtility », significa que el nodo no se ha reiniciado desde que se instalaron los paquetes.
El socket /var/lib/ibmshare.sock no existe hasta después de reiniciar el sistema.
Para confirmar que hay un reinicio pendiente, ejecuta los siguientes comandos en el nodo afectado:
-
Abre un shell de depuración en el nodo afectado mediante la CLI de « OpenShift ».
oc debug node/<nodeName> -
En el shell de depuración, comprueba si hay paquetes EIT preparados pero aún no activos.
chroot /host rpm-ostree statusEn el resultado, busca una capa pendiente o en fase de preparación que incluya
mount-helperymount-helper-container. Si los paquetes aparecen en una capa que no está marcada como «(booted)», es necesario reiniciar el sistema para activarlos.Ejemplo de salida que muestra los paquetes preparados para el próximo arranque:
State: idle Deployments: ● ostree-unverified-registry:... ... LayeredPackages: mount-helper mount-helper-container ostree-unverified-registry:... (booted) ...
Para solucionar este problema, vacíe y reinicie el nodo RHCOS afectado para evitar que las cargas de trabajo en ejecución se vean afectadas.
-
Busca los ID de los trabajadores correspondientes a los nodos que aparecen en
EIT_ENABLED_WORKER_NODES, identificándolos por sus direcciones IP.ibmcloud ks workers --cluster CLUSTER_ID -
Vacíe el nodo para cerrar de forma segura todos los pods en ejecución antes de reiniciar el sistema.
oc drain <node-name> --ignore-daemonsets --delete-emptydir-data -
Reinicia el nodo que se ha quedado sin energía.
ibmcloud ks worker reboot --cluster CLUSTER_ID --worker WORKER_ID -
Una vez que el nodo vuelva a estar en línea y en estado «
Ready», desactivá el «uncordon» para que se puedan volver a programar cargas de trabajo en él.oc uncordon <node-name>
La instalación falla con el error «ya está en capas» en RHCOS
Si anteriormente desinstalaste EIT en un grupo de trabajadores de RHCOS y luego lo volviste a habilitar sin reiniciar el nodo entre medias, es posible que la tarea de instalación del operador de almacenamiento falle con un error similar al siguiente:
error: Packages are already layered: mount-helper-<version>.rpm mount-helper-container-<version>.rpm
Esto ocurre porque « rpm-ostree uninstall » solo prepara la eliminación. Los paquetes siguen estando presentes en la capa de arranque actual hasta que se reinicia el sistema. Cuando el operador intenta volver a ejecutar « rpm-ostree install », el sistema detecta que los paquetes ya están instalados.
Para solucionar esto:
-
Vacíe el nodo para cerrar de forma segura todos los pods en ejecución antes de reiniciar el sistema.
oc drain <node-name> --ignore-daemonsets --delete-emptydir-data -
Reinicia el nodo RHCOS para aplicar la desinstalación pendiente.
ibmcloud ks worker reboot --cluster CLUSTER_ID --worker WORKER_ID -
Una vez que el nodo vuelva a estar en línea y en estado «
Ready», desactivá el «uncordon» para que se puedan volver a programar cargas de trabajo en él.oc uncordon <node-name> -
Una vez que el nodo vuelve a estar operativo, los paquetes instalados anteriormente han desaparecido. El operador del almacén los vuelve a instalar automáticamente en el siguiente ciclo de conciliación, normalmente en unos minutos.
-
Una vez que el operador haya indicado que el nodo es compatible con EIT en
EIT_ENABLED_WORKER_NODES, vacíe el nodo y reinícielo de nuevo para activar los paquetes recién instalados; a continuación, desactive el cordón de seguridad.
El ciclo completo para desinstalar y volver a instalar RHCOS es el siguiente: reiniciar tras la desinstalación → el operador vuelve a instalar el programa → reiniciar de nuevo para activarlo.
Nuevos nodos añadidos a un grupo de trabajadores compatible con EIT
Cuando un nuevo nodo se incorpora a un grupo de trabajadores que ya figura en EIT_ENABLED_WORKER_POOLS, el operador de almacenamiento instala automáticamente los paquetes de EIT en el nuevo nodo durante su siguiente ciclo de reconciliación.
No es necesario actualizar el configmap.
En el caso de los nodos RHCOS, es necesario vaciar y reiniciar el nodo tras la instalación para que EIT se active. Vacíe el nodo, reinícielo y, a continuación, desconéctelo para reducir el impacto en las cargas de trabajo en ejecución. Hasta
que se reinicie el nodo, cualquier pod que utilice un PVC con EIT habilitado y esté programado en ese nuevo nodo mostrará el mismo error « UnresponsiveMountHelperContainerUtility ». Ubuntu Los nodos (IKS) y RHEL (ROKS) no necesitan
reiniciarse cuando se añade un nuevo nodo.