9 votes

Comment faire évoluer un travail déjà créé ?

J'ai un job Kubernetes dont le parallélisme est, par exemple, réglé sur 4. Lorsque ce job est créé, je peux souhaiter le faire évoluer vers 8, par exemple. edit Le fait d'ouvrir le job et de régler le parallélisme sur 8 ne crée pas réellement plus de pods dans le job.

Est-ce que j'ai manqué quelque chose ? Ou n'y a-t-il aucun moyen de réduire la taille d'un travail ?

5voto

VKR Points 2355

Ainsi, selon documentation du travail vous pouvez toujours mettre à l'échelle un job en exécutant la commande suivante :

kubectl scale job my-job --replicas=[VALUE]

Un test simple montre que cette option fonctionne actuellement comme prévu, mais qu'elle sera vraiment dépréciée dans un futur

kubectl scale job est DEPRECATED et sera supprimé future.

La possibilité d'utiliser les travaux de mise à l'échelle de kubectl est dépréciée. Toutes les autres opérations opérations de mise à l'échelle restent en place, mais la possibilité de mettre à l'échelle les travaux sera sera supprimée dans une prochaine version.

La raison en est que : Dépréciation de kubectl scale job

Utilisez le Job yaml ci-dessous comme exemple pour créer le job :

apiVersion: batch/v1
kind: Job
metadata:
  name: test-job
spec:
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2010)"]
      restartPolicy: Never
  completions: 1000
  parallelism: 5

Maintenant, testons le comportement :

kubectl describe jobs.batch test-job 
Parallelism:    5
Completions:    1000
Start Time:     Fri, 17 May 2019 16:58:36 +0200
Pods Statuses:  5 Running / 21 Succeeded / 0 Failed

kubectl get pods | grep test-job | grep Running
test-job-98mlv           1/1     Running     0          13s
test-job-fs2hb           1/1     Running     0          8s
test-job-l8n6v           1/1     Running     0          16s
test-job-lbh46           1/1     Running     0          13s
test-job-m8btl           1/1     Running     0          2s

Modification du parallélisme avec kubectl scale :

kubectl scale jobs.batch test-job --replicas=10

kubectl describe jobs.batch test-job
Parallelism:    10
Completions:    1000
Start Time:     Fri, 17 May 2019 16:58:36 +0200
Pods Statuses:  10 Running / 87 Succeeded / 0 Fail

kubectl get pods | grep test-job | grep Running
test-job-475zf           1/1     Running     0          10s
test-job-5k45h           1/1     Running     0          14s
test-job-8p99v           1/1     Running     0          22s
test-job-jtssp           1/1     Running     0          4s
test-job-ltx8f           1/1     Running     0          12s
test-job-mwnqb           1/1     Running     0          16s
test-job-n7t8b           1/1     Running     0          20s
test-job-p4bfs           1/1     Running     0          18s
test-job-vj8qw           1/1     Running     0          18s
test-job-wtjdl           1/1     Running     0          10s

Et la dernière étape qui, je pense, sera la plus intéressante pour vous - vous pouvez toujours éditer votre travail en utilisant patch kubectl commande

kubectl patch job test-job -p '{"spec":{"parallelism":15}}'

kubectl describe jobs.batch test-job
Parallelism:    15
Completions:    1000
Start Time:     Fri, 17 May 2019 16:58:36 +0200
Pods Statuses:  15 Running / 175 Succeeded / 0 Failed

kubectl get pods | grep test-job | grep Running | wc -l
15

2voto

kubectl scale ne prend pas en charge Job plus de ressources. Voici une solution qui fonctionne pour moi :

  • kubectl edit job [JOB_NAME]
  • set parallelism à une valeur appropriée pour vous.

Il créera de nouveaux pods ou mettra fin aux pods existants.

1voto

Max Lobur Points 4528

Il y a un scale commandement :

kubectl scale job my-job --replicas=[VALUE]

De docs :

kubectl scale fait en sorte que le nombre de Pods fonctionnant simultanément soit de changer. Plus précisément, il modifie la valeur du parallélisme à la valeur [VALEUR] spécifiée. [VALEUR] que vous spécifiez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X