从零开始学K8s:一篇看懂 Kubernetes 核心概念与架构
前言:对于刚接触容器编排的小白来说,Kubernetes(简称K8s)总给人一种“高深莫测”的感觉——一堆陌生的组件、复杂的架构图、晦涩的术语,刚入门就容易被劝退。其实K8s没有那么难,这篇文章作为K8s系列的第一篇,不搞复杂理论堆砌,只讲最核心、最基础的内容,帮你快速建立K8s的整体认知,搞懂“K8s是什么、能解决什么问题、核心组件有哪些、常用对象是什么”,为后续实战学习打下坚实基础。适合完全零基础、想入门K8s的同学,耐心看完,你会发现K8s的入门门槛其实很低。
一、什么是Kubernetes(K8s)?
先明确一个核心定义:Kubernetes 是一个开源的、用于管理容器化应用的容器编排平台。
拆解一下这个定义,帮你理解:
- 容器化应用:现在很多应用都会打包成Docker容器(后续系列会详细讲Docker,这里简单理解为“一个独立的、可移植的应用运行环境”即可),容器化解决了“应用在不同环境下运行不一致”的问题(比如开发环境能跑,测试环境跑不了)。
- 容器编排:当应用规模扩大,不再是一个容器,而是几十个、上百个容器时,手动管理这些容器就会变得极其繁琐——比如容器挂了怎么自动重启?容器之间怎么通信?如何实现负载均衡?如何动态扩缩容?K8s就是用来自动化管理这些容器的工具,也就是“编排”容器的生命周期、网络、存储等。
简单来说,K8s的核心作用就是:让容器化应用的部署、运维、扩展变得更简单、更高效、更稳定。
举个通俗的例子:以前你管理10个容器,就像手动看管10个小作坊,每个作坊的运行、维护都要亲自来;有了K8s,就相当于有了一个“智能管家”,你只需要告诉它“我要运行多少个容器、要达到什么效果”,剩下的(容器重启、负载均衡、扩缩容等)它都会自动帮你完成。
二、K8s 核心架构:Master + Node 架构
K8s的集群架构非常清晰,整体分为两个部分:控制平面(Master节点)和数据平面(Node节点),两者协同工作,构成一个完整的K8s集群。
这里先记住一个核心逻辑:Master节点是“大脑”,负责下达指令、管理整个集群;Node节点是“手脚”,负责执行指令、运行容器应用。
2.1 控制平面(Master节点)
控制平面是K8s集群的核心,负责集群的全局决策(比如调度容器、管理容器生命周期、处理集群事件等),通常由一个或多个Master节点组成(生产环境为了高可用,会部署多个Master节点)。
控制平面包含5个核心组件,每个组件各司其职,缺一不可,小白不用死记硬背,理解各自的作用即可:
-
kube-apiserver(API服务器):K8s的“入口”,所有操作(比如部署容器、查看集群状态)都必须通过API服务器进行。它是集群中所有组件之间通信的枢纽,Master和Node之间的通信、用户(通过kubectl命令)和集群的交互,都要经过它。简单说,它就是“接收指令、转发指令”的核心通道。
-
etcd(分布式键值存储):K8s的“数据库”,负责存储集群的所有核心配置和状态信息(比如集群中有多少个Node节点、部署了多少个容器、容器的运行状态等)。etcd是集群的“数据中心”,一旦etcd损坏,整个集群就会瘫痪,生产环境中通常会部署etcd集群保证高可用。
-
kube-controller-manager(控制器管理器):K8s的“控制器中枢”,运行着多种控制器,负责监控集群的状态,确保集群的实际状态和用户期望的状态一致。比如:容器挂了,控制器会自动重启容器;期望运行3个副本的容器,实际只有2个,控制器会自动创建1个补充。
-
kube-scheduler(调度器):K8s的“调度员”,负责将容器(Pod)调度到合适的Node节点上运行。调度器会根据Node节点的资源(CPU、内存)情况、容器的需求,选择最优的Node节点部署容器。比如:一个需要大量CPU的容器,会被调度到CPU资源充足的Node节点上。
-
cloud-controller-manager(云控制器管理器):可选组件,主要用于对接云服务提供商(比如阿里云、腾讯云、AWS),实现与云服务的集成(比如使用云厂商的负载均衡、存储服务等)。如果是本地搭建的K8s集群(比如虚拟机、物理机),这个组件可以不用部署。
2.2 数据平面(Node节点)
Node节点是集群中负责运行容器应用的节点,也叫“工作节点”,可以是物理机、虚拟机,集群中可以有多个Node节点(数量根据应用规模决定)。Node节点接收Master节点的指令,执行具体的容器部署和运行任务。
Node节点包含3个核心组件,同样理解作用即可:
-
kubelet:Node节点上的“管家”,负责与Master节点的API服务器通信,接收Master的指令(比如“部署一个Nginx容器”),然后在Node节点上启动、停止容器,同时监控容器的运行状态,将状态反馈给Master节点。简单说,kubelet就是Master在Node节点上的“代理人”,负责执行具体的操作。
-
kube-proxy(网络代理):负责Node节点的网络管理,实现容器之间、容器与外部的网络通信。它会维护Node节点上的网络规则(比如iptables/ipvs规则),实现Service的负载均衡功能(后续会讲Service),确保容器之间能够正常通信。
-
容器运行时(Container Runtime):负责运行容器的软件,K8s支持多种容器运行时,最常用的是Docker,还有containerd、CRI-O等。简单说,容器运行时就是“真正运行容器”的工具,kubelet会调用容器运行时来启动和管理容器。
2.3 架构总结(小白必看)
用一句话总结K8s的架构逻辑:用户通过kubectl命令(或其他工具)向Master节点的API服务器发送指令(比如“部署3个Nginx容器”),API服务器将指令转发给调度器,调度器选择合适的Node节点,然后通过kubelet在Node节点上启动容器,kube-proxy负责网络通信,etcd存储整个过程的配置和状态,控制器管理器监控容器状态,确保符合用户期望。
三、K8s 核心对象:小白必懂的5个基础对象
在K8s中,我们操作的不是容器本身,而是通过“对象”来管理容器。这些对象是K8s中最基础的操作单元,后续实战都会用到,这里先掌握最核心的5个,后续文章会详细实战。
核心逻辑:K8s通过定义“对象”的配置(比如yaml文件),告诉集群“我要运行什么应用、运行多少个、怎么运行”,集群会根据对象的配置自动执行。
-
Pod(容器组)K8s中最小的部署单元,不是容器,而是Pod。一个Pod可以包含一个或多个容器(通常是紧密关联的容器),这些容器共享Pod的网络和存储资源。举个例子:一个Pod中可以包含“Nginx容器”和“日志收集容器”,这两个容器紧密关联,需要共享网络(日志容器收集Nginx的日志),就可以放在同一个Pod中。注意:Pod是临时的,一旦Pod被删除,里面的容器和数据都会丢失(除非挂载了持久化存储),所以我们通常不会直接部署Pod,而是通过其他控制器(比如Deployment)来管理Pod。
-
Service(服务)解决Pod的“动态IP问题”。Pod是临时的,重启后IP会变化,容器之间、外部访问容器时,无法通过固定IP访问。Service就是为Pod提供一个固定的访问地址,无论Pod如何重启、IP如何变化,通过Service都能访问到Pod。简单说,Service就是Pod的“访问入口”,相当于一个“负载均衡器”,将请求分发到多个Pod上。
-
Deployment(部署控制器)最常用的K8s控制器,用于管理Pod的部署和扩展。通过Deployment,我们可以定义Pod的副本数(比如运行3个Nginx Pod)、更新策略(比如滚动更新,避免更新时服务中断)、回滚策略(更新失败后回滚到之前的版本)等。小白记住:后续部署应用,几乎都是用Deployment,它会自动帮我们管理Pod,不用手动创建和维护Pod。
-
ConfigMap(配置映射)用于存储应用的非敏感配置信息(比如Nginx的配置文件、应用的环境变量等)。通过ConfigMap,可以实现“配置与应用分离”,不用把配置写死在容器镜像中,后续修改配置时,不用重新构建镜像,直接修改ConfigMap即可。
-
Secret(密钥)和ConfigMap类似,但用于存储敏感信息(比如数据库密码、API密钥、证书等)。Secret会对敏感信息进行简单的加密(base64编码,注意:base64编码不是加密,只是编码,生产环境需要结合其他加密方式),避免敏感信息明文暴露。
四、常见疑问(小白必看)
-
Q:K8s和Docker是什么关系?
-
A:Docker是容器运行时(负责运行容器),K8s是容器编排平台(负责管理容器)。K8s可以集成Docker,也可以集成其他容器运行时,两者是“协作关系”,不是“替代关系”。
-
Q:必须部署多个Node节点吗?
-
A:不是。入门学习时,可以部署“单节点集群”(Master和Node节点合并在一台机器上),足够满足学习需求;生产环境为了高可用,需要部署多个Master节点和多个Node节点。
-
Q:这些组件和对象,需要手动安装和配置吗?
-
A:后续第二篇会讲“kubeadm一键搭建K8s集群”,kubeadm会自动帮我们安装和配置所有核心组件,不用手动操作,小白也能轻松搭建。
五、总结
这篇文章作为K8s系列的第一篇,核心是帮小白建立K8s的整体认知,不用纠结于复杂的技术细节,重点记住3点即可:
-
K8s是容器编排平台,核心作用是自动化管理容器化应用,让部署、运维更简单;
-
K8s集群由Master(大脑)和Node(手脚)组成,各组件协同工作,完成指令的下达和执行;
-
Pod、Service、Deployment、ConfigMap、Secret是K8s的基础对象,后续实战都会用到,先理解作用即可。
下一篇文章,我们将进入实战环节——《CentOS7/Ubuntu 一键搭建 K8s 集群(kubeadm 完整版)》,手把手教你搭建属于自己的K8s集群,真正上手操作,敬请关注!
最后,如果你觉得这篇文章对你有帮助,欢迎点赞、收藏、关注,后续会持续更新K8s系列实战文章,从入门到精通,带你轻松搞定K8s!
更多推荐



所有评论(0)