+7

[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, paralleworkqueue, trong bài này mình sẽ nói đến one-shotparallel.

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 ubuntu và 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 opendev khô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 yaml cần thêm 2 thuộc tính trong spec: parallelism là số lượng pods thực hiện đồng thời, completions là số lượng pods cần phải hoàn thành.
  • 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: oneshotparallel, có gì thắc mắc thì liên hệ mình hỗ trợ thêm.

Cảm ơn.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí