本期源来如此技术公开课为《深入理解Kubernetes Pod资源对象》。主讲教师为达内教育李欣。下面由小编来带领大家深入了解本期课程的重点内容。
容器技术的起源与发展
在2013年,一个名为Docker的项目开启了,这个项目一经发布就迅速成为了运维、开发、测试各阶段中不可或缺的基础技术支撑。随着容器技术的兴起,一种以容器为载体,使用多个小型服务组合起来构建复杂应用的微服务架构就逐渐清晰。各个服务之间可以采用不同的编程语言、不同的存储技术,运行在各自的进程之间,互不干扰,协同工作。从此,容器这个只流传在极客口中的技术词汇就走向了IT历史舞台的正中央。
在这个容器诞生之后,人们在容器中就开始着手布置各种各样的应用和服务。随着应用服务越来越多,大家发现对大规模的容器进行编排、管理、调度其实是一件非常麻烦的事情。这时候,人们迫切需要一款软件来解决这个问题。在需要这款软件的时候,有很多大公司就已经出手了。比如说Docker公司编写了自己的Docker Swarm,Apache基金会推出了他们的Mesos,以及我们接下来要介绍的谷歌公司推出的Kubernetes。
Kubernetes的诞生及其市场地位
在2014年,谷歌公司推出的Kubernetes之后,仅仅用了短短两年的时间就彻底战胜了他的所有对手,包括Docker公司。甚至把Docker Swarm集成在Docker软件里面,也没有赢得容器战争的胜利。人们习惯把这个Docker时代称为微服务时代,又把这个后来的Kubernetes时代称为云原生时代,也有些人管它叫后微服务时代。
Kubernetes架构概览
**Kubernetes(简称K8S)是谷歌开源的容器集群管理系统,被誉为云时代的操作系统。**其迅速占领市场并赢得用户青睐的原因在于,它基于谷歌内部多年积累的网格计算系统(容器前身)的技术和实践,满足了用户多方面的需求。K8S的推出并非全新发明,而是谷歌内部成熟容器管理系统的开源版本,因此一上市就深受用户欢迎。
Pod****资源对象详解
那么接下来让我们了解一下K8S是如何巧妙的设计Pod的资源对象,让它满足了用户的一切管理和需求的目标。首先,我们先来看一下K8S的一个整体架构。K8S(Kubernetes)通过Pod这一核心资源对象,巧妙地满足了用户管理和需求的目标。整体架构中,K8S包含管理控制节点和多个计算节点,管理控制节点负责发布和操作指令,而计算节点承载应用和负载。
Pod是K8S中最重要的资源对象,是K8S****中可以创建部署的最小计算单元。官方形容是像一个豌豆荚一样,豌豆荚里头有很多很多的豆子。一般通俗可以把他理解为像一个盒子,用于盛放和管理容器。通过将容器放入Pod中,K8S能够更方便地进行应用和服务的管理与部署。这种设计简化了复杂性和提高了管理效率。
Pod****的自动化管理与特性
Pod作为Kubernetes中的核心资源对象,会自动维护其中的容器,并具有原子性、一致性等特性。将容器放入Pod中可以简化操作,便于配置和管理,尤其对于存在相互依存性和共享存储需求的业务模块。很多业务的功能之间有很多相互的依存性。需要保证各个业务模块中间的一致性、原子性,有些模块还有共享存储的一些需求。如果把它放到单独的每一个都放到单独的容器中,想要实现这些东西得在容器里进行大量的配置、部署和管理。这些配置、部署和管理带来的工作量是非常巨大的。K8S中就巧妙地把这些容器放到Pod中,把容器放到Pod中可以简化操作,可以使我们很方便地进行配置和管理。
下面来说一说Pod有什么特性。Pod中的容器共享网络、共享存储,并拥有相同的生命周期,具有原子性和一致性,它们紧密耦合,提供自维护和安全性。Pod的创建涉及Kubernetes中的多个组件协同工作,体现了其复杂性和重要性。
Pod可以帮助我们解决各种各样的问题。下面我们来说一说这个Pod到底是如何一步一步创建出来的。如果想让Pod顺利的创建出来,需要调用到K8S中非常非常多的组件。
Kubernetes核心组件介绍
在这个了解Pod创建这个步骤之前,我们先了解一下K8s中各大组件的作用。在K8s中常见的有这么七个组件,其中前面这四个API Server、etcd、scheduler和controller manager是管理控制节点的四大核心组件。剩下那三个,像Kubelet、Kube-proxy和这个runtime一般是计算节点上必备的组件。
管理控制节点的四大核心组件
1.API Server,是整个系统对外的接口,我们用户在管理或者和K8S集群进行交互的时候,就需要使用管理工具与这个API Server进行打交道。
2.Scheduler:Pod调度器,负责选择最佳的计算节点来运行Pod。Scheduler会统计各个节点的情况,会经过筛选和优选的机制,最终把Pod调度到指定的节点上去。
3.Controller manager,它并不参与直接创建Pod,但是它会管理集群中的控制器,集群中有很多很多控制器可以辅助用户管理和控制Pod。Controller manager就是集群中的控制器的大管家,负责管理集群中的所有的控制器。
4.Etcd:Etcd是K8s中的核心数据库,K8s在运行过程中所有的元数据都存储在Etcd中。
计算节点上必备的组件
1.Kubelet,运行在每个节点上的一个代理,负责保证容器运行在Pod中。
2.Kube-proxy,负责为Pod提供代理和负载均衡的重要组件。
3.Runtime,容器运行时,它负责真正的去创建容器。
Pod的创建流程
以下为Pod的创建过程图,图例中描述了一个Pod是如何创建出来的。首先在这个图例中,可以由使用Kubectl的命令或者使用其他的可以和Kubernetes API交互的方式与集群的管理控制节点进行交互。
用户向Kubernetes的API服务器发送创建Pod的指令,API服务器将这些指令(包括Pod名称、镜像信息等)记录在etcd数据库中。这是一个异步过程,用户发送指令后,当API服务器将请求写入etcd数据库后,即认为请求完成。Kubernetes的编排解决方案被广泛应用于容器化项目,特别是在金融行业,其核心系统正在向Kubernetes迁移。
Pod的生命周期
Pod的设计理念
在Pod的设计理念强调了单一职责、组合优于继承、共享资源、简化通信、面向对象的设计以及声明式API和可组合的API对象等原则,这些设计理念共同作用,使得Pod成为灵活、可扩展且易于使用的资源对象。
走进云原生时代
随着容器技术的普及,kubernetes越来越被企业重视,现在kubernetes已被公认为云时代的操作系统,软件和硬件的界限越来越模糊,硬件彻底被抽象化、云化了,现如今已经全面进入云原生时代了。
随着越来越多的 Kubernetes 基础设施部署在企业中,市场对 Kubernetes和云原生技术人员的需求不断增长。由此可见,对于kubernetes的学习刻不容缓,Linux基金会和CNCF共同推出了多个云原生项目的云原生认证考试,包括:Kubernetes,Prometheus,Istio,Cilium及Argo等。了解CNCF认证帮助您在云原生不同领域上装备自己,在事业上更上一层楼。
点此了解CNCF认证:装备一下自己,开启您的云原生事业!
深入学习可观看视频回放:
LFOSSA源来如此公开课 | 深入理解 Kubernetes Pod 资源对象
点击链接进入LFOSSA官网。了解更多Linux 基金会相关课程和认证考试。
有关 Linux Foundation开源软件学园
Linux Foundation 开源软件学园 (LFOSSA) 依托于全球最大的开源软件组织, 是领先全球的高端专业软件人才教育机构, 为科技企业培养了大量软件人才, LFOSSA不仅拥有丰富的线上专业课程,面授课程的导师同样是由业内资深专家担任, 所颁发的证书更是全球认可的专业资质。Linux 基金会作为非牟利国际技术组织, 致力于通过开源推动创新和促进科技发展, 我们唯一的目标就是帮助您的事业发展更上一层楼。