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文件用于创建一个Job类型的Pod。
-
Name:py → 这是我们使用的模板的名称,spec定义了模板。
-
name: py → 在容器规范下,我们给了一个名字为py,可以帮助标识要创建的Pod。
-
Image: python → 我们将要拉取的镜像,用于创建在Pod内运行的容器。
-
restartPolicy: Never → 给出了图像重启的条件为Never,这意味着如果容器被杀死或者为false,它将不会重新启动。
我们将使用以下命令使用保存有名称为 py.yaml 的yaml文件来创建Job。
$ kubectl create –f py.yaml
上述命令将创建一个作业。如果您想查看作业的状态,请使用以下命令。
$ kubectl describe jobs/py
上述命令将创建一个作业。如果您想检查作业的状态,请使用以下命令。
计划作业
Kubernetes中的计划作业使用 Cronetes ,它接收Kubernetes作业并在Kubernetes集群中启动它们。
- 计划作业将在指定的时间点运行一个Pod。
- 为此创建了一个模拟作业,它会自动调用自身。
注意 - 计划作业的功能支持版本1.4,并且通过传递 -runtime-config=batch/v2alpha1 来启动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命令,并列出容器内运行的所有进程。
当我们试图在特定时间点构建和运行一组任务,然后完成流程时,这个定时任务的概念非常有用。