• 【Kubernetes系列】Workloads(工作负载)


    概述

    工作负载是在 Kubernetes 上运行的应用程序。

    在 Kubernetes 中,无论你的负载是由单个组件还是由多个一同工作的组件构成, 你都可以在一组 Pod 中运行它。 在 Kubernetes 中,Pod 代表的是集群上处于运行状态的一组 容器 的集合

    Kubernetes Pod 遵循预定义的生命周期。 例如,当在你的集群中运行了某个 Pod,但是 Pod 所在的 节点 出现致命错误时, 所有该节点上的 Pod 的状态都会变成失败。Kubernetes 将这类失败视为最终状态: 即使该节点后来恢复正常运行,你也需要创建新的 Pod 以恢复应用。

    【Kubernetes系列】Workloads(工作负载)-  Java技术债务

    工作负载资源

    为了减轻用户的使用负担,通常不需要用户直接管理每个 Pod。 而是使用负载资源来替用户管理一组 Pod。 这些负载资源通过配置 控制器 来确保正确类型的、处于运行状态的 Pod 个数是正确的,与用户所指定的状态相一致。

    Kubernetes 提供若干种内置的工作负载资源:

    • Pod

      Pod是Kubernetes创建或部署的最小单位。一个Pod封装一个或多个容器(container)、存储资源(volume)、一个独立的网络IP以及管理控制容器运行方式的策略选项。

      Pod使用主要分为两种方式:

      • Pod中运行一个容器。这是Kubernetes最常见的用法,您可以将Pod视为单个封装的容器,但是Kubernetes是直接管理Pod而不是容器。
      • Pod中运行多个需要耦合在一起工作、需要共享资源的容器。通常这种场景下应用包含一个主容器和几个辅助容器(SideCar Container),如图1所示,例如主容器为一个web服务器,从一个固定目录下对外提供文件服务,而辅助容器周期性的从外部下载文件存到这个固定目录下。

      实际使用中很少直接创建Pod,而是使用Kubernetes中称为Controller的抽象层来管理Pod实例,例如Deployment和Job。Controller可以创建和管理多个Pod,提供副本管理、滚动升级和自愈能力。通常,Controller会使用Pod Template来创建相应的Pod。

    • DeploymentReplicaSet (替换原来的资源 ReplicationController)。

      Deployment 很适合用来管理你的集群上的无状态应用,Deployment 中的所有 Pod 都是相互等价的,并且在需要的时候被替换。

    • StatefulSet 让你能够运行一个或者多个以某种方式跟踪应用状态的 Pod。

      例如,如果你的负载会将数据作持久存储,你可以运行一个 StatefulSet,将每个 Pod 与某个 PersistentVolume 对应起来。你在 StatefulSet 中各个 Pod 内运行的代码可以将数据复制到同一 StatefulSet 中的其它 Pod 中以提高整体的服务可靠性。

    • DaemonSet 定义提供节点本地支撑设施的 Pod

      这些 Pod 可能对于你的集群的运维是 非常重要的,例如作为网络链接的辅助工具或者作为网络 插件 的一部分等等。每次你向集群中添加一个新节点时,如果该节点与某 DaemonSet 的规约匹配,则控制平面会为该 DaemonSet 调度一个 Pod 到该新节点上运行。

    • JobCronJob

      定义一些一直运行到结束并停止的任务。Job 用来执行一次性任务,而 CronJob 用来执行的根据时间规划反复运行的任务。

    在庞大的 Kubernetes 生态系统中,你还可以找到一些提供额外操作的第三方工作负载相关的资源。 通过使用定制资源定义(CRD), 你可以添加第三方工作负载资源,以完成原本不是 Kubernetes 核心功能的工作。 例如,如果你希望运行一组 Pod,但要求所有 Pod 都可用时才执行操作 (比如针对某种高吞吐量的分布式任务),你可以基于定制资源实现一个能够满足这一需求的扩展, 并将其安装到集群中运行。

    工作负载生命周期

    状态说明
    运行中所有实例都处于运行中才是运行中。
    未就绪容器处于异常、实例数为0或pending状态时显示此状态。
    升级/回滚中触发升级或回滚动作后,工作负载会处于升级/回滚中。
    可用当多实例无状态工作负载运行过程中部分实例异常,可用实例不为0,工作负载会处于可用状态。
    执行完成任务执行完成,仅普通任务存在该状态。
    已停止触发停止操作后,工作负载会处于停止状态,实例数变为0。v1.13之前的版本存在此状态。
    删除中触发删除操作后,工作负载会处于删除中状态。
    暂停中触发暂停操作后,工作负载会处于暂停中状态。

    欢迎拜访

    本文作者:Java技术债务
    原文链接:https://cuizb.top/myblog/article/1667745322
    版权声明: 本博客所有文章除特别声明外,均采用 CC BY 3.0 CN协议进行许可。转载请署名作者且注明文章出处。


  • 相关阅读:
    用__LINE__和函数内无名enum推算常量,用于定义固定长度数组
    springboot实现支付宝支付功能
    ISIS的基本概念
    符尧:别卷大模型训练了,来卷数据吧!【干货十足】
    MySQL数据库管理
    numpy学习
    win10系统怎样分区,win10固态硬盘怎么分区
    杰理之列播内置 flash 提示音控制播放暂停处理方法【篇】
    《中国综合算力评价白皮书(2023年)》 中国算力TOP10省份出炉
    低代码平台是什么意思?低代码平台如何设计与实现?
  • 原文地址:https://blog.csdn.net/qq_40124555/article/details/127722676