作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客
本文网址:https://blog.csdn.net/HiWangWenBing/article/details/122795902
目录
前言:
第1章 什么是工作负载(work load)
1.1 官方链接
1.2 什么是工作负载(workloads)
1.3 工作负载的作用
第2章 工作负载的种类
2.1 K8S内置的工作负载资源
2.2 自定义负载资源
第3章 工作负载资源的重要特征
前言:
pods是强耦合关系的容器的集合,也是K8S管理微服务的最基本的单元。pods只能在管理自身,当系统有大量pods时,特别同一个pod有多分实例时,无法实现多pods的统筹管理,为此,K8S在pods的基础之上,对服务资源进行了进一步的抽象,抽象为负载workloads。
第1章 什么是工作负载(work load) 1.1 官方链接
工作负载 | Kuberneteshttps://kubernetes.io/zh/docs/concepts/workloads/
1.2 什么是工作负载(workloads)
在 Kubernetes 中,Pod 代表的是集群上处于运行状态的一组 容器。
而工作负载是在 Kubernetes 上运行的应用程序,是一组相关pods的集合。可以是功能pods实例的重复,也可以是不同pods的组合。它能够动态管理某一个workloads下的所有的pods的状态。
1.3 工作负载的作用
Kubernetes Pods 有确定的生命周期。 例如,当某 Pod 在你的集群中运行时,Pod 运行所在的 节点 出现致命错误时, 所有该节点上的 Pods 都会失败。Kubernetes 将这类失败视为最终状态: 即使该节点后来恢复正常运行,你也需要创建新的 Pod 来恢复应用。
不过,为了让用户的日子略微好过一些,为了不需要人工监控和管理每个 Pod。 K8S引入了负载资源 (workloads resource)来帮助或替代用户管理一组Pods。 这些负载资源,能够任劳任怨地实时监控和管理指派给它的pods,并能够确保合适类型的、处于运行状态的 Pod 的个数是正确的,其状态与你所期望的是相一致,如果出现异常,它会自动修复异常。
第2章 工作负载的种类 2.1 K8S内置的工作负载资源
由于应用程序千差万别,不同的应用程序有不同的运行时的特性,为此,K8S对应用程序的特性就行了总结与抽象,抽象出如下几种类型的负载,不同类型的负载,其监控、管理、运行、恢复的方式有所不同。Kubernetes 提供若干种内置的工作负载资源:
Deployment 和 ReplicaSet (替换原来的资源 ReplicationController)。 Deployment 很适合用来管理你的集群上的无状态应用,Deployment 中的所有 Pod 都是相互等价的,并且在需要的时候可以随时被换掉。StatefulSet 让你能够运行一个或者多个以某种方式跟踪应用状态的 Pods。 例如,如果你的负载会将数据作持久存储,你可以运行一个 StatefulSet,将每个 Pod 与某个 PersistentVolume 对应起来。你在 StatefulSet 中各个 Pod 内运行的代码可以将数据复制到同一 StatefulSet 中的其它 Pod 中以提高整体的服务可靠性。
DaemonSet 定义提供节点本地支撑设施的 Pods。这些 Pods 可能对于你的集群的运维是 非常重要的,例如作为网络链接的辅助工具或者作为网络 插件 的一部分等等。每次你向集群中添加一个新节点时,如果该节点与某 DaemonSet 的规约匹配,则控制面会为该 DaemonSet 调度一个 Pod 到该新节点上运行。Job 和 CronJob。 定义一些一直运行到结束并停止的任务。Job 用来表达的是一次性的任务,而 CronJob 会根据其时间规划反复运行。
2.2 自定义负载资源
在庞大的 Kubernetes 生态系统中,应用程序的种类非常庞大,你还可以找到一些提供额外操作的第三方 工作负载资源。通过使用 定制资源定义(CRD), 你可以添加第三方工作负载资源,以完成原本不是 Kubernetes 核心功能的工作。 例如,如果你希望运行一组 Pods,但要求所有 Pods 都可用时才执行操作 (比如针对某种高吞吐量的分布式任务),你可以实现一个能够满足这一需求 的扩展,并将其安装到集群中运行。
K8S提供了自定义资源CRD的机制,给用户自己定义所需要资源特性。
第3章 工作负载资源的重要特征
正是因为工作负载资源的出现,才是的K8S具备了集群管理的很多特性,或者说集群管理的很多重要特性才得以实现与落地。这些特性包括:
(1)多副本能力
同一个pods,可是生成多个副本实例,不同的副本可以运行在不同的节点上。
(2)动态的扩容与缩容能力
根据根据需要,增加或减少pods的副本数量,不同的副本部署在不同的节点上。
(3)故障发生后服务的自愈能力
支持容器故障后自动重启、健康状态检查失败后关闭容器并重新创建等自我修复机制。
(4)故障发生后服务的自动迁移的能力
节点故障后重新调度容器到其他可用节点。工作负载具备了简单的调度功能。
(5)滚动更新的能力
Kubernetes支持“灰度”更新应用程序或其配置信息,它会监控更新过程中应用程序的健康状态,以确保不会在同一时刻杀掉所有实例,而此过程中一旦有故障发生,它会立即自动执行回滚操作。
(6)版本自动回退的能力
(7)垃圾收集机制/能力
负责在 对象的 属主资源 被删除时在集群中清理这些对象。
(8)Time-to-Live 控制器
负责在 Job 结束之后的指定时间间隔之后删除它们。
上述的能力,都是由工作负载来实现与实施的。工作负载在K8S中占据着重要的位置。
如下是dashboard的工作负载的界面:
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客
本文网址:https://blog.csdn.net/HiWangWenBing/article/details/122795902