Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2024-09-10 GMT+08:00

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

  1. Inicie sesión en la consola de CCE.
  2. 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.
  3. 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
    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á.

  4. 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.

Tabla 1 Tipos de trabajo

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.

  1. Comience el trabajo.

    [root@k8s-master k8s]# kubectl apply -f myjob.yaml
    job.batch/myjob created

  2. 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.

  3. 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.

  4. 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.

Tabla 2 Otras operaciones

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

  1. Seleccione el trabajo que desea eliminar y haga clic en Delete en la columna Operation.
  2. Haga clic en Yes.

    Los trabajos eliminados no se pueden restaurar. Tenga cuidado al eliminar un trabajo.