برنامه نویسی

Kubernetes 101، بخش هفتم، مشاغل و کرانجاب ها

در مقاله قبلی ما، یاد گرفتیم که چگونه DaemonSets می‌تواند به طور مؤثر داده‌ها را از گره‌های Kubernetes جمع‌آوری کند و به داده‌ها اجازه ساختاردهی و ارسال به ابزار مناسب را بدهد.

در این پست، به موضوع اجرای یک شغل در Kubernetes از طریق استفاده از Kubernetes Jobs خواهیم پرداخت.

علاوه بر این، یاد خواهیم گرفت که چگونه Kubernetes برنامه ریزی کارها را به طور منظم با استفاده از Cronjobs اجرا می کند.


کار

اشیاء شغلی Kubernetes a کنترل کننده کار که یک Pod ایجاد می کند از مشخصات ارائه شده، و آن را قادر می سازد تا یک دستور دلخواه را اجرا کند.

با این حال، فایل YAML به شکل زیر است:

kind: Job
apiVersion: batch/v1
metadata:
  name: sleeper
spec:
  template:
    spec:
      restartPolicy: Never
      containers:
      - name: sleeper
        image: debian
        command: ["sleep", "15"]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ما می توانیم آن کار را بررسی کنیم sleeper ایجاد شد:

$ kubectl get jobs

NAME      COMPLETIONS   DURATION   AGE
sleeper   0/1           5s        5s
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و یک Pod از شغل ایجاد شده در بالا شروع شد:

$ kubectl get pods

NAME                    READY   STATUS    RESTARTS   AGE
sleeper-8mmtg           1/1     Running   0          8s
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بعد از اینکه Pod با موفقیت تمام شد، به قسمت می رود Completed وضعیت:

$ kubectl get pods

NAME                    READY   STATUS    RESTARTS   AGE
sleeper-8mmtg           0/1     Completed   0          35s
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و Job completions به روز می شود 1/1:

$ kubectl get jobs

NAME      COMPLETIONS   DURATION   AGE
sleeper   1/1           35s        35s
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در زیر یک نمایش بصری از نحوه مدیریت جابز توسط Kubernetes وجود دارد که توسط یک Pod پشتیبانی می شود که دستور ارائه شده را اجرا می کند:

با این حال، نادر نیست که مجبور شویم به طور منظم یک شغل را اجرا کنیم.

در سیستم‌های شبه یونیکس، برنامه‌ای به نام crontab امکان اجرای منظم را با یک دستور برای زمان‌بندی، یک فرمان دلخواه را فراهم می‌کند. Kubernetes به Jobs اجازه می دهد تا به همان شیوه و با استفاده از the برنامه ریزی شود نحو crontab.

با Kubernetes CronJobs آشنا شوید.


CronJob

به طور خلاصه، یک Cronjob اراده به طور منظم یک شغل جدید را شروع کنید، که از آن یک Pod جدید شروع خواهد شد.

در اینجا تصویری از نحوه عملکرد CronJobs در Kubernetes آورده شده است:

cronjobs k8s

در زیر نمایش YAML آن آمده است:

kind: CronJob
apiVersion: batch/v1
metadata:
  name: sleeper
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: Never
          containers:
          - name: sleeper
            image: debian
            command: ["sleep", "15"]

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  • در schedule ما دستور crontab را ارائه می دهیم
  • را jobTemplate دقیقا همین است مشخصات شغلی که یک Pod را اجرا خواهد کرد

بیایید تأیید کنیم که Kubernetes یک شی Cronjob ایجاد کرده است:

$ kubectl get cronjobs

NAME      SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
sleeper   */1 * * * *   False     0        52s             9m29s
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

از CronJob، یک شغل ایجاد شد:

$ kubectl get jobs

NAME               COMPLETIONS   DURATION   AGE
sleeper-28046804   0/1           22s        35s
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و یک Pod راه اندازی شد:

$ kubectl get pods

NAME                     READY   STATUS      RESTARTS   AGE
sleeper-28046805-hqkwb   1/1     Running     0          40s
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بعد از چند دقیقه، می‌بینیم که CronJob 3 شغل ایجاد کرده است که اتفاقاً تعداد پیش‌فرض‌های شغلی است که Kubernetes در خوشه نگه می‌دارد (ما می‌توانیم آن تعداد را در صورت نیاز تغییر دهیم. successfulJobsHistoryLimit):

$ kubectl get jobs

NAME               COMPLETIONS   DURATION   AGE
sleeper-28046806   1/1           21s        3m10s
sleeper-28046807   1/1           21s        2m10s
sleeper-28046808   1/1           21s        70s
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بنابراین، هر Job یک Pod جدید را شروع می کند:

$ kubectl get pods

NAME                     READY   STATUS      RESTARTS   AGE
sleeper-28046808-szdw7   0/1     Completed   0          2m26s
sleeper-28046809-fhxk8   0/1     Completed   0          86s
sleeper-28046810-2gvds   0/1     Completed   0          26s
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


بسته بندی

این پست نحوه اجرای دستورات دلخواه را با استفاده از شی Kubernetes Job نشان می دهد.

علاوه بر این، ما آموخته‌ایم که اشیاء Kubernetes CronJob اجازه می‌دهند تا زمان‌بندی Jobs به طور منظم اجرا شود.

تا اینجای کار به این موضوع پرداختیم اشیاء بار کاری اولیه Kubernetes، یعنی ReplicaSet، Deployment، StatefulSet، DaemonSet، Job و CronJob.

در پست‌های بعدی، چگونگی ارتباط این اشیاء با یکدیگر را در داخل خوشه و در عین حال درک درستی از شبکه Kubernetes را بررسی خواهیم کرد.


این پست با کمک ChatGPT نوشته شده است، که به مقداری “چشم شیرین” در گرامر کمک کرد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا