应用编排与管理:Job和DaemonSet

本文详细介绍了Kubernetes中Job和DaemonSet的功能与使用方法。包括如何通过Job管理任务进程,实现任务的正确结束、重试及并行运行;以及DaemonSet如何确保集群每个节点运行指定Pod,实现节点变更时的自动部署与Pod状态恢复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求来源

Job背景问题

  • 可以通过Pod直接运行任务进程吗?
    • 如何保证Pod内进程正确的结束?
    • 如果进程运行失败,如何重试?
    • 如何管理多个相互有依赖的任务?
    • 如何并行运行任务并管理他们的队列大小?

Job:管理任务的控制器

  1. 创建一个或多个Pod确保指定数量的Pod可以成功地运行终止
  2. 跟踪Pod状态,根据配置及时重试失败的Pod
  3. 确定依赖关系,保证上一个任务运行完毕再运行下一个任务
  4. 控制任务并行度,并根据配置确保Pod队列大小

用例解读

Job语法

  • restartPolicy:重试策略。OnFailure,always,Never
  • backoffLimit:重启次数限制

查看Job状态

查看Pod

 并行运行Job

  • completions: 代表本pod队列执行次数,8表示这个任务会被执行8次
  • parallelism:代表并行执行个数,2代表两个pod同时运行

  • pod age表明每次job同时创建了两个pod
  • 本job一共运行了四个批次,一共运行8个pod

CronJob语法

  • schedule:crontab时间格式相同
  • startingDeadlineSeconds:Job最长启动时间
  • concurrencyPolicy:是否允许并行运行
  • successfulJobsHistoryLimit:允许留存历史job个数

架构设计

管理模式

  1. Job controller负责根据配置创建Pod
  2. Job Controller跟踪Job状态,根据配置及时重试Pod或者继续创建
  3. Job Controller会自动添加label来跟踪对应的pod,并根据配置并行或者串行创建Pod

Job控制器

 DaemonSet背景问题

  • 可以让每个集群内的节点都运行一个相同的Pod吗?
    • 如何保证每个节点都运行一个pod?
    • 如果新节点加入集群,如何感知并部署相应的Pod?
    • 如果由节点推出,如何删除对应的Pod?
    • 如果Pod状态异常,如何监控并恢复Pod的状态?

DaemonSet:守护进程控制器

DaemonSet能做什么?

  • 保证集群内每一个(或者一些)节点都运行一组相同的Pod
  • 跟踪集群节点状态,保证新加入的节点自动创建对应的Pod
  • 跟踪集群节点状态,保证移除的节点删除对应的Pod
  • 跟踪Pod状态,保证每个节点Pod处于运行状态

用例解读

DaemonSet语法

适用场景:

  • 集群存储进程:glusterd,ceph
  • 日志收集进程:fluentd,logstash
  • 需要在每个节点运行的监控收集器

 查看DaemonSet状态

更新DaemonSet

架构设计

管理模式

  1. DaemonSet Controller负责根据配置创建Pod
  2. DaemonSet Controller跟踪Job状态,根据配置及时重试Pod或者继续创建
  3. DaemonSet Controller会自动添加affinity&label来跟踪对应的pod,并根据配置在哥哥节点或者适合的部分节点创建Pod

DaemonSet控制器

DaemonSet会watch node的状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值