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

2023-11-09

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 使用 zeppelin 在 kubernetes 上 Spark

    我按照本指南在使用 minikube 设置的本地 kubernetes 集群中运行 zeppelin 容器 https zeppelin apache org docs 0 9 0 SNAPSHOT quickstart kubernete
  • Kubernetes - 向 kube dns 中的匿名用户授予 RBAC 访问权限

    我有一个带有主节点和工作节点的 Kubernetes 集群设置 Kubectl cluster info 显示 kubernetes master 以及 kube dns 成功运行 我正在尝试访问下面的 URL 因为它是我的组织内部的 所以
  • 一个持久卷是否可以被多个持久卷声明消耗?

    假设一个 PV 可以被多个 PVC 消耗并且每个 pod 实例需要一个 PVC 绑定 这样的假设是否正确 我这么问是因为我创建了一个 PV 然后创建了一个具有不同尺寸要求的 PVC 例如 kind PersistentVolume apiV
  • Kubernetes ConfigMap 大小限制

    Though resourceQuotas可能会限制命名空间中的配置映射的数量 是否有任何这样的选项来限制单个配置映射的大小 我不喜欢某些用户开始上传大型文本文件作为配置映射 ConfigMap etcd 支持的最大大小是多少 如果 etc
  • Kubernetes 1.8 支持的 Docker 版本

    我要将我的 Kubernetes 集群升级到该版本1 8 7 有谁知道哪个 docker 版本与其最兼容 这是我在 Kubernetes 官方页面上找到的 但我想它可能是针对最新的 k8s 版本的 1 9 在每台计算机上安装 Docker
  • Kubernetes Pod 已终止 - 退出代码 137

    我需要一些关于 k8s 1 14 和在其上运行 gitlab 管道所面临的问题的建议 许多作业都会抛出退出代码 137 错误 我发现这意味着容器突然终止 集群信息 库伯内特版本 1 14 使用的云 AWS EKS 节点 C5 4xLarge
  • Kubernetes 集群自动缩放器似乎不适用于 GKE?

    我定义了一个节点池 最小实例设置为 1 最大实例设置为 5 并启用了自动缩放 但它似乎并没有缩小规模 我已经封锁了一个节点 已经过去12个多小时了 没有待处理的 Pod 删除节点不会减少我自己的部署的副本数量 相关节点上运行以下 pod f
  • 如何将新的 Kubernetes Minion 添加到当前集群

    我有一个运行在 3 台服务器上的 Kubernetes 集群 一台主服务器和 2 台服务器 我想添加另一个小黄人 是否可以添加 Minion 而无需再次进行完整安装 到目前为止 在寻找执行此操作的指南时 我只能找到有关建立整个集群的优秀指南
  • 无法使用 minikube 设置 Istio

    我按照 Istio 的官方文档为带有 minikube 的示例 bookinfo 应用程序设置了 Istio 但我得到了无法连接到服务器 net http TLS 握手超时错误 这些是我遵循的步骤 我安装了 kubectl 和 miniku
  • 入口和 SSL 直通

    我最近一直在使用 nginxdemo nginx ingress 控制器 据我了解 该控制器无法执行 SSL 直通 我的意思是 将客户端证书一直传递到后端服务进行身份验证 因此我一直通过标头传递客户端主题 DN 最终 我更喜欢 SSL 直通
  • Kubernetes Web UI(仪表板)缺少图表

    我已经使用 Kubeadm v1 6 安装了 Docker v1 13 和 Kubernetes 然后我安装了 Web UI 仪表板 我可以访问它 但缺少 CPU 内存使用图 为什么会发生这种情况 对我来说 安装后使用图就起作用了heaps
  • Kubernetes 的艰难之路 - 如何设置节点不可调度

    我正在从头开始配置 Kubernetes 集群 原因 它是虚拟机内的本地设置 一切都很好 除了master节点被创建为可调度的 我尝试过分配master通过将所需参数传递给 kubelet 二进制文件来对节点进行标签和适当的污点 不能解决问
  • 为什么 tty 在命令完成后挂起?

    我想运行这样的命令 kubectl run busybox it rm restart Never image busybox command sh c env 预计运行命令并删除 pod 它打印变量 但随后终端冻结 尽管 pod 处于完成
  • 用户“system:anonymous”无法代理命名空间“kube-system”中的服务。:“没有匹配的策略。\n未知用户\“system:anonymous\””

    尝试访问集群信息中找到的 Kubernetes 仪表板时 出现以下错误 kubectl cluster info 在 Chrome 中以隐身模式也会弹出 用户 system anonymous 无法代理命名空间 kube system 中的
  • 指定命名空间时,无法使用 nginx-stable 中的 helm 安装 nginx ingress

    我有个问题 我正在尝试使用 helm 3 安装 nginx 但当我指定命名空间时它不起作用 知道为什么吗 它无需任何操作即可工作 helm install nginx release nginx stable nginx ingres n
  • k8s书签解决什么问题?

    我正在尝试做什么 我正在尝试进行部署并监视 k8s 事件 直到部署准备好使用k8s节点API 手表 https github com kubernetes client javascript blob master examples typ
  • 从 Kubernetes Python 客户端登录到 GitLab 存储库

    我有一个 Django 应用程序 它使用python 的官方 Kubernetes 客户端 https github com kubernetes client python并且工作正常 但它只部署 正确 公共注册表 有没有办法执行登录后让
  • Kubernetes / kubectl - “必须指定容器名称”,但看起来确实如此?

    我正在调试 kubectl 的日志输出 其中指出 Error from server BadRequest a container name must be specified for pod postgres operator 49202
  • Helm 3 图表安装错误:验证数据时出错:未设置 apiVersion

    我有一个简单的 helm 图表 它将通过 docker 桌面将应用程序部署到我的 kubernetes 本地副本 如果我使用 kubectl 一次部署一个 yaml 文件 一切都会正常工作 但是 当我尝试创建 helm 图表以方便部署时 出
  • 容器中的 JVM 计算处理器错误?

    最近我又做了一些研究 偶然发现了这一点 在向 OpenJDK 团队抱怨之前 我想看看是否有其他人观察到这一点 或者不同意我的结论 因此 众所周知 JVM 长期以来忽略了应用于 cgroup 的内存限制 众所周知 现在从 Java 8 更新某

随机推荐

  • GC日志分析

    JVM的GC日志的主要参数包括如下几个 XX PrintGC 输出GC日志 XX PrintGCDetails 输出GC的详细日志 XX PrintGCTimeStamps 输出GC的时间戳 以基准时间的形式 XX PrintGCDateS
  • 阿里云平台接入python版

    物联网基于python云平台的接入 文章目录 物联网基于python云平台的接入 1 设计目的 2 功能要求和关键问题 2 1 系统功能描述 2 2复杂工程问题分析 3 系统整体框架设计 4 模块的设计和实现 4 1 阿里云基础和设计 4
  • 22个开源的PHP框架

    PHP 是一个被广泛使用的来进行Web开发的脚本语言 虽然有很多其它可供选择的Web开发语言 像 ASP 和Ruby 但是PHP是目前为止世界上最为流行的 那么 是什么让PHP如此流行 PHP 如此之流行是因为比起别的语言来 它更容易学习
  • 后端程序员必备:mysql数据库相关流程图/原理图

    前言 整理了一些Mysql数据库相关流程图 原理图 做一下笔记 大家一起学习 1 mysql主从复制原理图 mysql主从复制原理是大厂后端的高频面试题 了解mysql主从复制原理非常有必要 主从复制原理 简言之 就三步曲 如下 主数据库有
  • DCEL数据结构

    文章目录 前言 DCEL介绍 DCEL优势 DCEL数据结构实现 Point Vertex HalfEdge Face Reference 前言 虽然https blog csdn net baidu 34931359 article de
  • 探索无限可能的教育新领域,景联文教育GPT题库开启智慧教育新时代!

    随着人工智能技术的快速发展 教育领域也将迎来一场革命性的变革 景联文科技是AI基础数据行业的头部企业 近期推出了一款高质量教育GPT题库 景联文科技高质量教育GPT题库采用了先进的自然语言处理技术和深度学习算法 可以实现对各类题目的智能识别
  • UIIAlertController的自动消失

    自动消失的思路就是添加一个计时器 设置计时器的时间 让UIAlertController 通过dismiss消失 UIAlertController alert UIAlertController alertControllerWithTi
  • css知识学习系列(6)-每天10个知识点

    目录 1 CSS中的 box sizing 属性与 border 属性有什么关系 2 在CSS中 如何使用 calc 函数进行计算 有什么使用技巧 3 在CSS中 如何使用 import 引入外部样式表 有哪些注意事项 4 Flexbox和
  • C# 邮件发送

    一 准备工作 1 要想编写一个发送邮件的小工具 首先得了解以下内容 收件人 这封邮件的接收人 邮件发送者沟通交流的对象 抄送 这封邮件的接收人 邮件发送者希望被抄送者了解邮件内容 密件抄送 这封邮件的接收人 与抄送的唯一区别就是它能够让各个
  • flutter 弹窗队列封装,里面的自定义回调值得学习

    参考 里面的这里回调TaskCallback Function学习一下 挺重要的 import dart async 自定义回调类型 typedef TaskCallback void Function bool success dynam
  • 【异常】IDEA打开配置文件*.properties乱码

    一 异常内容 二 异常说明 properties配置文件的编码格式 通常情况下properties的默认编码格式为ISO 8859 1 但是这种文件往往是不可读的 因此需要进行编码格式的转换 三 异常解决 更改properties的编码格式
  • C4996 ‘strncpy‘: This function or variable may be unsafe. Consider using strncpy_s instead. To disa.

    C4996 strncpy This function or variable may be unsafe Consider using strncpy s instead To disa 原因 解决方案 注意事项 原因 strncpy进行
  • 下次造轮子前先看看现有的轮子吧

    转自 http www cppblog com merlinfang archive 2014 12 26 209311 aspx 下次造轮子前先看看现有的轮子吧 值得学习的C语言开源项目 1 Webbench Webbench是一个在li
  • 物理组件oracle,Oracle入门《Oracle介绍》第一章1-1

    1 Oracle 简介 a 对象关系型的数据库管理系统 ORDBMS b 在管理信息系统 企业数据处理 因特网及电子商务等领域使用非常广泛 c 在数据安全性与数据完整性控制方面性能优越 d 跨操作系统 跨硬件平台的数据互操作能力 2 Ora
  • C#中的数组

    C 中的数组 C 数组 Array foreach 索引 null 地址 http www cnblogs com txw1958 archive 2013 01 11 csharp array html 数组概述 数组是一种数据结构 它包
  • VC工程中几中后缀名文件的意义

    opt 工程关于开发环境的参数文件 如工具条位置等信息 aps AppStudio File 资源辅助文件 二进制格式 一般不用去管他 clw ClassWizard信息文件 实际上是INI文件的格式 有兴趣可以 研究 一下 有时候Clas
  • 拜小白教你Qt5.8.0+OpenCV3.2.0配置教程(详细版)

    本机环境 Windows 64位 Qt 5 8 0 OpenCV3 2 0 CMake3 8 2 最后结果 亲测可用 第0部分 前期准备 CMake官网下载地址 https cmake org download CMake安装教程请查看 拜
  • C语言的各类运算概述

    C语言的各类运算概述 C语言的一个很有用的特性就是支持按位布尔运算 位级运算 对char数据类型表达式求值的例子 逻辑运算 逻辑运算符 和 分别对应于命题逻辑中的OR AND和NOT 运算 逻辑运算认为所有非零的参数都表示TRUE 而参数0
  • Vue+Element-ui实现表单验证

    文章目录 效果 template js实现 校验通过的实现效果 效果 校验效果 template div div
  • [云原生专题-31]:K8S - 核心概念 - 大规模pods编排工具:工作负载(workloads)资源及其八大特性

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122795902 目录 前言 第1章