Kubernetes - 工作


作业的主要功能是创建一个或多个 Pod 并跟踪 Pod 的成功情况。它们确保指定数量的 Pod 成功完成。当指定数量的 pod 成功运行完成后,该作业即被视为完成。

创造就业机会

使用以下命令创建作业 -

apiVersion: v1
kind: Job ------------------------> 1
metadata:
   name: py
   spec:
   template:
      metadata
      name: py -------> 2
      spec:
         containers:
            - name: py ------------------------> 3
            image: python----------> 4
            command: ["python", "SUCCESS"]
            restartPocliy: Never --------> 5

在上面的代码中,我们定义了 -

  • kind: Job →我们将 kind 定义为 Job,它会告诉kubectl正在使用的yaml文件是为了创建一个作业类型 pod。

  • Name:py →这是我们正在使用的模板的名称,规范定义了该模板。

  • name: py →我们在容器规范下给定了一个名称py,这有助于识别将要从中创建的 Pod。

  • 图像:python →我们将提取用于创建将在 pod 内运行的容器的图像。

  • restartPolicy: Never →镜像重启的条件为 never,这意味着如果容器被杀死或者为 false,则它不会自行重启。

我们将使用以下命令和 yaml 创建作业,并以名称py.yaml保存。

$ kubectl create –f py.yaml

上面的命令将创建一个作业。如果要检查作业的状态,请使用以下命令。

$ kubectl describe jobs/py

上面的命令将创建一个作业。如果要检查作业的状态,请使用以下命令。

预定工作

Kubernetes 中的计划作业使用Cronetes,它接受 Kubernetes 作业并在 Kubernetes 集群中启动它们。

  • 调度作业将在指定时间点运行 Pod。
  • 为其创建一个模仿作业,该作业会自动调用自身。

注意- 版本 1.4 支持计划作业的功能,并且在启动 API 服务器时通过传递–runtime-config=batch/v2alpha1来打开 betch/v2alpha 1 API 。

我们将使用与创建作业相同的 yaml 并将其设为计划作业。

apiVersion: v1
kind: Job
metadata:
   name: py
spec:
   schedule: h/30 * * * * ? -------------------> 1
   template:
      metadata
         name: py
      spec:
         containers:
         - name: py
         image: python
         args:
/bin/sh -------> 2
-c
ps –eaf ------------> 3
restartPocliy: OnFailure

在上面的代码中,我们定义了 -

  • 时间表:h/30 * * * * ? → 安排作业每 30 分钟运行一次。

  • /bin/sh:这将进入带有/bin/sh的容器

  • ps –eaf →将在计算机上运行 ps -eaf 命令并列出容器内所有正在运行的进程。

当我们尝试在指定时间点构建和运行一组任务然后完成该过程时,此计划作业概念非常有用。