K8s的Pod资源对象如何实现微服务架构?

本期源来如此技术公开课为《深入理解Kubernetes Pod资源对象》。主讲教师为达内教育李欣。下面由小编来带领大家深入了解本期课程的重点内容。

开源相关

2024-05-27 286

K8s的Pod资源对象如何实现微服务架构?

1716619218187697.png


本期源来如此技术公开课为《深入理解Kubernetes Pod资源对象》。主讲教师为达内教育李欣。下面由小编来带领大家深入了解本期课程的重点内容。




容器技术的起源与发展


在2013年,一个名为Docker的项目开启了,这个项目一经发布就迅速成为了运维、开发、测试各阶段中不可或缺的基础技术支撑。随着容器技术的兴起,一种以容器为载体,使用多个小型服务组合起来构建复杂应用的微服务架构就逐渐清晰。各个服务之间可以采用不同的编程语言、不同的存储技术,运行在各自的进程之间,互不干扰,协同工作。从此,容器这个只流传在极客口中的技术词汇就走向了IT历史舞台的正中央。


在这个容器诞生之后,人们在容器中就开始着手布置各种各样的应用和服务。随着应用服务越来越多,大家发现对大规模的容器进行编排、管理、调度其实是一件非常麻烦的事情。这时候,人们迫切需要一款软件来解决这个问题。在需要这款软件的时候,有很多大公司就已经出手了。比如说Docker公司编写了自己的Docker Swarm,Apache基金会推出了他们的Mesos,以及我们接下来要介绍的谷歌公司推出的Kubernetes。


Kubernetes的诞生及其市场地位


在2014年,谷歌公司推出的Kubernetes之后,仅仅用了短短两年的时间就彻底战胜了他的所有对手,包括Docker公司。甚至把Docker Swarm集成在Docker软件里面,也没有赢得容器战争的胜利。人们习惯把这个Docker时代称为微服务时代,又把这个后来的Kubernetes时代称为云原生时代,也有些人管它叫后微服务时代。


1716619267836826.png


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中的多个组件协同工作,体现了其复杂性和重要性。


1716619521647225.png


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.EtcdEtcd是K8S中的核心数据库,K8S在运行过程中所有的元数据都存储在Etcd中。


计算节点上必备的组件


1.Kubelet,运行在每个节点上的一个代理,负责保证容器运行在Pod中。


2.Kube-proxy,负责为Pod提供代理和负载均衡的重要组件。


3.Runtime:容器运行时,它负责真正的去创建容器。


Pod的创建流程


以下为Pod的创建过程图,图例中描述了一个Pod是如何创建出来的。首先在这个图例中,可以由使用Kubectl的命令或者使用其他的可以和Kubernetes API交互的方式与集群的管理控制节点进行交互。


1716620358142689.png

用户向Kubernetes的API服务器发送创建Pod的指令,API服务器将这些指令(包括Pod名称、镜像信息等)记录在etcd数据库中。这是一个异步过程,用户发送指令后,当API服务器将请求写入etcd数据库后,即认为请求完成。Kubernetes的编排解决方案被广泛应用于容器化项目,特别是在金融行业,其核心系统正在向Kubernetes迁移。


Pod的生命周期


1716620494284158.png


Pod的设计理念


在Pod的设计理念强调了单一职责、组合优于继承、共享资源、简化通信、面向对象的设计以及声明式API和可组合的API对象等原则,这些设计理念共同作用,使得Pod成为灵活、可扩展且易于使用的资源对象。


走进云原生时代


随着容器技术的普及,kubernetes越来越被企业重视,现在kubernetes已被公认为云时代的操作系统,软件和硬件的界限越来越模糊,硬件彻底被抽象化、云化了,现如今已经全面进入云原生时代了。


随着越来越多的 Kubernetes 基础设施部署在企业中,市场对 Kubernetes和云原生技术人员的需求不断增长。由此可见,对于kubernetes的学习刻不容缓,Linux基金会和CNCF共同推出了多个云原生项目的云原生认证考试,包括:Kubernetes,Prometheus,Istio,Cilium及Argo等。了解CNCF认证帮助您在云原生不同领域上装备自己,在事业上更上一层楼。


点此了解CNCF认证:装备一下自己,开启您的云原生事业!




深入学习可观看视频回放:


【LFOSSA源来如此公开课 | 深入理解 Kubernetes Pod 资源对象】:


1716620546789676.png

扫码观看视频




点击 此网址 https://training.linuxfoundation.cn/ 进入LFOSSA官网。了解更多Linux 基金会相关课程和认证考试。





相关文章

Linux基金会开源软件学园 Copyright © 2019-2024 linuxfoundation.cn, ICP license, no. 京ICP备17074266号-2