Kubernetes(k8s) 作业(Jobs)

作业(Jobs) 的主要功能是创建一个或多个 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。
  • Image:python → 我们将要提取的图像以创建将在 pod 内运行的容器。
  • restartPolicy:Never →这个镜像重启的条件是never,这意味着如果容器被杀死或者如果它是假的,那么它不会重新启动自己。

我们将使用以下命令和 yaml 创建作业,该 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

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

  • schedule:h/30 * * * * ? → 安排作业每 30 分钟运行一次。
  • /bin/sh**:这将进入带有/bin/sh的容器
  • ps –eaf →** 将在机器上运行 ps -eaf 命令并列出容器内所有正在运行的进程。

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

查看笔记

扫码一下
查看教程更方便