La Red de Conocimientos Pedagógicos - Currículum vitae - Controlador de trabajos para Kubernetes (K8s)

Controlador de trabajos para Kubernetes (K8s)

El objeto Pod utiliza el controlador de trabajo para ejecutar tareas únicas. El proceso en el contenedor no lo reiniciará después de la operación normal, pero pondrá el objeto Pod en el estado "Completado". Si el proceso en el contenedor finaliza debido a un error, debe determinar si se reiniciará de acuerdo con la configuración de la política de reinicio. Los objetos Pod no terminados se programarán después de que finalicen inesperadamente debido a una falla del nodo donde se encuentran.

La transición de estado del objeto Pod del controlador de trabajos se muestra en la siguiente figura:

Es posible que algunos trabajos deban ejecutarse más de una vez y los usuarios pueden configurarlos para ejecutarse en modo serie o paralelo.

El único campo necesario integrado en el campo de especificación del controlador de Trabajo es la plantilla. No es necesario definir un selector de etiquetas. El controlador se asociará automáticamente. Excepto por esto, es diferente del Despliegue. controlador.

1. Cree una lista de configuración del controlador de trabajos

Utilice la imagen de Busybox, luego duerma durante 120 segundos y salga del contenedor normalmente una vez completado.

2. Cree una Controlador de trabajo

3. Ver el controlador de trabajo y el estado del Pod

Después de 120 segundos, el objeto Pod creado por el controlador de trabajo completó la tarea

Ver la información detallada del controlador de trabajo

Los siguientes selectores y etiquetas se asocian automáticamente después de ser generados automáticamente por el controlador de trabajo. El controlador genera automáticamente la cadena controlador-uid-random. El controlador lleva la última cadena para evitar el Pod. logra que esto no coincida.

A continuación puede ver que después de que el trabajo se ejecuta correctamente y completa la operación, no se reinicia el proceso. Esto se debe a la política de reinicio que configuramos.

Establezca el valor del atributo de paralelismo job.spec.parallelism en 1 y establezca el número total de tareas en el atributo job.spec.completions para permitir que el controlador de trabajo ejecute múltiples tareas en serie. es un ejemplo de controladores de trabajos que requieren 5 tareas en serie:

Crear controladores de trabajos

Monitorear dinámicamente los cambios en los trabajos de objetos Pod

Como se indicó anteriormente, se requieren controladores de trabajos Ejecute cinco tareas, cada vez que un Pod ejecute una tarea y las ejecute en secuencia. El Pod después de una ejecución exitosa estará en el estado completo.

Para trabajos paralelos, solo necesitamos modificar job.spec.parallelism. atributo y job.spec El atributo de finalización es suficiente;

El atributo job.spec.parallelism indica cuántas colas se inician para ejecutar el trabajo cada vez (es decir, el número de Pods)

El atributo job.spec.completions indica el número de trabajos Cantidad total

El siguiente ejemplo tiene 5 trabajos e inicia 5 colas para trabajos al mismo tiempo.

Verifique el estado de ejecución del controlador de trabajo. El tiempo de creación de los objetos Pod en el siguiente controlador de trabajo es consistente.

Una vez completado el Pod en el controlador de trabajos, ya no ocupará recursos del sistema. Los usuarios pueden conservarlo según sea necesario o utilizar el comando de eliminación de recursos para eliminar el Pod. Cierto controlador siempre no funciona normalmente. Después de terminar de ejecutarse y su restartPolicy está configurado para reiniciarse, puede permanecer en un ciclo de reinicios y errores constantes. Afortunadamente, el controlador de trabajo proporciona dos propiedades para suprimir la ocurrencia de esta situación, de la siguiente manera:

Por ejemplo, la siguiente lista de configuración indica que el número de reintentos fallidos es 5 y si la ejecución es aún no se ha completado después de 100 segundos, termínelo: