[k8s] Jobs, oneshot and parallel
- Jobs được thiết kế để quản lý công việc một cách hàng loạt, nơi các pods có thể thực thi một hoặc nhiều.
- Mặc định, jobs là được thực thi 1 pod cho đến khi thành công và chấm dứt.
- Trong jobs, có 3 loại đơn giản đó là one-shot,parallevàworkqueue, trong bài này mình sẽ nói đếnone-shotvàparallel.
One-shot
- One-shot là jobs cung cấp một phương thức để chạy duy nhất 1 pod cho đến khi thành công và kết thúc.
- Trong ví dụ, mình sẽ deploy 1 pod ubuntuvà echo ra dòng chữhello, i am opendev.
- oneshot.yaml
apiVersion: batch/v1
kind: Job
metadata:
  name: ubuntu
spec:
  template:
    metadata:
      name: ubuntu
    spec:
      containers:
      - name: ubuntu
        image: ubuntu
        command: ["bash"]
        args: ["-c",  "echo hello, i am opendev "]
      restartPolicy: Never
- run câu lệnh:
kubectl apply -f oneshot.yaml 
- kiểm tra xem jobs:
kubectl get jobs

- kiểm tra xem pods:
kubectl get pods

- Sau khi pod run complete, mình kiểm tra xem log của pod có phải là hello, i am opendevkhông, nếu có log như vậy là thành công rồi.![]() 
Parallelism
- Bây giờ có 1 usecase đòi hỏi thời gian xử lý lâu, và muốn tăng tốc độ xử lý lên thì có thể dùng parallel.
- Mình sẽ chạy parallel 1 lần là 3 pod, chạy 3 lần với 9 pod hoàn thành.
- parallel.yaml
apiVersion: batch/v1
kind: Job
metadata:
  name: ubuntu
spec:
  parallelism: 3
  completions: 9
  template:
    metadata:
      name: ubuntu
    spec:
      containers:
      - name: ubuntu
        image: ubuntu
        command: ["bash"]
        args: ["-c",  "echo hello, i am opendev "]
      restartPolicy: Never
- Giải thích:
- trong yamlcần thêm 2 thuộc tính trongspec:parallelismlà số lượng pods thực hiện đồng thời,completionslà số lượng pods cần phải hoàn thành.
 
- trong 
- run câu lệnh get pod
kubectl get pods
 

- Kiểm tra job đã thực thi được bao nhiêu pod complete:
kubectl get jobs

- Mình đã demo đơn giản về jobs: oneshotvàparallel, có gì thắc mắc thì liên hệ mình hỗ trợ thêm.
Cảm ơn.
Liên Hệ
- facebook: https://www.facebook.com/phucducdev/
- group: https://www.facebook.com/groups/575250507328049
- gmail: ducnp09081998@gmail.com
- linkedin: https://www.linkedin.com/in/phucducktpm/
- hashnode: https://hashnode.com/@OpenDev
- telegram: https://t.me/OpenDevGolang
All rights reserved
 
  
 
