当前位置:首页 > 经验 >

pod工作原理(pod的组成部分)

来源:原点资讯(www.yd166.com)时间:2022-11-04 18:19:49作者:YD166手机阅读>>

pod 底层

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

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

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

2. ReplicaSet 副本控制器2.1 副本控制器基本理解

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

pod工作原理,pod的组成部分(5)

当副本设置为 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 就归这个副本控制器管。

pod工作原理,pod的组成部分(6)

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

3. Deployment 部署对象3.1 滚动更新

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

pod工作原理,pod的组成部分(7)

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

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 来关联(找到) 之前存储的数据。

pod工作原理,pod的组成部分(8)

栏目热文

pod网络是什么(什么是pod数据中心)

pod网络是什么(什么是pod数据中心)

前言Pods是可以在Kubernetes中创建和管理的最小的可部署计算单元。Pod 是一组(一个或多个)容器(例如 Do...

2022-11-04 18:30:05查看全文 >>

pod和sod的区别(pod的作用)

pod和sod的区别(pod的作用)

近年来国家对农药的管控力度越来越强,无论在政策导引、还是食品安全上,绿色健康的农药成分以及使用方式越来越受推崇,这给生物...

2022-11-04 18:12:39查看全文 >>

pod电路分析(poe供电电路原理图)

pod电路分析(poe供电电路原理图)

由IEEE制定的新型单对以太网(SPE)或10BASE-T1L物理层标准,为传输设备运行状况信息实施状态监测(CbM)应...

2022-11-04 18:02:23查看全文 >>

pod命令怎么生成的(pod之间怎样通信的)

pod命令怎么生成的(pod之间怎样通信的)

pod生命周期我们一般将pod对象从创建致终的这段时间范围称为pod的生命周期,它主要包含下面的过程:pod创建过程运行...

2022-11-04 18:01:10查看全文 >>

pod调度原理(pod调度使用法则)

pod调度原理(pod调度使用法则)

导读:在《一文读懂 K8s 持久化存储流程》一文我们重点介绍了 K8s 内部的存储流程,以及 PV、PVC、Storag...

2022-11-04 17:53:18查看全文 >>

poc和pod区别(pod技术的代表)

poc和pod区别(pod技术的代表)

不知道你是不是一个像我一样是一个曾经超级在意别人喜不喜欢我,在意别人的情绪的人。在意自己是不是让别人舒不舒服,如果不能满...

2022-11-04 18:41:18查看全文 >>

poi设备工作原理(poi运营模式详解)

poi设备工作原理(poi运营模式详解)

全面5G距离我们越来越近了,特别是在一二线城市中,已经基本实现了5G的大面积覆盖,出门在外时刻接收5G信号已经成为了日常...

2022-11-04 17:59:47查看全文 >>

po模式原理(为什么要使用po模式)

po模式原理(为什么要使用po模式)

点击上方头像关注我,每周早上 09:00准时推送,每月不定期赠送技术书籍。Hi,500 经典面试资料合辑,面试题多如云海...

2022-11-04 18:11:32查看全文 >>

pod 有哪些特性(pod基础知识)

pod 有哪些特性(pod基础知识)

本文主要包括Pod的基本概念、使用场景,以及如何在时速云平台上进行Pod的编排部署,希望对大家在进行微服务架构实践时有所...

2022-11-04 18:17:48查看全文 >>

pod是什么装置(pod泵干嘛用的)

pod是什么装置(pod泵干嘛用的)

“吸烟有害身体健康”,这是在购买香烟的包装上都能看到的一句话。但提到电子烟,却仿佛是一种比传统香烟要更安全的存在。了解到...

2022-11-04 18:31:08查看全文 >>

文档排行