En aquest tema, explorarem dos tipus de recursos de Kubernetes que són essencials per a l'execució de tasques puntuals o repetitives: les Feines (Jobs) i les Feines Programades (CronJobs). Aquests recursos són útils per a tasques com la generació de còpies de seguretat, l'enviament de correus electrònics, o qualsevol altra tasca que necessiti ser executada de manera puntual o periòdica.

Feines (Jobs)

Què és una Feina?

Una Feina en Kubernetes és un recurs que crea un o més Pods i s'assegura que un nombre especificat d'ells finalitzi amb èxit. Les Feines són útils per a tasques que necessiten ser executades una sola vegada o un nombre limitat de vegades.

Creació d'una Feina

A continuació, es mostra un exemple de manifest YAML per a crear una Feina que executa un script senzill:

apiVersion: batch/v1
kind: Job
metadata:
  name: example-job
spec:
  template:
    spec:
      containers:
      - name: example
        image: busybox
        command: ["echo", "Hello, Kubernetes!"]
      restartPolicy: Never
  backoffLimit: 4

Explicació del Codi

  • apiVersion: batch/v1: Especifica la versió de l'API per a les Feines.
  • kind: Job: Indica que aquest recurs és una Feina.
  • metadata.name: El nom de la Feina.
  • spec.template.spec.containers: Defineix els contenidors que s'executaran en els Pods creats per la Feina.
  • command: L'ordre que s'executarà dins del contenidor.
  • restartPolicy: Never: Assegura que els Pods no es reiniciïn automàticament.
  • backoffLimit: El nombre màxim de vegades que Kubernetes intentarà reiniciar un Pod fallit abans de donar per fallida la Feina.

Exercici Pràctic

  1. Crea un fitxer anomenat example-job.yaml amb el contingut anterior.
  2. Aplica el fitxer al teu clúster de Kubernetes amb la comanda:
    kubectl apply -f example-job.yaml
    
  3. Verifica l'estat de la Feina amb:
    kubectl get jobs
    

Feines Programades (CronJobs)

Què és una Feina Programada?

Una Feina Programada (CronJob) és un recurs que crea Feines de manera periòdica segons un horari especificat. És similar a la funcionalitat de cron en sistemes Unix.

Creació d'una Feina Programada

A continuació, es mostra un exemple de manifest YAML per a crear una Feina Programada que executa una tasca cada minut:

apiVersion: batch/v1
kind: CronJob
metadata:
  name: example-cronjob
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: example
            image: busybox
            command: ["echo", "Hello, Kubernetes!"]
          restartPolicy: Never

Explicació del Codi

  • apiVersion: batch/v1: Especifica la versió de l'API per a les Feines Programades.
  • kind: CronJob: Indica que aquest recurs és una Feina Programada.
  • metadata.name: El nom de la Feina Programada.
  • spec.schedule: Defineix l'horari en format cron.
  • jobTemplate.spec.template.spec.containers: Defineix els contenidors que s'executaran en els Pods creats per la Feina Programada.
  • command: L'ordre que s'executarà dins del contenidor.
  • restartPolicy: Never: Assegura que els Pods no es reiniciïn automàticament.

Exercici Pràctic

  1. Crea un fitxer anomenat example-cronjob.yaml amb el contingut anterior.
  2. Aplica el fitxer al teu clúster de Kubernetes amb la comanda:
    kubectl apply -f example-cronjob.yaml
    
  3. Verifica l'estat de la Feina Programada amb:
    kubectl get cronjobs
    

Errors Comuns i Consells

  • Error en la sintaxi del cron: Assegura't que l'horari especificat en spec.schedule segueixi el format cron correcte.
  • Política de reinici incorrecta: Utilitza restartPolicy: Never per a Feines i Feines Programades per evitar reinicis automàtics no desitjats.
  • Limitació de recursos: Assegura't que el teu clúster tingui suficients recursos per executar les Feines i Feines Programades.

Resum

En aquesta secció, hem après sobre les Feines i les Feines Programades en Kubernetes. Hem vist com crear i gestionar aquests recursos amb exemples pràctics i hem discutit alguns errors comuns i consells per evitar-los. Amb aquests coneixements, estaràs preparat per automatitzar tasques en el teu clúster de Kubernetes de manera eficient.

Curs de Kubernetes

Mòdul 1: Introducció a Kubernetes

Mòdul 2: Components Bàsics de Kubernetes

Mòdul 3: Gestió de Configuració i Secrets

Mòdul 4: Xarxes en Kubernetes

Mòdul 5: Emmagatzematge en Kubernetes

Mòdul 6: Conceptes Avançats de Kubernetes

Mòdul 7: Monitorització i Registre

Mòdul 8: Seguretat en Kubernetes

Mòdul 9: Escalabilitat i Rendiment

Mòdul 10: Ecosistema i Eines de Kubernetes

Mòdul 11: Estudis de Cas i Aplicacions del Món Real

Mòdul 12: Preparació per a la Certificació de Kubernetes

© Copyright 2024. Tots els drets reservats