Creación de un trabajo
Escenario
Los trabajos son de corta duración y se ejecutan durante un cierto tiempo hasta su finalización. Pueden ejecutarse inmediatamente después de ser desplegados. Se completa después de que sale normalmente (salida 0).
Un trabajo es un objeto de recurso que se utiliza para controlar tareas por lotes. Es diferente de una carga de trabajo de servo a largo plazo (como Deployment y StatefulSet).
Un trabajo se inicia y finaliza en los momentos específicos, mientras que una carga de trabajo de servo a largo plazo se ejecuta sin cesar a menos que se termine. Los pods gestionados por un trabajo se cierran automáticamente después de completar correctamente el trabajo en función de las configuraciones de usuario. El indicador de éxito varía según la política spec.completions.
- Trabajos únicos: Un solo pod se ejecuta una vez hasta que se termina correctamente.
- Trabajos con un recuento de éxito fijo: N pods se ejecutan hasta que se termina correctamente.
- Un trabajo de cola se considera completado en función del éxito global confirmado por la aplicación.
Requisitos previos
Se han creado recursos. Para obtener más información, véase Creación de un nodo. Si hay clústeres y nodos disponibles, no es necesario volver a crearlos.
Uso de la consola de CCE
- Inicie sesión en la consola de CCE.
- Haga clic en el nombre del clúster para ir a la consola del clúster, elija Workloads en el panel de navegación y haga clic en Create Workload en la esquina superior derecha.
- Establezca información básica sobre la carga de trabajo.
Informaciones básicas
- Workload Type: Seleccione Job. Para obtener más información sobre los tipos de carga de trabajo, consulte Overview.
- Workload Name: Introduzca el nombre de la carga de trabajo. Escriba de 1 a 63 caracteres que comienzan con una letra minúscula y terminan con una letra minúscula o un dígito. Solo se permiten letras minúsculas, dígitos y guiones (-).
- Namespace: Seleccione el espacio de nombres de la carga de trabajo. El valor predeterminado es default. También puede hacer clic en Create Namespace para crear uno. Para obtener más información, véase Creación de un espacio de nombres.
- Pods: Ingrese el número de pods.
Configuración del contenedor- Información del contenedor
Se pueden configurar múltiples contenedores en un pod. Puede hacer clic en Add Container a la derecha para configurar varios contenedores para el pod.
- Basic Info: Véase Configuración de información básica del contenedor.
- Lifecycle: Véase Setting Container Lifecycle Parameters.
- Environment Variables: Véase Setting an Environment Variable.
- Data Storage: Véase Almacenamiento de contenedores.
Si la carga de trabajo contiene más de un pod, los volúmenes de EVS no se pueden montar.
- Logging: Véase Uso de ICAgent para recopilar logs de contenedores.
- Image Access Credential: Seleccione la credencial utilizada para acceder al repositorio de imágenes. El valor predeterminado es default-secret. Puede usar default-secret para acceder a las imágenes en SWR. Para obtener más información acerca de default-secret, consulte default-secret.
- GPU graphics card: All está seleccionado de forma predeterminada. La instancia de carga de trabajo se programará en el nodo con el tipo de tarjeta gráfica de GPU especificado.
Configuración avanzada- Labels and Annotations: Véase Etiquetas y anotaciones de pod.
- Configuración de trabajo
- Parallel Pods: Número máximo de pods que pueden ejecutarse en paralelo durante la ejecución del trabajo. El valor no puede ser mayor que el número total de pods del trabajo.
- Timeout (s): Una vez que un trabajo llega a este momento, el estado del trabajo falla y se eliminarán todos los pods de este trabajo. Si deja este parámetro en blanco, el trabajo nunca se agotará.
- Haga clic en Create Workload en la esquina inferior derecha.
Uso de kubectl
Un trabajo tiene los siguientes parámetros de configuración:
- spec.template: tiene el mismo esquema que un pod.
- RestartPolicy: solo se puede establecer en Never o OnFailure.
- Para un trabajo de un solo pod, el trabajo finaliza después de que el pod se ejecute correctamente de forma predeterminada.
- .spec.completions: indica el número de pods que deben ejecutarse correctamente para finalizar un trabajo. El valor predeterminado es 1.
- .spec.parallelism: indica el número de pods que se ejecutan simultáneamente. El valor predeterminado es 1.
- spec.backoffLimit: indica el número máximo de reintentos realizados si un pod falla. Cuando se alcanza el límite, el pod no volverá a intentarlo.
- .spec.activeDeadlineSeconds: indica el tiempo de funcionamiento de los pods. Una vez alcanzado el tiempo, se terminan todos los pods del trabajo. La prioridad de .spec.activeDeadlineSeconds es mayor que la de .spec.backoffLimit. Es decir, si un trabajo alcanza .spec.activeDeadlineSeconds, el spec.backoffLimit se omite.
Según la configuración de .spec.completions y de .spec.Parallelism, los trabajos se clasifican en los siguientes tipos.
Tipo de trabajo |
Descripción |
Ejemplo |
---|---|---|
Trabajos únicos |
Un solo pod funciona una vez hasta que se termina correctamente. |
Migración de bases de datos |
Trabajos con un recuento de finalización fijo |
Un pod se ejecuta hasta alcanzar el conteo de completions especificado. |
Pod de procesamiento de colas de trabajo |
Trabajos paralelos con un recuento de finalización fijo |
Se ejecutan varios pods hasta alcanzar el recuento de completions especificado. |
Múltiples pods para procesar colas de trabajo simultáneamente |
Trabajos paralelos |
Uno o más pods se ejecutan hasta que se termina correctamente. |
Múltiples pods para procesar colas de trabajo simultáneamente |
El siguiente es un trabajo de ejemplo, que calcula π hasta 2000o dígito e imprime la salida.
apiVersion: batch/v1 kind: Job metadata: name: myjob spec: completions: 50 # 50 pods need to be run to finish a job. In this example, π is printed for 50 times. parallelism: 5 # 5 pods are run in parallel. backoffLimit: 5 # The maximum number of retry times is 5. template: spec: containers: - name: pi image: perl command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] restartPolicy: Never
Descripción
- apiVersion: batch/v1 indica la versión del trabajo actual.
- kind: Job indica que el recurso actual es un trabajo.
- restartPolicy: Never indica la política de reinicio actual. Para los trabajos, este parámetro solo se puede establecer en Never o OnFailure. Para otros controladores (por ejemplo, Deployments), puede establecer este parámetro en Always.
Ejecutar el trabajo.
- Comience el trabajo.
[root@k8s-master k8s]# kubectl apply -f myjob.yaml job.batch/myjob created
- Vea los detalles del trabajo.
kubectl get job
[root@k8s-master k8s]# kubectl get job NAME COMPLETIONS DURATION AGE myjob 50/50 23s 3m45s
Si el valor de COMPLETIONS es 50/50, el trabajo se ejecuta correctamente.
- Consulte el estado del pod.
kubectl get pod
[root@k8s-master k8s]# kubectl get pod NAME READY STATUS RESTARTS AGE myjob-29qlw 0/1 Completed 0 4m5s ...
Si el estado es Completed, el trabajo se ha completado.
- Vea los registros de pod.
kubectl logs
# kubectl logs myjob-29qlw 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632788659361533818279682303019520353018529689957736225994138912497217752834791315155748572424541506959508295331168617278558890750983817546374649393192550604009277016711390098488240128583616035637076601047101819429555961989467678374494482553797747268471040475346462080466842590694912933136770289891521047521620569660240580381501935112533824300355876402474964732639141992726042699227967823547816360093417216412199245863150302861829745557067498385054945885869269956909272107975093029553211653449872027559602364806654991198818347977535663698074265425278625518184175746728909777727938000816470600161452491921732172147723501414419735685481613611573525521334757418494684385233239073941433345477624168625189835694855620992192221842725502542568876717904946016534668049886272327917860857843838279679766814541009538837863609506800642251252051173929848960841284886269456042419652850222106611863067442786220391949450471237137869609563643719172874677646575739624138908658326459958133904780275901
Operaciones relacionadas
Una vez creado un trabajo único, puede realizar las operaciones que aparecen en la lista de Tabla 2.
Operación |
Descripción |
---|---|
Edición de un archivo YAML |
Haga clic en More > Edit YAML junto al nombre del trabajo para editar el archivo YAML correspondiente al trabajo actual. |
Eliminación de un trabajo |
|