【云原生】初识 Kubernetes — pod 的前世今生_kubernetes pod history

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注大数据)
img

正文

下列介绍部分来自网络,如有侵权,告知删除!谢谢

🐬 K8s 的由来

大家或许听过 K8s,其实他就是 Kubernetes 的简称。那么这个简称是如何得来的呢?他的前世到底是什么?

其实这个简称的由来非常简单,我这种专职摸鱼户非常喜欢这种偷懒的方式,K 就是 Kubernetes 的首字母,s 是 Kubernetes 的末尾字母,数字8则是表明在 K 和 s 之间的字符 ‘ubernete’ 个数为8。所以我们简称其为K8s

🐬K8s 的工作方式

那么K8s为什么会被创造出来呢?

在他诞生之前,传统的应用部署方式是通过插件或脚本来安装应用。但是这种做法不利于应用的升级更新/回滚等操作,虽然我们可以通过虚拟机进行实现某些功能,但是移植性不强。

至此,我们的K8s应运而生!

Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。

(1) K8s 通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。

(2) 容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release 的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚拟机轻量、更“透明”,这更便于监控和管理。

🐬 K8s 主要组件

在K8s的整体框架中,包含Master 组件、Node 组件,Master组件是提供集群的管理控制中心。节点组件运行在Node,提供Kubernetes运行时环境,以及维护Pod。

🐋Master 组件
Master 组件里面都有什么呢?

  1. kube-apiserver (统一的服务访问入口)
  2. ETCD (写入集群信息)
  3. kube-controller-manager
  4. cloud-controller-manager
  5. kube-scheduler
  6. 插件 addons
    6.1 DNS (创建域名对应解析)
    6.2用户界面
    6.3容器资源监测
    6.4Cluster-level Logging
🐋Node 组件
Node 组件里面都有什么呢?

  1. kubelet (直接与容器引擎交互 实现生命周期管理)
  2. kube-proxy (写入规则 、实现服务映射访问)
  3. docker
  4. RKT
  5. supervisord
  6. fluentd

至此对于 Kubernetes 的初步认识就告一段落了,接下来我们详细讲解一下 “ pod ”

🐳 pod 是什么?

🐬pod 的概念

博主比较倾向的pod的分类是自主式 pod 和控制器管理的 pod

自主式 pod 字面意思就是自由的pod,可以将不受控制器管理的pod称为自由式 pod,这里的自由就是存在与否不会被在意,消失后也不会被控制器增加,多了也不会被消除。

pod是有生命周期的,如过时间过长是会死亡的!具体后续会讲到

那么控制器管理的pod的意思就呼之欲出了!即为受控制器管理的pod。被控制器拿捏的妥妥的 (ง •_•)ง

🐬控制管理器

接下来我们介绍一下pod内各个容器与pause的关系。

在这里插入图片描述

从上图中我们可以看出,pod中的 container可以有很多个( n>=1 ),但是有一点,他们共用 pause 的地址段,即为地址资源共享。

在一个pod里面,既共享地址段又共享存储卷。

那么接下来我们介绍一下受控制器管理的 pod。首先我们需要了解这个控制管理。

🐟 控制管理–ReplicationController

ReplicationController是一种Kubernetes资源,可确保它的pod始终保持运行状态。他是用来确保容器应用副本的数量始终保持在用户定义的副本数。如果pod异常退出或者因任何原因消失(例如节点从集群中消失或由于该pod被从节点中逐出),则ReplicationController会注意到缺少了pod并创建替代pod。

我用接下来的两幅图来解释一下这个过程。

在这里插入图片描述

假设上述为正常运行的节点1和节点2,我们节点1中的pod 2是受控制器控制的,而pod 1没有。


在这里插入图片描述

此时,节点 1出现问题了,那么属于自由式pod 的pod 1只能仍其消失,但是pod 2就不同了,他是被控制器控制的,当节点 1连带着pod 2消失后,ReplicationController 会自动在节点2生成pod 2’ 的替代,使得用户设定的副本数保持不变。


在新版本Kubernetes 中,建议使用ReplicaSet来代替ReplicationController

虽然ReplicaSet可以独立使用,但是一般还是使用Deployment来自动管理ReplicaSet,因为这样不需要关系兼容问题。(比如ReplicaSet不支持滚动更新,但是Deployment支持)

在此介绍一个概念:滚动更新(rolling-update)

当我们想要更新一个 pod 时,我们可以先建立一个新的 pod,因为需要保持副本数一定,所以我们需要删除一个 pod ,这时我们将旧的 pod 删除,即可实现更新。

接下来博主用下列图像讲解Deployment是如何实现自动管理

在这里插入图片描述

此时我们有版本1的两个pod(此时ReplicaSet为旧版本) ,我们想要将其滚动更新为版本2,更新过程如下


在这里插入图片描述

首先根据滚动更新概念,我们先创建一个新的ReplicaSet 2,然后新建一个V2版本的 pod,然后删除旧版本。


在这里插入图片描述

和上述步骤一致,将另一个 pod 新建后,删除旧的 pod

其实因为存在回滚机制,pod 并不是删除消失,更贴切的说法是停用


🐟 控制管理–HPA(Horizontal Pod Autoscaling)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
[外链图片转存中…(img-XbfBO8It-1713355211100)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 29
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值