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 → 我们已将类型定义为 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 命令并列出容器内所有正在运行的进程。
当我们尝试在指定时间点构建和运行一组任务完成该过程时,此计划作业概念很有用。