Comment configurer les Jobs Kubernetes pour le traitement parallèle

KubernetesKubernetesBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Ce tutoriel fournit une compréhension complète des Jobs Kubernetes, une fonction puissante pour exécuter des tâches orientées lot dans votre cluster Kubernetes. Vous allez apprendre à configurer les Jobs Kubernetes pour le traitement parallèle, les déployer et surveiller leur exécution.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedCommandsGroup(["Advanced Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedDeploymentGroup(["Advanced Deployment"]) kubernetes/BasicCommandsGroup -.-> kubernetes/create("Create") kubernetes/BasicCommandsGroup -.-> kubernetes/run("Run") kubernetes/AdvancedCommandsGroup -.-> kubernetes/apply("Apply") kubernetes/AdvancedDeploymentGroup -.-> kubernetes/rollout("Rollout") kubernetes/AdvancedDeploymentGroup -.-> kubernetes/scale("Scale") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/logs("Logs") subgraph Lab Skills kubernetes/create -.-> lab-414879{{"Comment configurer les Jobs Kubernetes pour le traitement parallèle"}} kubernetes/run -.-> lab-414879{{"Comment configurer les Jobs Kubernetes pour le traitement parallèle"}} kubernetes/apply -.-> lab-414879{{"Comment configurer les Jobs Kubernetes pour le traitement parallèle"}} kubernetes/rollout -.-> lab-414879{{"Comment configurer les Jobs Kubernetes pour le traitement parallèle"}} kubernetes/scale -.-> lab-414879{{"Comment configurer les Jobs Kubernetes pour le traitement parallèle"}} kubernetes/describe -.-> lab-414879{{"Comment configurer les Jobs Kubernetes pour le traitement parallèle"}} kubernetes/logs -.-> lab-414879{{"Comment configurer les Jobs Kubernetes pour le traitement parallèle"}} end

Comprendre les Jobs Kubernetes

Les Jobs Kubernetes sont une fonction puissante qui vous permet d'exécuter des tâches orientées lot dans votre cluster Kubernetes. Ces tâches sont généralement de courte durée et non répétitives, ce qui les rend idéales pour des scénarios tels que le traitement de données, la formation de modèles et les tâches de configuration initiale ou une seule fois.

Un Job Kubernetes est défini par un fichier de configuration YAML qui spécifie l'image de conteneur, la commande et d'autres paramètres à exécuter. Les aspects clés d'un Job Kubernetes sont les suivants :

Définition du Job

La définition du Job inclut l'image de conteneur, la commande et toutes les variables d'environnement ou volumes nécessaires. Voici un exemple de définition de Job :

apiVersion: batch/v1
kind: Job
metadata:
  name: example-job
spec:
  template:
    spec:
      containers:
        - name: example-container
          image: ubuntu:22.04
          command: ["echo", "Hello, Kubernetes!"]

Ce Job exécutera un seul conteneur qui exécutera la commande echo avec le message "Hello, Kubernetes!".

Parallélisme et complétions

Les Jobs Kubernetes prennent en charge le parallélisme, qui vous permet d'exécuter plusieurs instances du même Job simultanément. Le champ parallelism spécifie le nombre maximum d'instances parallèles, tandis que le champ completions définit le nombre de complétions réussies requises pour considérer que le Job est terminé.

apiVersion: batch/v1
kind: Job
metadata:
  name: example-parallel-job
spec:
  parallelism: 3
  completions: 5
  template:
    spec:
      containers:
        - name: example-container
          image: ubuntu:22.04
          command: ["echo", "Job instance $(HOSTNAME)"]

Dans cet exemple, le Job exécutera jusqu'à 3 instances parallèles, et le Job sera considéré terminé lorsque 5 instances auront été terminées avec succès.

Traitement par lots

Les Jobs Kubernetes sont bien adaptés aux tâches de traitement par lots, où vous devez traiter une grande quantité de données ou effectuer une série de tâches indépendantes. En utilisant les fonctionnalités de parallélisme et de complétions, vous pouvez optimiser le temps de traitement et vous assurer que toutes les tâches sont terminées avec succès.

Configurer les Jobs Kubernetes pour le traitement parallèle

Les Jobs Kubernetes peuvent être configurés pour exploiter le traitement parallèle, vous permettant d'exécuter plusieurs instances de la même tâche simultanément. Cela peut considérablement améliorer l'efficacité et la vitesse de vos charges de travail de traitement par lots.

Parallélisme

Le champ parallelism dans la spécification du Job détermine le nombre maximum d'instances parallèles qui peuvent être exécutées en même temps. Cela vous permet d'étendre votre puissance de traitement et de réduire le temps de finition global.

apiVersion: batch/v1
kind: Job
metadata:
  name: example-parallel-job
spec:
  parallelism: 3
  completions: 9
  template:
    spec:
      containers:
        - name: example-container
          image: ubuntu:22.04
          command:
            [
              "bash",
              "-c",
              "echo 'Processing item $(HOSTNAME)'; sleep $((RANDOM % 10))"
            ]

Dans cet exemple, le Job exécutera jusqu'à 3 instances parallèles, chacune traitant un élément différent.

Complétions

Le champ completions spécifie le nombre de complétions de tâche réussies requises pour considérer que le Job est terminé. Cela vous permet de vous assurer que tout le travail nécessaire a été effectué, même si des instances individuelles échouent.

apiVersion: batch/v1
kind: Job
metadata:
  name: example-parallel-job
spec:
  parallelism: 3
  completions: 9
  template:
    spec:
      containers:
        - name: example-container
          image: ubuntu:22.04
          command:
            [
              "bash",
              "-c",
              "echo 'Processing item $(HOSTNAME)'; sleep $((RANDOM % 10))"
            ]

Dans cet exemple, le Job sera considéré terminé lorsque 9 instances auront été terminées avec succès.

Limite de réessai

Vous pouvez également configurer un champ backoffLimit pour spécifier le nombre de réessais autorisés pour une instance de Job ayant échoué avant que le Job ne soit marqué comme ayant échoué. Cela peut vous aider à gérer les échecs temporaires et à vous assurer que vos tâches de traitement par lots sont résilientes aux erreurs.

En configurant soigneusement le parallélisme, les complétions et la limite de réessai, vous pouvez optimiser vos Jobs Kubernetes pour un traitement parallèle efficace et une exécution de charges de travail par lots fiable.

Déployer et surveiller les Jobs Kubernetes

Développer et surveiller les Jobs Kubernetes est un aspect crucial de la gestion efficace de vos charges de travail de traitement par lots. Explorer les étapes impliquées dans le déploiement et la surveillance des Jobs Kubernetes.

Déployer les Jobs Kubernetes

Pour déployer un Job Kubernetes, vous pouvez utiliser l'outil de ligne de commande kubectl pour créer une nouvelle ressource Job sur la base de votre fichier de configuration YAML.

kubectl create -f job-definition.yaml

Cela créera le Job dans votre cluster Kubernetes, et le contrôleur de Job commencera à gérer l'exécution de la tâche.

Surveiller les Jobs Kubernetes

Surveiller l'état et l'avancement de vos Jobs Kubernetes est essentiel pour vous assurer que vos tâches de traitement par lots sont exécutées comme prévu.

Statut du Job

Vous pouvez utiliser la commande kubectl get jobs pour afficher l'état de vos Jobs, y compris le nombre de complétions réussies et échouées, ainsi que l'état global du Job.

kubectl get jobs
NAME COMPLETIONS DURATION AGE
example-parallel-job 9/9 1m 5m

Journaux du Job

Pour afficher les journaux d'une instance de Job spécifique, vous pouvez utiliser la commande kubectl logs et spécifier le nom du Job et le nom du conteneur.

kubectl logs job/example-parallel-job -c example-container
Processing item example-parallel-job-dxkjf
Processing item example-parallel-job-xpqzr
Processing item example-parallel-job-zqwer

Cela vous fournira les journaux de chacune des instances parallèles du Job, vous permettant de déboguer et de résoudre tout problème qui pourrait survenir.

Conclusion

En comprenant comment déployer et surveiller les Jobs Kubernetes, vous pouvez gérer efficacement vos charges de travail de traitement par lots et vous assurer que vos tâches sont exécutées de manière fiable et efficace dans votre cluster Kubernetes.

Résumé

Les Jobs Kubernetes sont un outil polyvalent pour exécuter des tâches de courte durée et non répétitives telles que le traitement de données, la formation de modèles et les tâches de configuration initiale ou une seule fois. En exploitant les fonctionnalités de parallélisme et de complétions, vous pouvez optimiser les performances de vos charges de travail de traitement par lots. Ce tutoriel vous a guidé au travers des aspects clés des Jobs Kubernetes, y compris la définition du job, le parallélisme et le traitement par lots, vous équipant des connaissances pour utiliser efficacement cette fonction dans vos applications basées sur Kubernetes.