容器技术基础-Kubernetes 概念与架构

简介: 容器技术基础-Kubernetes 概念与架构

开发者学习笔记【阿里云云原生助理工程师认证(ACA)课程:容器技术基础-Kubernetes 概念与架构】

课程地址:https://edu.aliyun.com/course/3112075/lesson/19013


容器技术基础-Kubernetes 概念与架构

 

内容介绍:

一、Kubernetes 核心概念

二、Kubernetes 架构

 

一、Kubernetes 核心概念

(1)pod

image.png

Kubernetes 的核心概念是 pod,它作为容器的扩容机制解决了很多问题,它将容器归类为一体,形成一个容器体,就是我们说的 pod,pod 集群可承载任务的原子单元。
一个 pod 实际上分装了多个容器化的应用,用于帮助用户调度工作,负载,并为这些容器提供所需的联网和存储服务。Kubernetes其他部分可以帮助用户在这些pod之间达成负载均衡,确保运行正确的数量容器,以充分来支持实际的工作负载。
我们可以理解为 Pod 是 Kubernetes 中能够创建和部署的最小单元,是 Kubernetes 实际的一个应用实例。在Kubernetes上,它并不是以Docker的容器方式去运行,而是以pod的方式来运行一个实例。一个pod总是部署在同一个节点的node上,Pod集群是可承载任务的原子单位。  Pod不仅仅支持这Docker样的一个环节,还是支持多种容器的环境。Docker是现在最流行的一个事实标准的技术。

Pod可以给我们带来哪些好处呢?

1.首先Pod作为一个可以独立运行的服务单元,解放了应用部署的难度,以更高的抽象性为应用部署提供了极大的方便。

2Pod作为最小的应用实例可以独立运行,可以方便的进行部署,包括水平扩展以及水平收缩,方便进行资源的调度管理,资源的合理分配。

3.pod中的容器共享相同的数据和网络空间,它们之间可以进行统一的资源管理与分配。

4.pod也有自己的生命周期,像单独的容器应用一样,pod并不是持久运行。pod创建后Kubernete为其分配一个uid,并且Container调度到 node 中运行,然后 pod 一直保持运行状态直到运行结束或者被删除。在node 发生故障时,Container负责将其调动到其他的node 中。node和容器的运行时是比较相似的,可能随时会被停止,启停或发生故障。由于其他的节点来去承担这个 pod 工作。这就是pod 一个核心概念,它是供你部署和创建的最小单元,Kubernetes集群中的一个应用实例。

(2)volume

image.png

第二个核心概念是volume,volume就是劵的概念, 它是用来管理Kubernetes存储的,是用来声明pod中的容器可以访问的文件目录。pod本身是不储存数据的,需要定制一个底层可以访问的文件目录。一个劵可以在挂在pod中一个或多个的容器指定的目录下。

volume本身也是一个抽象概念,一个 volume可以支持多种后端存储,比如Kubernetes volume就支持很多的存储插接的方式,它可以支持本地存储,也可以支持云的存储,还可以支持一些分布式的存储,还有阿里云上的云盘等。
默认情况下Docker容器中的数据是非持久化的,在容器消亡后数据也会消失,因此Docker提供了Volume机制以便实现数据的持久化。Kubernetes中 Volume 的概念与Docker 中的 Volume 类似,但不完全相同。区别主要在Kubernetes中的Volume 与pod的生命周期相同,但与容器的生命周期不相干,但容器终止或重启时Volume中的数据不会丢失,但pod被删除时,Volume才会被清理,并且数据是否丢失取决于Volume的具体类型。比如,App DIR类型的pod数据会丢失,而PV类型的数据则不会丢失。 要了解volume是pod中能够被容器共享的磁盘目录,要理解持久化的理念。

(3)deployment

image.png

第三个核心概念 deployment,Deployment是在 pod 这个抽象上更为擅长的一个抽象,它可以定义一组pop的复合数,以及这个pod的版本。
一般我们用Deployment这个抽象来做应用真正的管理。pod是组deploy最小的单元。 一般情况下,我们并不会直接去创建某一个pod的,而是先创建Development,然后通过Development再去创建pod。由Development负责创建、更新、维护管理所有pod。Kubernetes是通过controller,也就是我们刚才提到的控制器去维护Deployment中的pod数目, 他也会去帮助Deployment自动恢复失败的pod。

比如说我们定义了一个Deployment。 这个Deployment里面需要两个pod。 当一个pod失败的时候,控制器就会监测到,重新把Deployment中的pod数从一个恢复到两个,再去新生成一个pod。通过控制器,我们也会帮助完成发布的策略。比如说,进行滚动升级,进行重新生成的升级,或者进行版本的回归,这就是我们为什么在通过  Kubernetes上可以进行相应的自动回滚和进行相应的不同版本的发布。
它都是通过Development这个概念,通过控制器指定不同的策略来进行版本的发布。Development是管理pod种抽象的方式,  我们一般不直接创建pod,而是通过Development创建pod。这个也是我们需要了解的,这些核心概念能够更好的帮我们理解Kubernetes是如何来运转的。  

(4)Service

image.png

Kubernetes还有一个核心概念 Service,Service 是 Kubernetes最核心的概念,通过创建service服务为一组具有相同功能的容器应用提供一个统一的入口地址,并且将其请求进行负载分发到后端的各个容器应用上。
在上面我们也看到一个Deployment,可以有两个或者更多的这种相同的pod,对外部用户来说,访问哪个pod其实都是一样的,所以就希望做一次负载均衡,所以做负载均衡的同时,我们可能只访问某一个固定的VIP,也就是虚拟的ip地址,而不希望知道每个具体pod ID地址。
Pod本身像容器一样,随时可能会被停止或随时会被终止,一个pod败了会换成另外一个新的pod来提供服务。

对一个外部用户来说,如果把每个pod都用来提供一个访问ip的话, 用户需要不停的更新pod地址会带来很多的麻烦,Pod在失败重启之后,我们希望有一个抽象把所有pod访问能力抽象成第三方的一个ip地址。用来实现 Kubernetes这种抽象,我们称之为Service。
它相当于是一组服务的一个统一入口地址,就是提供一个或者多个pod指令,一组具有相同功能的容器来提供一个统一的入口地址,稳定的访问地址。
service和网络有很大的关系,网络本身的分配才能实现service访问,所以说Service本身支持多网络访问方式的实现,比如常见的class ID、No pot和no balance多种方式来实现设备访问。
知道了服务概念就能理解pod之间如何形成多个服务,服务之间如何来发现,需要统一的入口,通过统一的入口保证pod失败,而不影响对外的服务,这就是Service重要的一个概念。  

 

(4)Namespace

 image.png

Kubernetes还有一个核心的概念namespace。namespace做为一个集群内部的逻辑隔离,它包括健全管理、资源管理。
Kubernetes的每个资源在很多情况下, Namespace是用于实现多用户的资源管理,相当于同一个 Namespace资源需要命名不同的kubernetes资源可以重名,Kubernetes相当于为用户提供了一个逻辑隔离的空间,可以让他为不同的开发者去做相应的部署和服务。可以认为Namespace是供应集群的一个虚拟化集群,在一个库里集群中可以拥有多个命名空间,他们在逻辑上是彼此隔离的,他们可以为你的团队提供组织安全性能方面的保障,通过这种方式 Namespace实现了逻辑的隔离。可以把它理解为一个虚拟化机群,帮助实现多租户的概念。
kubernetes平台上多个考察团队他们相互之间的开放运行就会受到影响,能够更好的帮们管理多团队多用户之间的资源划分和管理,这就是Namespace概念。

前面我们说了pod、Volume Deployment.、Service.Namespace,这些概念都是Kubernetes技术实现的一个核心基础。

首先Kubernetes通过 pod 实现这个容器的管理,我们认为一个 pod就是方块,它可以包含多个容器运行的示例,volume就是实现数据持久化的存储。
关注 pod来写底层数据,pod失败的时候不会影响数据存储和数据化的泄露。deployment是实现容器的这种部署和扩容以及历史版本的回归。service实现了容器应用对外提供的一个统一的目录地址,实现服务被外部的统一访问和调用。
namespace实现了多租户的资源隔离,提供了整个租户类的资源安全性等方面的保障,知道了这几个概念之后,就能够帮助kubernetes实现核心的功能。

 

二、Kubernetes 核心架构

 image.png

Kubernetes系统用于管理分布式节点集群中的微服务或容器化应用程序,提供了零停机时间部署、提供相应的版本自动回滚、扩缩容和容器的自愈,自动配置、自动重启、自动复制的高弹性基础架构。Kubernetes是如何实现的呢?
Kubernetes也是遵循CS,也就是客户端和服务端得到架构模式。系统架构分为Master节点和Node节点两部分。
Master是主控节点,Master为服务端,Node节点作为客户端。控制系统具有多个Master,可以部署多个Master服务端,帮助系统来实现高可用。
在MOD情况下,一个Master服务端可以完成所有的工作,但需要做相应的高可用。

我们推荐三个或者甚至更多的节点去做Master。多个Master可以帮助我们更好的提高系统的高可用。

Kubernetes Master (主控节点)是集群的“大脑”,负责管理所有节点(Node),相当于中间的主控节点,负责所有集群信息的通知,调度Pod在哪些节点上运行,负责控制集群运行过程中的所有状态。

Kubernetes Node(工作节点)是负责管理Node节点上所有运行的Pod,负责监控上报Node节点上所有Pod的运行状态。
Node是一个容器运行的环境和状态时,主控节点是它的一个管理节点,可以这样去理解它。

 image.png

Master服务端核心组件包括apiserver、controller-manager,scheduler集群调度服务,etcd一个分布式的存储系统。

1. kube-Apiserver

Apiserver就是kube-apiserver,顾名思义它是用来做API操作的。Kubernetes中所有的组件都会和apiserver进行连接,组件与组件之间,它不会进行独立的连接,都是依赖于apiserver进行消息的传送,可以把apiserver简单的理解为Kubernetes统一对外的控制器的统一入口,无论在操作任何电器的时候,比如冰箱有冷冻冷藏统一有一个控制界面,相当于Apiserver

通过apiserver和其他所有的功能节点进行交互,来实现命令的传达和信息的传送。

2.kube-controller-manager

kube-controller-manager是集群中所有资源对象的自动化控制中心,controller-manager被称为管理控制器,负责管理Kubernete集群的节点以及Pod副本。service服务端点访问的端口namespace服务账户、资源定额等所有管控的一个组件。自动化控制中心控制器负责完成对集群状态的一些管理,其默认提供了一些控制器,它是由多个不同的控制器组合而成,例如deployment controller控制器、Lets base控制器等这些,每个控制器都通过kube-apiserver组件来提供接口实时监控,调入整个集群的资源来满足当前的一个状态。当发生一些故障而导致系统出现状态变化的时候,会尝试将系统的状态修复到一个可期望的状态,这就具备Kubernete治愈功能。

3.kube-Schedule

Schedule是调度器,调度器顾名思义就是完成所有资源的调度,可以把一个用户提交的容器以及对CPU和内存的请求大小,找到一个合适的Pod基点进行Pod放置。
后面的场景中,我们会来讲解一下Pod的调度算法,如何找到一个合适的Pod进行容器的放置,调度器每次只调度一个Pod资源对象,为每一个Pod资源对象找到一个合适的Pod过程,是调度的一个整体的周期。Pod本身是不具备此句话的,因此它需要一个Etcd,一个分布式的存储系统。apiserver中所需的原始信息都放置在Etcd中.

4.Etcd

Etcd本身就是一个高可用的系统,通过Etcd机制,能够保证整个Kubernetes Master组件高可用。apiserver是集群的统一入口,controller-manager控制器去做集群中所有状态的控制,scheduler调度服务器是对集群Pod的资源对象整体的一个调度服务,Etcd分布式存储系统.

Kubernetes 架构-node 客户端组件,Node节点客户端有哪些组件,起到哪些重要的作用

image.png

1. kubelet

Kubernetes Node是真正运行右负载的地点,每个右负载都会以pod形式进行运行,一个pod中会运行一个或多个容器,真正去运行pod组件叫做kubelet,kubelet负责管理节点上容器的创建,删除,启停等任务,与Master节点进行通信。

Kubelet是Kubernetes中最重要的Node节点控制器,是维护容器的生命周期,并管理容器存储和容器的网络,它是Pod和Node api主要实现的方式,kubelet负责驱动容器底层的执行层,在kubelet中应用容器彼此是隔离的,运行主机也是隔离的,对应用进行独立管理的关键节点是Kubelet,Node节点是对外执行命令的一个关键的统一路口,他是负责节点上容器的创建,删除、启停的功能。

2. Kube-proxy

Kube-proxy负责Kubernetes服务的通讯及负载均衡的服务,在Kubernete中自己环境中也会有Kubernete网络服务,为了提供severce net来进行搭网主网,真正完成service 主网的组建是Kubernetes,它是利用achetable的能力 组建Kubernetes network,就是classnetwork

3. Container Runtime

Container RuntimeKubernetes工作节点中的一个组建是为了运行每个节点上的容器。我们知道Kubernetes是容器的编排和管理引擎,容器运行是非常重要的。Container Runtime、K8s节点的底层使容器运行时支撑负责启停容器,理解容器的是docker,但它并不是唯一的事实。

事实上容器运行时在这个领域包含很多技术,使得Kubernetes扩展变得更加开放,扩展变得更加容易,node的客户端的关键的三个组件。

Kubernetes是负责管理节点上的容器的创建删除启停的任务,与master节点进行通讯,传达master节点所下发的apiserver的指令。

Kube-proxy是负责server网络的主管,负责Kubernetes服务的一种通信及负载均衡。Container Runtime负责容器的基础管理的服务,是接收kubelet组件的指令对容器启停或者是增加这样具体的启动命令。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
4月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
840 108
|
2月前
|
存储 缓存 安全
某鱼电商接口架构深度剖析:从稳定性到高性能的技术密码
某鱼电商接口架构揭秘:分层解耦、安全加固、性能优化三维设计,实现200ms内响应、故障率低于0.1%。详解三层架构、多引擎存储、异步发布、WebSocket通信与全链路防护,助力开发者突破电商接口“三难”困境。
|
3月前
|
数据采集 监控 JavaScript
移动端性能监控探索:鸿蒙 NEXT 探针架构与技术实现
阿里云 ARMS 团队倾力打造的鸿蒙 NEXT SDK,为鸿蒙应用提供了业界领先的全链路监控解决方案。这不仅仅是一个 SDK,更是您洞察用户体验、优化应用性能的智能伙伴。
630 32
|
2月前
|
人工智能 自然语言处理 安全
AI助教系统:基于大模型与智能体架构的新一代教育技术引擎
AI助教系统融合大语言模型、教育知识图谱、多模态交互与智能体架构,实现精准学情诊断、个性化辅导与主动教学。支持图文语音输入,本地化部署保障隐私,重构“教、学、评、辅”全链路,推动因材施教落地,助力教育数字化转型。(238字)
|
2月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
384 2
|
3月前
|
Cloud Native API 开发者
Gemini 2.5 Flash 技术拆解:从 MoE 架构到阿里云生态落地指南
2025年9月,谷歌Gemini 2.5 Flash发布,性能提升5%、成本降24%,引发行业关注。其MoE架构、百万上下文与“思考”范式,助力阿里云开发者高效构建云原生应用。本文解析技术内核,结合汽车、物流等案例,提供落地指南与避坑建议,展望大模型与流计算融合前景。
498 6
|
4月前
|
机器学习/深度学习 存储 人工智能
RAG系统文本检索优化:Cross-Encoder与Bi-Encoder架构技术对比与选择指南
本文将深入分析这两种编码架构的技术原理、数学基础、实现流程以及各自的优势与局限性,并探讨混合架构的应用策略。
326 10
RAG系统文本检索优化:Cross-Encoder与Bi-Encoder架构技术对比与选择指南
|
2月前
|
存储 人工智能 搜索推荐
拔俗AI助教系统:基于大模型与智能体架构的新一代教育技术引擎
AI助教融合大语言模型、教育知识图谱、多模态感知与智能体技术,重构“教、学、评、辅”全链路。通过微调LLM、精准诊断错因、多模态交互与自主任务规划,实现个性化教学。轻量化部署与隐私保护设计保障落地安全,未来将向情感感知与教育深度协同演进。(238字)

相关产品

  • 容器服务Kubernetes版