Kubernetes控制器中DaemonSet与Job的使用教程

 更新时间:2023年08月14日 11:42:05   作者:征服bug  
这篇文章主要介绍了Kubernetes控制器中DaemonSet与Job的使用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

DaemonSet

1 什么是 DaemonSet

DaemonSet | Kubernetes

DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本。 当有节点加入集群时, 也会为他们新增一个 Pod 。 当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。

DaemonSet 的一些典型用法:

  • 在每个节点上运行集群守护进程
  • 在每个节点上运行日志收集守护进程
  • 在每个节点上运行监控守护进程

一种简单的用法是为每种类型的守护进程在所有的节点上都启动一个 DaemonSet。 一个稍微复杂的用法是为同一种守护进程部署多个 DaemonSet;每个具有不同的标志, 并且对不同硬件类型具有不同的内存、CPU 要求。

2 使用 DaemonSet

apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.19
        imagePullPolicy: IfNotPresent
        name: nginx
        resources: {}
      restartPolicy: Always

Job

1 什么是 Job

Job | Kubernetes

Job 会创建一个或者多个 Pod,并将继续重试 Pod 的执行,直到指定数量的 Pod 成功终止。 随着 Pod 成功结束,Job 跟踪记录成功完成的 Pod 个数。 当数量达到指定的成功个数阈值时,任务(即 Job)结束。 删除 Job 的操作会清除所创建的全部 Pod。 挂起 Job 的操作会删除 Job 的所有活跃 Pod,直到 Job 被再次恢复执行。

一种简单的使用场景下,你会创建一个 Job 对象以便以一种可靠的方式运行某 Pod 直到完成。 当第一个 Pod 失败或者被删除(比如因为节点硬件失效或者重启)时,Job 对象会启动一个新的 Pod。

你也可以使用 Job 以并行的方式运行多个 Pod。

2 使用 Job

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  template:
    spec:
      containers:
      - name: pi
        image: perl:5.34.0
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never
  # 当前任务出现失败 最大的重试次数
  backoffLimit: 4

3 自动清理完成的 Job

完成的 Job 通常不需要留存在系统中。在系统中一直保留它们会给 API 服务器带来额外的压力。 如果 Job 由某种更高级别的控制器来管理,例如 CronJob, 则 Job 可以被 CronJob 基于特定的根据容量裁定的清理策略清理掉。

  • 已完成 Job 的 TTL 机制

自动清理已完成 Job (状态为 Complete Failed )的另一种方式是使用由 TTL 控制器所提供的 TTL 机制。 通过设置 Job 的 .spec.ttlSecondsAfterFinished 字段,可以让该控制器清理掉已结束的资源。TTL 控制器清理 Job 时,会级联式地删除 Job 对象。 换言之,它会删除所有依赖的对象,包括 Pod 及 Job 本身。 注意,当 Job 被删除时,系统会考虑其生命周期保障,例如其 Finalizers。

apiVersion: batch/v1
kind: Job
metadata:
  name: pi-with-ttl
spec:
  ttlSecondsAfterFinished: 100
  template:
    spec:
      containers:
      - name: pi
        image: perl:5.34.0
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never

Job pi-with-ttl 在结束 100 秒之后,可以成为被自动删除的对象。如果该字段设置为 0 ,Job 在结束之后立即成为可被自动删除的对象。 如果该字段没有设置,Job 不会在结束之后被 TTL 控制器自动清除。

控制器无法解决问题

  • 如何为 Pod 提供网络服务
  • 如何实现多个 Pod 间负载均衡

到此这篇关于Kubernetes控制器中DaemonSet与Job的使用的文章就介绍到这了,更多相关Kubernetes控制器DaemonSet与Job使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • K8S部署lnmp项目全过程

    K8S部署lnmp项目全过程

    这篇文章主要介绍了K8S部署lnmp项目全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Kubernetes组件和架构简介

    Kubernetes组件和架构简介

    Kubernetes是google开源的容器编排工具,本质是一组服务器集群,在集群的各个节点上运行程序来进行容器进行管理,最终实现资源管理智能化、自动化,这篇文章主要介绍了Kubernetes组件和架构简介,需要的朋友可以参考下
    2023-09-09
  • 云原生Kubernetes初始化容器Init使用教程

    云原生Kubernetes初始化容器Init使用教程

    这篇文章主要为大家介绍了云原生Kubernetes初始化容器Init使用教程,有需要的朋友可以借鉴参考下,希望能够有所帮助祝大家多多进步早日升职加薪
    2022-03-03
  • 关于Rancher部署并导入K8S集群的问题

    关于Rancher部署并导入K8S集群的问题

    这篇文章主要介绍了关于Rancher部署并导入K8S集群的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • kubernetes需要默认的serviceaccount的原因解析

    kubernetes需要默认的serviceaccount的原因解析

    这篇文章主要介绍了kubernetes为何需要默认的serviceaccount,ServiceAccount 是 Kubernetes 中的一种重要概念,它的实际使用场景包括很多,本文给大家讲解的非常详细,需要的朋友可以参考下
    2023-04-04
  • Rainbond自动部署初始化Schema的数据库步骤教程

    Rainbond自动部署初始化Schema的数据库步骤教程

    这篇文章主要为大家介绍了Rainbond自动部署初始化Schema的数据库过程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • K8s解决主机重启后kubelet无法自动启动问题(推荐)

    K8s解决主机重启后kubelet无法自动启动问题(推荐)

    在安装配置好Kubernetes后,正常情况下服务器关机重启,kubelet也会自动启动的,如何解决这个问题呢,下面小编给大家带来了K8s解决主机重启后kubelet无法自动启动问题,感兴趣的朋友一起看看吧
    2022-08-08
  • 在K8S中实现会话保持的两种方案

    在K8S中实现会话保持的两种方案

    这篇文章主要介绍了在K8S中实现会话保持的两种方案,每种方案结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • Jenkins打包、发布、部署完整骤记录

    Jenkins打包、发布、部署完整骤记录

    这篇文章主要介绍了Jenkins的基本概念,服务器环境检查,以及如何安装和配置Jenkins,包括安装FTP服务、Maven、Git和Jenkins本身,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03
  • Rancher部署配置开源Rainbond云原生应用管理平台

    Rancher部署配置开源Rainbond云原生应用管理平台

    这篇文章主要为大家介绍了Rancher部署配置开源Rainbond云原生应用管理平台,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04

最新评论