作者:微信小助手
发布时间:2021-03-29T22:54:34
点击上方卡片关注公众号并设为星标🌟 即可及时获取K8S干货哟 Kubernetes jobs主要是针对短时和批量的工作负载。它是为了结束而运行的,而不是像deployment、replicasets、replication controllers和DaemonSets等其他对象那样持续运行。 本文将介绍如何创建Kubernetes jobs和cronjobs,以及一些小技巧。 Kubernetes Jobs会一直运行到Job中指定的任务完成。也就是说,如果pods给出退出代码0,那么Job就会退出。而在正常的Kubernetes中,无论退出代码是什么,deployment对象在终止或出现错误时都会创建新的pod,以保持deployment的理想状态。 在job运行过程中,如果托管pod的节点发生故障,Job pod将被自动重新安排到另一个节点。 Kubernetes Jobs用例 对于Kubernetes Jobs最好的用例实践是: 批处理任务:比如说你想每天运行一次批处理任务,或者在指定日程中运行。它可能是像从存储库或数据库中读取文件那样,将它们分配给一个服务来处理文件。 运维/ad-hoc任务:比如你想要运行一个脚本/代码,该脚本/代码会运行一个数据库清理活动,甚至备份一个Kubernetes集群。 如何创建Kubernetes Job 在本例中,我们将使用Ubuntu 容器来运行一个带有for循环的shell脚本,并根据你传递给容器的参数来呼应消息。这个参数是一个数字,决定shell脚本循环应该运行多少次。 例如,如果你传递了参数100,那么shell脚本将呼应消息100次然后容器将会退出。 你可以访问以下链接查看Dockerfile和shell脚本: https://github.com/devopscube/Kubernetes-jobs-example/tree/master/Docker 我们先从一个简单设置的job开始。 Step1:使用自定义的Docker镜像创建一个job.yaml文件,命令参数为100。100将会作为参数传递给docker ENTRYPOINT脚本。
</ul>
<pre class="code-snippet__js" data-lang="properties"><code><span class="code-snippet_outer"><span class="code-snippet__attr">apiVersion</span>: <span class="code-snippet__string">batch/v1 </span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">kind</span>: <span class="code-snippet__string">Job </span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">metadata</span>: <span class="code-snippet__string"></span></span></code><code><span class="code-snippet_outer"> <span class="code-snippet__attr">name</span>: <span class="code-snippet__string">kubernetes-job-example </span></span></code><code><span class="code-snippet_outer"> <span class="code-snippet__attr">labels</span>: <span class="code-snippet__string"></span></span></code><code><span class="code-snippet_outer"> <span class="code-snippet__attr">jobgroup</span>: <span class="code-snippet__string">jobexample </span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">spec</span>: <span class="code-snippet__string"></span></span></code><code><span class="code-snippet_outer"> <span class="code-snippet__attr">template</span>: <span class="code-snippet__string"></span></span></code><code><span class="code-snippet_outer