我看到KubernetesJob
&Deployment
提供非常相似的配置。两者都可以使用特定配置部署一个或多个pod。所以我有一些关于这些的查询:
- 吊舱规格
.spec.template
与Job
不同吗?Deployment
? Job
和completions
有什么区别?Deployment
的replicas
?- 如果命令在
Deployment
的唯一容器中运行并完成(没有服务器或守护进程容器),则pod将终止。这同样适用于Job
。那么两种资源中的豆荚生命周期有什么不同呢?
Kubernetes中的许多资源都使用Pod模板。Deployments
和Jobs
都使用它,因为它们管理pod。
工作负载资源的控制器从pod模板创建pod并代表您管理这些pod。
PodTemplates是创建pod的规范,包含在工作负载资源中,如部署、作业和DaemonSets。
Deployments
和Jobs
的主要区别在于它们如何处理被终止的Pod。部署的目的是成为一个"服务",例如,它应该是启动和运行的,所以它将尝试重新启动它管理的pod,以匹配所需的副本数量。当一个作业打算执行并成功终止时。
关于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/。部署中的副本不提供此功能。
在部署中,Pod的默认restartPolicy设置为Always。在工作中:从不。作业并不意味着要在容器退出后重新启动它。部署并不意味着退出。