¿Por qué los pods no se pueden reiniciar repetidamente o se eliminan inesperadamente?
Virtual Private Cloud Infraestructura clásica
Su pod estaba en buen estado pero inesperadamente se ha eliminado o ha quedado atascado en un bucle de reinicio. A veces, los contenedores muestran el estado CrashLoopBackOff.
Es posible que sus contenedores superen sus límites de recursos, o que sus pods hayan sido sustituidos por pods de prioridad más alta. Cuando un contenedor Kubernetes falla repetidamente al arrancar, entra en estado CrashLoopBackOff,
indicando un bucle de reinicio persistente dentro de un pod. Este error se produce a menudo debido a diversos problemas que impiden que el contenedor se inicie correctamente. Las causas más comunes pueden incluir memoria insuficiente, sobrecarga
de recursos, errores de despliegue, problemas de servicios de terceros como errores DNS, dependencias que faltan o fallos de contenedores debido a conflictos de puertos.
Consulte las secciones siguientes:
- Cómo arreglar los límites de recursos de contenedor
- Cómo arreglar la sustitución de pods por pods de más prioridad
Cómo arreglar los límites de recursos de contenedor
- Obtenga el nombre del pod. Si ha utilizado una etiqueta, puede incluirla para filtrar los resultados.
oc get pods --selector='app=wasliberty' - Describa el pod y busque el Recuento de reinicios.
oc describe pod - Si el pod se ha reiniciado muchas veces durante un breve periodo de tiempo, capte su estado.
oc get pod <pod_name> -n <namespace> -o go-template='{{range.status.containerStatuses}}{{"Container Name: "}}{{.name}}{{"\r\nLastState: "}}{{.lastState}}{{end}}' - Revise el motivo. Por ejemplo,
OOM Killedsignifica sin memoria, lo que indica que el contenedor se está bloqueando debido a un límite de recursos. - Añada capacidad a su clúster, por ejemplo redimensionando los pools de trabajadores para que los recursos puedan ser satisfechos. Para obtener más información, consulte Redimensionar la agrupación de nodos trabajadores clásica o Redimensionar la agrupación de nodos trabajadores de VPC.
Cómo arreglar la sustitución de pods por pods de más prioridad
Para ver si su pod ha sido sustituido por pods de prioridad más alta:
-
Obtenga el nombre del pod.
oc get pods -
Describa el YAML de su pod.
oc get pod <pod_name> -o yaml -
Compruebe el campo
priorityClassName.-
Si no hay ningún valor del campo
priorityClassName, significa que su pod tiene la clase de prioridadglobalDefault. Si el administrador del clúster no ha establecido una clase de prioridadglobalDefault, el valor predeterminado es cero (0) o la prioridad más baja. Cualquier pod con una clase de prioridad más alta tiene preferencia sobre su pod o puede eliminarlo. -
Si hay un valor para el campo
priorityClassName, obtenga la clase de prioridad.oc get priorityclass <priority_class_name> -o yaml -
Observe el campo
valuepara comprobar la prioridad del pod.
-
-
Obtenga una lista de las clases de prioridad del clúster.
oc get priorityclasses -
Para cada clase de prioridad, obtenga el archivo YAML y observe el campo
value.oc get priorityclass <priority_class_name> -o yaml -
Compare el valor de la clase de prioridad de su pod con los otros valores de clase de prioridad para ver si la prioridad es más alta o más baja.
-
Repita los pasos del 1 al 3 para los otros pods del clúster, para comprobar qué clase de prioridad están utilizando. Si la clase de prioridad de estos otros pods es más alta que la de su pod, su pod no se suministra a menos que haya recursos suficientes para su pod y para cada pod con prioridad más alta.
-
Póngase en contacto con el administrador del clúster para añadir más capacidad a su clúster y confirmar que se han asignado las clases de prioridad correctas.