Kubernetes 作业和部署之间有什么区别

What is difference between Kubernetes Jobs & Deployments

我看到 Kubernetes JobDeployment 提供了非常相似的配置。两者都可以部署一个或多个 pods 具有一定的配置。所以我对这些问题几乎没有疑问:

关于 spec.template:Job 和 Deployment 都包含类似的定义。参见:https://v1-21.docs.kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/#podtemplate-v1-core

作业完成和并行性让您可以将任务拆分为子任务。参见 https://kubernetes.io/docs/concepts/workloads/controllers/job/#parallel-jobs , https://kubernetes.io/docs/tasks/job/indexed-parallel-processing-static/。部署中的副本不会提供此功能。

在 Deployment 中,Pod 的默认 restartPolicy 设置为 Always。在工作中:从不。作业并不意味着一旦容器退出就重新启动它。部署并不意味着退出。

Kubernetes 中的许多资源使用 Pod templateDeploymentsJobs 都使用它,因为他们管理 Pods.

Controllers for workload resources create Pods from a pod template and manage those Pods on your behalf.

PodTemplates are specifications for creating Pods, and are included in workload resources such as Deployments, Jobs, and DaemonSets.

DeploymentsJobs 之间的主要区别在于它们如何处理终止的 Pod。 Deployment 旨在成为“服务”,例如它应该是 up-and-运行,因此它将尝试重新启动它管理的 Pods,以匹配所需的副本数。虽然作业旨在执行并成功终止。