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
- Crea un fitxer anomenat
example-job.yaml
amb el contingut anterior. - Aplica el fitxer al teu clúster de Kubernetes amb la comanda:
kubectl apply -f example-job.yaml
- 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
- Crea un fitxer anomenat
example-cronjob.yaml
amb el contingut anterior. - Aplica el fitxer al teu clúster de Kubernetes amb la comanda:
kubectl apply -f example-cronjob.yaml
- 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
- Què és Kubernetes?
- Arquitectura de Kubernetes
- Conceptes i Terminologia Clau
- Configuració d'un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
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
- Monitorització amb Prometheus
- Registre amb Elasticsearch, Fluentd i Kibana (EFK)
- Controls de Salut i Probes
- Servidor de Mètriques
Mòdul 8: Seguretat en Kubernetes
- Control d'Accés Basat en Rols (RBAC)
- Polítiques de Seguretat de Pods
- Seguretat de Xarxa
- Seguretat d'Imatges
Mòdul 9: Escalabilitat i Rendiment
- Autoscalat Horitzontal de Pods
- Autoscalat Vertical de Pods
- Autoscalat de Clúster
- Optimització del Rendiment
Mòdul 10: Ecosistema i Eines de Kubernetes
Mòdul 11: Estudis de Cas i Aplicacions del Món Real
- Desplegament d'una Aplicació Web
- CI/CD amb Kubernetes
- Execució d'Aplicacions Stateful
- Gestió Multi-Clúster