Pod和Job资源相同吗?
apiVersion: v1
kind: Pod
metadata:
name: ""
labels:
或
apiVersion: v1
kind: Job
metadata:
name: ""
labels:
我认为Job
仍会创建一个广告连播。只是想知道何时使用一个而不是另一个。
答案 0 :(得分:5)
Pod是在Kubernetes上表达可运行过程的基本单元。
Job是更高级别的抽象,它使用pod来运行可完成的任务。
您可能正在考虑使用带有restartPolicy: Never
的广告连播来运行可完成的任务。但是,如果发生节点故障,则由Job管理的该节点上的pod会被重新安排到其他节点,而不受管理的pod不会被安排。
Job还具有completions
和parallelism
之类的额外功能,可以使用它们运行多个实例。
答案 1 :(得分:1)
如果任务将完成,请使用Jobs(例如,将π计算为2000个位置并将其打印出来)。
在后台,乔布斯使用Pods进行计算。想象Job比Pods具有更高的抽象层次。
https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
答案 2 :(得分:0)
作为容器协调器,K8S用称为Pod的工作单元包装容器。
所有其他资源和组件(不包括Kubelet)都是K8S模块化体系结构的一部分,旨在为Pod提供不同的功能,例如:调度,扩展,内部和外部网络,处理故障,管理cpu和内存等
(*)Kubelet是与容器运行时交互的唯一组件。
您可以说Pod将一个或多个容器包装在其下,就像VM中正在运行多个进程一样。如果要从外部访问其中之一,则必须引用主机的IP和进程的端口(容器)。
(*)如果有点高级-只需查看下面的yaml示例,然后跳到下一部分。
Job资源是一组资源的一部分,该资源负责直接引用Pod的状态(请参阅最后对 的评论)。
因此,与ReplicaSet / Deployments,StatefulSet和CronJob等其他资源一起,它们具有专用的Controller,它们在控制平面中无限循环地运行,并监视对由相应资源类型创建的Pod的更改强>。
因此,如果pod是由Job资源创建的,则:
apiVersion: batch/v1
kind: Job
metadata:
name: my-computational-job
spec:
template:
metadata:
labels:
name: my-computational-job
spec:
containers:
- name: my-image
image: some-image
restartPolicy: Never #<---- We will discuss this below
适用于此类型资源的每项更改都将由Job控制器检查,该控制器查看资源的新期望状态(或换句话说,Pods为新状态)并确定当前状态是什么需要执行的操作-告诉K8S删除先前的Pod并创建新的Pod(例如在更改图像或标签选择器的情况下),或保持Pod的当前状态并仅更改与之相关的其他配置他们。
那么,这种资源有什么特别之处?
我们看到,像其他资源一样,它通过相应的Controller管理Pods状态。
这里的重点是如何配置这些Pod?
也可以称为:
我应该使用哪种类型的应用程序使用此资源?
答案是:需要执行专门任务并随后终止的应用程序。。
为此,作业资源应支持与以下类型任务相关的配置:
1)重新启动策略-如果我们查看上面yaml中的restartPolicy
字段-我们可以指定诸如onFailure
和Never
之类的值,但不能指定{{1} },因为它将与应使用此资源运行的任务类型相反。
在here中了解更多信息。
2)顺序或并行运行多个Pod-就像我们在“副本集/部署”规范中有Always
字段,该字段将指定K8S应缩放的Pod一样,Job资源具有不同的语法,还告诉K8S如何运行这些吊舱。
要运行多个作业,您需要在replicas
字段中指定窗格的数量。这些作业默认情况下将一一运行。
为了并行运行它们,您需要在.spec.completions
字段中指定要并行运行的pod数。
“作业”资源支持更多高级配置选项-请在Parallel execution for Jobs中阅读更多内容。
3)失败政策-如果在多次重试后我们需要使Job失败,则可以设置.spec.parallelism
字段。
在here中了解更多。
更多参考:
并行计算的模式-参见Job Patterns。
基于一个通用模板运行多个作业-请参见Parallel Processing using Expansions。
“作业-从控制器端”部分的评论:
很难说资源直接负责 的状态,因为在K8S中,体系结构的每个部分都具有特定的模块化作用-但是对于控制器而言,它离这一点不远因为他们安静很多。