【问题标题】:What is difference between Kubernetes Jobs & DeploymentsKubernetes 作业和部署之间有什么区别
【发布时间】:2021-10-24 15:24:53
【问题描述】:

我看到 Kubernetes Job & Deployment 提供了非常相似的配置。两者都可以部署一个或多个具有特定配置的 Pod。所以我对这些有一些疑问:

  • .spec.templateJobDeployment 的 pod 规范是否不同?
  • JobcompletionsDeploymentreplicas有什么区别?
  • 如果命令在Deployment 的唯一容器中运行并完成(没有服务器或守护进程容器),则 pod 将终止。这同样适用于Job。那么这两种资源的 pod 生命周期有何不同?

【问题讨论】:

  • 简单地说:部署用于预期会持续运行的服务。认为网络服务器、数据库等。作业/cronjobs 用于完成后要运行和退出的任务。想想:数据库备份等。

标签: kubernetes kubernetes-deployment kubernetes-jobs


【解决方案1】:

关于 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-jobshttps://kubernetes.io/docs/tasks/job/indexed-parallel-processing-static/。 Deployment 中的副本不会提供此功能。

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

【讨论】:

    【解决方案2】:

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

    工作负载资源的控制器从 Pod 模板创建 Pod 并代表您管理这些 Pod。

    PodTemplates 是创建 Pod 的规范,包含在部署、作业和 DaemonSet 等工作负载资源中。

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

    【讨论】:

      猜你喜欢
      • 2017-05-10
      • 1970-01-01
      • 2018-09-29
      • 1970-01-01
      • 2023-03-13
      • 2019-04-15
      • 2014-10-24
      • 2019-03-05
      • 1970-01-01
      相关资源
      最近更新 更多