前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >七、应用编排与管理:Job 和 DaemonSet

七、应用编排与管理:Job 和 DaemonSet

作者头像
Yuyy
发布2022-09-21 10:16:43
3840
发布2022-09-21 10:16:43
举报
文章被收录于专栏:yuyy.info技术专栏

Job

背景问题

  • 我们如何保证 Pod 内进程正确的结束?
  • 如何保证进程运行失败后重试?
  • 如何管理多个任务,且任务之间有依赖关系?
  • 如何并行地运行任务,并管理任务的队列大小?

Job:管理任务的控制器

  • Job 可以创建指定数量的 Pod ,并监控它是否成功地运行或终止
  • 可以根据 Pod 的状态来给 Job 设置重置的方式及重试的次数 为什么要根据 pod 的状态
  • 根据依赖关系,保证上一个任务运行完成之后再运行下一个任务
  • 控制任务的并行量

Job 语法

image-20220222170944663
image-20220222170944663
  • restartPolicy:重试策略
    • Never:不重试
    • OnFailure:失败的时候重试
    • Always:成功与否都重试
  • backoffLimit:重试次数限制
  • completions:job 运行总次数
  • parallelism:并发数

查看 Job 状态

命令:kubectl get job

image-20220222172912427
image-20220222172912427
  • duration:job运行时长
  • age:pod创建多久了

Cronjob 语法

image-20220222174649004
image-20220222174649004
  • startingDeadlineSeconds:job 等待启动的时间限制
  • concurrencyPolicy:是否允许并行运行
  • JobsHistoryLimit:每一次 CronJob 运行完之后,都会遗留上一个 Job 的运行历史、查看时间。这个参数就是对保留的历史信息的数量限制

Job Controller

image-20220222180119952
image-20220222180119952
  • check active pod:比较当前运行的 pod 和配置的并发数

DaemonSet

背景问题

  • 首先如果希望每个节点都运行同样一个 pod 怎么办?
  • 如果新节点加入集群的时候,想要立刻感知到它,然后去部署一个 pod,帮助我们初始化一些东西,这个需求如何做?
  • 如果有节点退出的时候,希望对应的 pod 会被删除掉,应该怎么操作?
  • 如果 pod 状态异常的时候,我们需要及时地监控这个节点异常,然后做一些监控或者汇报的一些动作,那么这些东西运用什么控制器来做?

DaemonSet:守护进程控制器

  • 保证集群内的每一个节点都运行一组相同的 pod;
  • 同时还能根据节点的状态保证新加入的节点自动创建对应的 pod;
  • 在移除节点的时候,能删除对应的 pod;
  • 而且它会跟踪每个 pod 的状态,当这个 pod 出现异常、Crash(崩溃) 掉了,会及时地去 recovery 这个状态。

编排文件

image-20220222181455867
image-20220222181455867
  • 和 deployment 差不多,类型不一样罢了

使用场景

  • 存储,GlusterFS 或者 Ceph 之类的东西,需要每台节点上都运行一个类似于 Agent 的东西
  • 日志收集,比如说 logstash 或者 fluentd
  • 监控,每个节点被监控的数据需要往 Promethues 里存

查看 DaemonSet 状态

kubectl get DaemonSet(DaemonSet 可缩写为 ds)

image-20220222182041424
image-20220222182041424
  • desired:需要的 pod 个数
  • up-to-date:最新创建的个数
  • NODE SELECTOR:在 DaemonSet 里面非常有用。有时候我们可能希望只有部分节点去运行这个 pod 而不是所有的节点,所以有些节点上被打了标签的话,DaemonSet 就只运行在这些节点上。

更新 DaemonSet

更新策略
  • RollingUpdate:滚动更新
  • OnDelete:pod 被删除后才会被更新,不会主动中断

DaemonSet Controller

image-20220222182852802
image-20220222182852802
  • 监听 node 事件

其他

  • 前面提到的 yaml 文件,应该称为编排文件
  • 查看 pod 日志:kubectl logs pod <podname>
  • CronJob 主要是用来运作一些清理任务或者说执行一些定时任务,比如说 Jenkins 构建
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-2-22 1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Job
    • 背景问题
      • Job:管理任务的控制器
        • Job 语法
          • 查看 Job 状态
            • Cronjob 语法
              • Job Controller
              • DaemonSet
                • 背景问题
                  • DaemonSet:守护进程控制器
                    • 编排文件
                      • 使用场景
                        • 查看 DaemonSet 状态
                          • 更新 DaemonSet
                            • 更新策略
                          • DaemonSet Controller
                          • 其他
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档