0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

核心组件原理——pod核心原理

倩倩 来源:CSDN 作者:CSDN 2022-09-20 11:03 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1. 核心组件原理 —— pod 核心原理

1.1 pod 是什么

pod 也可以理解是一个容器,装的是 docker 创建的容器,也就是用来封装容器的一个容器;

pod 是一个虚拟化分组, 有自己的 IP 地址和主机名 hostname,利用 namespace 进行资源隔离,相当于一台独立沙箱环境;

pod 相当于一台独立主机,内部可以封装一个或多个容器(通常是一组相关的容器),内部容器之间访问采用 localhost。

1.2 pod 用来干什么

通常情况下,在服务部署的时候,使用 pod 来管理一组相关的服务(一个 pod 中要么部署一个服务,要么部署一组有关系的服务)。如下图是部署了一组有关系的服务的结构图,其中 C 表示容器(container),下面的 pod 里就有很多个容器。

1c977b52-387a-11ed-ba43-dac502259ad0.png

如何理解一组相关的服务?

如下图:有一个请求是访问 Nginx,然后部署了 Nginx 的容器就把请求转发给部署了 web 服务的容器,web 再访问数据库,然后请求会依次返回来数据,最后再返回给用户。因此在 链式调用的调用链路上的服务 叫做一组相关的服务。

1ca9d928-387a-11ed-ba43-dac502259ad0.png

1.3 实现 web 服务集群

只需要复制多个 pod 的副本即可,这也是 k8s 管理的先进之处。k8s 如果要进行扩容或缩容,只需要控制 pod 的数量即可。比如上面那个部署模式,服务集群就是复制多个这样的 pod。

1cb75f44-387a-11ed-ba43-dac502259ad0.png

1.4 pod 底层网络和数据存储是如何进行的

前面说过 pod 内部的容器也是一个独立的沙箱环境,因此也有自己的 ip 和 端口。如果内部容器还是通过 ip:port 来通信,相当于还是远程访问,这样的话性能会受到一定的影响。如何提高内部容器之间访问的性能呢?

1cd7de0e-387a-11ed-ba43-dac502259ad0.png

pod 底层

pod 内部容器创建之前,必须先创建 pause 容器。pause 有两个作用:共享网络和共享存储。

每个服务容器共享 pause 存储,不需要自己存储数据,都交给 pause维护。

pause 也相当于这三个容器的网卡,因此他们之间的访问可以通过 localhost 方式访问,相当于访问本地服务一样,性能非常高(就像本地几台虚拟机之间可以 ping 通)。

2. ReplicaSet 副本控制器

2.1 副本控制器基本理解

作用:管理控制 pod 副本(服务集群)的数量,以使其永远与预期设定的数量保持一致。例如:replicas = 3 (创建 3 个副本,这是提前设置好的)

1cf0ca0e-387a-11ed-ba43-dac502259ad0.png

当副本设置为 3 时,副本控制器将会永远保证副本数量为 3。因此当有 pod 服务宕机时(如上面第 3 个 pod),那副本控制器会立马重新创建一个新的 pod,就能够保证副本数量一直为预先设定好的 3 个。

2.2 ReplicaSet 和 ReplicationController 的区别

ReplicaSet 和 ReplicationController 都是副本控制器,其中:

相同点:都有前面 2.1 节所描述的功能

不同点:标签选择器的功能不同。ReplicaSet 可以使用标签选择器进行 单选 和 复合选择;而 ReplicationController 只支持 单选操作。

什么意思呢?

假设下面有下面两个不同机器上的 Node 结点,如何知道它们的 pod 其实都是相同的呢?答案是通过标签。

给每个 pod 打上标签 ( key=value 格式,如下图中的 app=web, release=stable,这有两个选项,相同的pod副本的标签是一样的),于是副本控制器可以通过标签选择器 seletor 去选择一组相关的服务。

一旦 selector 和 pod 的标签匹配上了,就表明这个 pod 是当前这个副本控制器控制的,表明了副本控制器和 pod 的所属关系。如下图中 seletor 指定了 app = web 和 release=stable 是复合选择,要用 ReplicaSet 才能实现若用 ReplicationController 的话只能选择一个,如只选择匹配app=web标签。这样下面的 3 个 pod 就归这个副本控制器管。

1d02c948-387a-11ed-ba43-dac502259ad0.png

可见 ReplicaSet 功能更齐全,所以在新版的 k8s 中,建议使用 ReplicaSet 作为副本控制器,不再使用 ReplicationController。

3. Deployment 部署对象

3.1 滚动更新

ReplicaSet 副本控制器可以永久保持 pod 副本的数量。但是项目的需求在不断的迭代、更新,项目在不断发版。那如何做到服务更新?难道把服务停掉再把新版本部署上去吗?当然不是,答案是用滚动更新。就是重新创建一个 pod (v2版本) 来代替 之前的 pod (v1版本)。

1d1d1596-387a-11ed-ba43-dac502259ad0.png

那是如何滚动更新的呢?涉及到下面要讲到的部署模型。

3.2 部署模型

单独的 ReplicaSet 是不支持滚动更新的,Deployment 对象支持滚动更新,通常和 ReplicaSet 一起使用。

需要滚动更新时的步骤:

Deployment 建立新的 Replicaset

Replicaset 重新建立新的 pod

所以它们之间是有层次关系的,Deployment 管 Replicaset,Replicaset 维护 pod。在更新时删除的是旧的 pod,老版本的 ReplicaSet 是不会删除的,所以在需要时还可以回退以前的状态。

4. StatefulSet 部署有状态服务

4.1 引入定义

思考:如果 MySQL(有状态服务) 使用容器化部署,会存在什么问题?

1、容器都是有生命周期的,一旦宕机数据就很可能丢失

2、pod 也有生命周期的,用 pod 部署时把 pod 集群副本重启以后也可能会出现数据丢失

因此对 k8s 来说,不能使用 Deployment 部署有状态的服务。通常情况下,Deployment 被用来部署无状态服务。

然后 StatefulSet 就是为了解决有状态服务使用容器化部署的一个问题。

4.2 如何理解状态服务

有状态服务

有实时的数据需要存储

在有状态服务集群中,如果把某一个服务抽离出来,一段时间后再加入回集群网络,此后集群网络会无法使用

无状态服务

没有实时的数据需要存储

在无状态服务集群中,如果把某一个服务抽离出去,一段时间后再加入回集群网络,对集群服务无任何影响,因为它们不需要做交互,不需要数据同步等等。

4.3 部署模型

StatefulSet 的部署模型和 Deployment 的很相似。

比如下图,借助 PVC(与存储有关) 文件系统来存储的实时数据,因此下图就是一个有状态服务的部署。

在 pod 宕机之后重新建立 pod 时,StatefulSet 通过保证 hostname 不发生变化来保证数据不丢失。因此 pod 就可以通过 hostname 来关联(找到) 之前存储的数据。

1d2cea70-387a-11ed-ba43-dac502259ad0.png

原文链接:https://blog.csdn.net/qq_43280818/article/details/10691018

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    114

    文章

    17879

    浏览量

    195151
  • 容器
    +关注

    关注

    0

    文章

    536

    浏览量

    23029
  • POD
    POD
    +关注

    关注

    0

    文章

    18

    浏览量

    6302

原文标题:Kubernetes 核心组件原理梳理,年底加鸡腿必看~

文章出处:【微信号:网络工程师笔记,微信公众号:网络工程师笔记】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    交流微电网架构设计:拓扑结构、核心组件与适配场景

    “双碳”目标实现的重要载体。交流微电网架构设计的核心,是通过合理规划拓扑结构、科学配置核心组件,实现与应用场景的精准适配,最终达成安全稳定、高效经济的运行目标。拓扑结构决定架构的整体布局与运行特性,
    的头像 发表于 04-09 16:54 822次阅读
    交流微电网架构设计:拓扑结构、<b class='flag-5'>核心</b><b class='flag-5'>组件</b>与适配场景

    晶科能源AIDC数据中心组件核心优势

    在算力需求爆发的时代,数据中心正从“用电大户”走向“用电核心”。如何在保障稳定供电的同时,实现更低成本与更高安全,成为行业关注的关键命题。晶科能源推出面向AIDC场景的专用组件,正是围绕这一核心需求进行系统性优化。
    的头像 发表于 03-28 14:34 1654次阅读

    微型导轨载荷能力的核心差异与应用场景

    微型导轨作为精密传动系统的核心组件,其额定静载荷与动载荷是衡量承载能力的两大核心指标。
    的头像 发表于 03-23 17:54 142次阅读
    微型导轨载荷能力的<b class='flag-5'>核心</b>差异与应用场景

    电动工具便携切割破局,超声切割核心组件解锁产品新优势

    在电动工具产业生态中,核心组件的品质与适配性直接决定终端产品的市场竞争力,而超声波切割工具作为高频刚需品类,其广东固特科技配套核心组件的技术升级,成为品牌商、配套商提升产品力的关键。配
    的头像 发表于 03-12 10:45 448次阅读
    电动工具便携切割破局,超声切割<b class='flag-5'>核心</b><b class='flag-5'>组件</b>解锁产品新优势

    Kubernetes Pod调度策略原理与落地指南

    Pod调度是Kubernetes的核心机制之一,决定了Pod最终运行在哪个节点上。默认调度器kube-scheduler通过一系列预选(Filtering)和优选(Scoring)算法完成调度决策,但默认行为在生产环境中往往不够
    的头像 发表于 02-27 11:08 310次阅读

    音频变压器:守护音质传输的核心电子组件

    :1的匝数比将300Ω功放输出阻抗匹配至4Ω扬声器,实现功率高效传输。此外,在公共广播等远距离传输场景中,线间变压器是核心组件,其关键参数为100V恒定电压输出、功率覆盖1W-20W,通过高压传输减少
    发表于 01-09 09:01

    解读晶科能源飞虎3光伏组件核心价值

    能源解决方案主任工程师燕森博结合多地域实证数据与经济性测算结果,系统阐释了飞虎3在降低度电成本、提升发电收益方面的核心价值,为光伏电站投资提供了更具竞争力的组件选择。
    的头像 发表于 12-09 15:15 1076次阅读
    解读晶科能源飞虎3光伏<b class='flag-5'>组件</b>的<b class='flag-5'>核心</b>价值

    高效项目的“核心”秘诀:怎么选对核心板?

    核心板即系统模块(SystemofModule,SOM),是一种将核心计算组件(如处理器、内存、存储和电源管理)集成在单个紧凑模块上的集成电路板。核心板封装形式
    的头像 发表于 11-04 16:40 1050次阅读
    高效项目的“<b class='flag-5'>核心</b>”秘诀:怎么选对<b class='flag-5'>核心</b>板?

    智能照明控制模块:革新家居照明体验的核心组件

    智能照明控制模块:革新家居照明体验的核心组件-华尔永盛 在智能家居飞速发展的当下,照明系统的升级成为不少家庭提升生活品质的重要选择,而智能照明控制模块正是推动家居照明体验革新的核心组件
    的头像 发表于 10-29 15:20 533次阅读

    超迷你缩小体电容:微型设备供电核心组件

    超迷你缩小体电容作为微型设备供电的核心组件,通过微型化设计、高性能材料及创新结构,实现了体积缩减、高能量密度、快速充放电和长循环寿命,成为物联网、可穿戴设备、微型医疗装置等领域的理想电源解决方案
    的头像 发表于 10-16 16:44 843次阅读
    超迷你缩小体电容:微型设备供电<b class='flag-5'>核心</b><b class='flag-5'>组件</b>

    RK3576与RK3588核心板如何选型?1分钟速通!#RK3576核心板 #RK3588核心

    核心
    广州灵眸科技有限公司
    发布于 :2025年09月23日 17:31:12

    VPP核心组件——计量芯片

    和电网运行的系统。   而在这其中,计量芯片成为核心组件之一。计量芯片能够实时、准确地测量分布式能源的发电量、用电量、功率因数、电压、电流等关键参数,为虚拟电厂的优化调度和负荷管理提供可靠的数据基础。   同时,VPP涉及用
    的头像 发表于 09-13 00:25 4648次阅读

    Jetson平台核心组件BOM清单概览

    Jetson平台核心组件BOM清单概览 NVIDIA Jetson系列作为业界领先的边缘计算和人工智能(AI)平台,其强大的性能背后是一系列精心挑选的核心芯片、电源管理集成电路(PMIC)以及丰富
    的头像 发表于 07-30 16:11 3490次阅读

    核心板:嵌入式系统的核心驱动力

    核心板(Core Board)作为嵌入式系统开发的核心组件,已成为现代电子设备智能化的重要基石。这种高度集成的电路板将处理器、内存、存储和基本外设接口浓缩在一个紧凑的模块中,为各类智能设备提供强大的"大脑"。
    的头像 发表于 07-29 18:03 1084次阅读

    详解Kubernetes中的Pod调度亲和性

    在 Kubernetes(K8s)中,Pod 调度亲和性(Affinity) 是一种高级调度策略,用于控制 Pod 与节点(Node)或其他 Pod 之间的关联(亲和)或反关联(反亲和)关系。通过亲和性规则,管理员可以更精细地控
    的头像 发表于 06-07 13:56 1099次阅读