El desequilibrio del clúster sobrecarga los nodos de trabajador
Un desequilibrio de la asignación de recursos en el clúster puede provocar que nodos de trabajador individuales únicos se vean sobrecargados.
Síntomas
Se producen los siguientes síntomas, que pueden afectar a los Watson Studioservicios, IBM® Knowledge CatalogAnalytics Engine powered by Apache Spark , y :
- Los clústeres son inestables.
- Los recursos de nodo de trabajador individuales están sobrecargados debido a demasiados pods.
- Las herramientas que consumen un número de recursos superior al valor mínimo, tales como los editores de cuadernos Jupyter, no se pueden ejecutar o el inicio del kernel es lento.
Causas
Hay demasiados pods asignados al mismo nodo de trabajador. Cuando se inicia uno de los servicios utilizando un número de recursos superior al valor mínimo, el nodo de trabajador intenta ejecutar un número de CPU superior al que tiene.Diagnóstico del problema
Compruebe los recursos del clúster
- Comprueba el consumo de recursos en todos los nodos utilizando el siguiente comando:
oc adm top nodesDetermine si hay restricciones en el consumo de recursos en la CPU y la memoria.
- Compruebe la reserva de recursos en todos los nodos utilizando el siguiente comando:
oc describe node nodeNameBajo Recursos asignados, verá Solicitar y limitar CPU y memoria. Determinar si las reservas de recursos de CPU y de memoria están restringidas.
Nota: Los nodos de trabajador no están disponibles para su planificación los recursos de solicitudes alcanzan el 100%. Se permite la sobresuscripción, cuando los límites superan el 100%.
Compruebe el estado de los nodos del clúster
Comprueba los eventos en todos los nodos utilizando el siguiente comando: oc describe node
nodeName
En la parte inferior de la salida, bajo Sucesos, verá las actividades relacionadas con el nodo.
Compruebe los pods cuyo estado sea Finalizando
Finalice los pods que están reteniendo recursos utilizando el mandato siguiente:
oc get pod --all-namespaces -o wide | grep -i terminating | grep -i -v cleanup
Si ve un gran número de pods cuyo estado es Finalizando y Error, estarán reteniendo recursos de CPU y memoria reservados, incluso si estos recursos no se están utilizando.
Resolución del problema
Identifique los pods saturados y vuelva a planificarlos para otros nodos
Utilice los procedimientos siguientes para identificar los pods saturados y para volver a planificar los pods en otros nodos. Estos procedimientos son la solución alternativa que resuelve un único nodo que está limitado por demasiados pods, por ejemplo, IBM Knowledge Catalog pods.
Identifique los pods saturados realizando estos pasos:
- Ejecute
oc describe node nodeNamepara ver la lista completa de los pods del nodo y la reserva de recursos y los límites. - En las listas de pods de la salida de nodo de descripción, identifique los pods que solicitan una gran cantidad de recursos de CPU o memoria.
Vuelva a planificar los pods en los otros nodos realizando estos pasos:
- Marque el nodo como no planificable utilizando el mandato siguiente:
oc adm cordon nodename - Comprueba que el nodo no se puede programar utilizando el siguiente comando:
oc get nodes - Visualice el nodo en estado "SchedulingDisabled".
- Suprima los pods y reinicie los pods utilizando el mandato siguiente:
oc delete pod podname -n ${PROJECT_CPD_INST_OPERANDS} - Vuelva a marcar el nodo como planificable utilizando el mandato siguiente:
oc adm uncordon nodename - Confirme que el nodo ha vuelto al estado «Listo» utilizando el siguiente comando:
oc get nodes
Limpieza de los pods en estado de finalización
Utilice los pasos siguientes como una solución alternativa para resolver las situaciones en las que demasiados pods que están finalizando consumen recursos.
- Utilice el mandato siguiente para obtener la lista de pods que están en estado de finalización:
oc get pod --all-namespaces -o wide |grep -i terminating | grep -i -v cleanup - Utilice el mandato siguiente para limpiar los pods:
oc get pod --all-namespaces -o wide |grep -i terminating | grep -i -v cleanup | awk -F' ' '{print $2}' | xargs oc delete pod -n ${PROJECT_CPD_INST_OPERANDS} --grace-period=0 --force