【Kubernetes系列】Workloads(工作负载)
概述
工作负载是在 Kubernetes 上运行的应用程序。
在 Kubernetes 中,无论你的负载是由单个组件还是由多个一同工作的组件构成, 你都可以在一组 Pod 中运行它。 在 Kubernetes 中,Pod 代表的是集群上处于运行状态的一组 容器 的集合。
Kubernetes Pod 遵循预定义的生命周期。 例如,当在你的集群中运行了某个 Pod,但是 Pod 所在的 节点 出现致命错误时, 所有该节点上的 Pod 的状态都会变成失败。Kubernetes 将这类失败视为最终状态: 即使该节点后来恢复正常运行,你也需要创建新的 Pod 以恢复应用。

工作负载资源
为了减轻用户的使用负担,通常不需要用户直接管理每个 Pod。 而是使用负载资源来替用户管理一组 Pod。 这些负载资源通过配置 控制器 来确保正确类型的、处于运行状态的 Pod 个数是正确的,与用户所指定的状态相一致。
Kubernetes 提供若干种内置的工作负载资源:
-
PodPod是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。
-
Deployment和ReplicaSet(替换原来的资源 ReplicationController)。Deployment很适合用来管理你的集群上的无状态应用,Deployment中的所有Pod都是相互等价的,并且在需要的时候被替换。 -
StatefulSet让你能够运行一个或者多个以某种方式跟踪应用状态的 Pod。例如,如果你的负载会将数据作持久存储,你可以运行一个
StatefulSet,将每个Pod与某个PersistentVolume对应起来。你在StatefulSet中各个Pod内运行的代码可以将数据复制到同一StatefulSet中的其它Pod中以提高整体的服务可靠性。 -
DaemonSet定义提供节点本地支撑设施的Pod。这些 Pod 可能对于你的集群的运维是 非常重要的,例如作为网络链接的辅助工具或者作为网络 插件 的一部分等等。每次你向集群中添加一个新节点时,如果该节点与某
DaemonSet的规约匹配,则控制平面会为该DaemonSet调度一个Pod到该新节点上运行。 -
Job和CronJob。定义一些一直运行到结束并停止的任务。
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协议进行许可。转载请署名作者且注明文章出处。
本文来自博客园,作者:Java技术债务,转载请注明原文链接:https://www.cnblogs.com/cuizb/p/17345933.html


浙公网安备 33010602011771号