Kubernetes 中任务调度与服务管理全解析
1. 可完成任务的 Pod 运行
在 Kubernetes 里,之前讨论的 Pod 大多需要持续运行,但也存在仅执行一次且完成后即终止的任务场景。ReplicationControllers、ReplicaSets 和 DaemonSets 运行的是永不会被视为完成的连续任务,这类 Pod 中的进程退出时会被重启;而可完成任务的 Pod,其进程终止后不应再重启。
1.1 Job 资源介绍
Kubernetes 通过 Job 资源支持此类任务。Job 与本章讨论的其他资源类似,但它允许运行一个容器,当容器内进程成功完成时不会重启,一旦完成,该 Pod 即被视为完成。
在节点故障时,由 Job 管理的该节点上的 Pod 会像 ReplicaSet 的 Pod 一样被重新调度到其他节点。若进程本身失败(进程返回错误退出码),Job 可配置为重启容器或不重启。
例如,对于临时任务,Job 非常有用。若在非托管 Pod 中运行任务,在节点故障或 Pod 被驱逐时,需手动重新创建,这显然不合理,尤其是任务需要数小时才能完成时。
下面是一个示例,模拟处理存储的数据并进行转换和导出,运行基于 busybox 镜像构建的容器镜像,该镜像调用 sleep 命令两分钟:
# 这里只是示意调用 sleep 命令的容器镜像逻辑,实际构建可参考相关代码
# 已经构建并推送到 Docker Hub 的镜像为 luksa/batch-job
超级会员免费看
订阅专栏 解锁全文
2403

被折叠的 条评论
为什么被折叠?



