Kubernetes 中批量任务处理与存活探针的使用
1. 批量任务处理的场景与选择
在处理批量工作时,我们有不同的选择。如果需要一个持续运行的任务队列,Deployment 是合适的 Kubernetes 对象;但如果要处理有限的批量工作,Job 则是理想之选。
Job 有一个重要特性,即允许单个工作节点在工作完成时发出信号。在动态的 Kubernetes 环境(如具有自动缩放功能的环境)中,Job 可以让我们“设置后就不用管”,工作完成后资源消耗降为零。不过,Job 完成后不能再次扩大规模,但可以删除并重新创建。
2. 使用 Job 进行动态队列处理
2.1 动态队列处理的原理
将之前使用 Deployment 的动态队列重新设计为使用 Job。Deployment 和 Job 都允许创建多个 Pod 工作节点,并且在失败时都会重新创建 Pod。但 Deployment 没有 Pod“完成”的概念,它会始终保持指定的副本数量运行;而 Job 管理的 Pod 以成功退出码(如 exit 0)终止时,会向 Job 控制器表明工作已成功完成,Pod 不会重启。
2.2 代码实现与配置
为了让任务工作容器在 Job 环境中正常工作,需要添加队列清空时的成功退出条件。以下是修改后的工作代码:
import os
import signal
import redis
from pi import *
redis_host = os.environ.get('REDIS_HOST')
assert redis_hos
超级会员免费看
订阅专栏 解锁全文
26

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



