[云原生专题-31]:K8S - 核心概念 - 大规模pods编排工具:工作负载(workloads)资源及其八大特性

网友投稿 276 2022-11-03

[云原生专题-31]:K8S - 核心概念 - 大规模pods编排工具:工作负载(workloads)资源及其八大特性

作者主页(​​文火冰糖的硅基工坊​​​):​​文火冰糖(王文兵)的博客_文火冰糖的硅基工坊​

​目录​

​​前言:​​

​​第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 官方链接

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的工作负载的界面:

作者主页(​​文火冰糖的硅基工坊​​​):​​文火冰糖(王文兵)的博客_文火冰糖的硅基工坊​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:上位机的工作原理_上位机编程用什么软件
下一篇:详解Java 二叉树的实现和遍历
相关文章

 发表评论

暂时没有评论,来抢沙发吧~