K8S基础概念
一、集群基础:K8s的“骨架”
1. 控制平面(Control Plane,旧称Master)
- 专业:集群的“大脑”,由API Server、etcd、Scheduler、Controller Manager等组件组成,负责决策、调度和监控整个集群。
- 通俗:像公司的“总部”,有前台(API Server,处理所有请求)、档案库(etcd,存集群数据)、调度员(Scheduler,安排任务到合适节点)、督查组(Controller Manager,确保一切按计划执行)。
2. 节点(Node)
- 专业:实际运行应用的服务器(物理机/虚拟机),包含Kubelet(管理本节点Pod)、容器运行时(如Docker,运行容器)、Kube-proxy(管理节点网络)。
- 通俗:像公司的“分部办公室”,有专员(Kubelet)盯着本地员工(Pod)干活,有设备(容器运行时)让员工工作,有联络员(Kube-proxy)负责内外通信。
二、核心工作单元:跑应用的“载体”
1. Pod
- 专业:K8s最小部署单元,含1个或多个紧密关联的容器(共享网络/存储)。
- 通俗:像“一个快递盒”,里面可能装“商品(主应用)”和“泡沫(辅助工具,如日志收集器)”,盒子拆了(Pod销毁),里面的东西也没了。
2. 控制器(管理Pod的“管家”)
- Deployment:
- 专业:管理无状态应用(如Web服务),确保指定数量的Pod始终运行,支持更新/回滚。
-
通俗:像“奶茶店店长”,保证始终有3个员工(Pod)在岗,员工离职了立刻招新的,换配方(更新应用)不影响营业。
-
StatefulSet:
- 专业:管理有状态应用(如数据库),Pod有固定身份(名称/网络),数据持久化。
-
通俗:像“银行服务器”,每个机器有固定编号,数据不能乱换,重启后身份不变。
-
DaemonSet:
- 专业:确保所有节点都运行同一个Pod(如监控工具)。
- 通俗:像“每个办公室都装一个监控摄像头”,新办公室(节点)建好就自动装。
三、网络与访问:应用“通信”的规则
1. Service
- 专业:为一组Pod提供固定访问地址,实现负载均衡(Pod IP变了也能访问)。
- 通俗:像“公司总机号”,员工(Pod)离职/入职(IP变),总机号不变,打总机能找到在岗员工。
2. Ingress
- 专业:管理外部访问规则(如用域名/路径区分服务),相当于集群“大门”。
- 通俗:像“小区门卫”,访客说“找3栋201”(域名+路径),门卫指引到对应住户(服务)。
四、配置与存储:应用“吃喝”的保障
1. ConfigMap/Secret
- 专业:存储配置信息(ConfigMap存非敏感数据,如地址;Secret存敏感数据,如密码)。
- 通俗:像“便利贴(记普通信息)”和“带锁笔记本(记密码)”,应用按需查看。
2. PV/PVC
- 专业:PV是集群“共享存储”(如硬盘),PVC是Pod的“存储申请单”(申请多大空间)。
- 通俗:像“仓库货架(PV)”和“领货单(PVC)”,应用凭单领货架放东西,不怕丢。
五、管理工具:资源“分类”的方法
1. Namespace
- 专业:集群内的“逻辑分区”,隔离不同环境(如开发/生产)。
- 通俗:像“公司的不同部门”,研发部(开发环境)和销售部(生产环境)各用各的资源。
2. 标签(Label)
- 专业:给资源贴“键值对标签”(如
app=web
),用于筛选和管理。 - 通俗:像“文件上的便利贴标签”,标上“重要”“项目A”,方便查找。
总结:K8s像个“智能工厂”
控制平面是“指挥中心”,节点是“车间”;Pod是“最小工件”,控制器是“车间主任”;Service/Ingress是“内外通信线”,ConfigMap/存储是“物料库”。这些部分配合,让K8s能自动管理成百上千个应用,稳定又高效。
K8S的架构
Kubernetes(K8s)的架构设计围绕“如何高效管理容器化应用”展开,核心是“控制平面+节点”的分布式架构。下面用“专业定义+通俗类比”的方式,清晰拆解其架构组成和各部分作用。
Master节点(控制平面):
1.API Server
- 专业:集群的“统一入口”,所有操作(部署应用、查询状态)必须通过它,负责验证请求、转发指令,是组件间通信的唯一渠道。
- 通俗:像“指挥中心的前台”,所有员工(组件)、外部访客(用户)的请求都得先经过它,再传达给内部。
2.etcd
- 专业:集群的“数据库”,存储所有集群状态(如Pod数量、配置信息),是“唯一可信数据源”。
- 通俗:像“指挥中心的档案柜”,记着工厂所有信息(有多少台机器、生产什么产品),任何决策都以它为准。
3.Scheduler
- 专业:“调度器”,根据应用需求(如需要2核CPU)和节点资源(如节点A有3核空闲),决定哪个应用跑在哪个节点上。
- 通俗:像“工厂的派工员”,给新订单(应用)分配最合适的生产线(节点),避免资源浪费。
4.Controller Manager
- 专业:运行多种“控制器”进程(如节点控制器、副本控制器),监控集群状态,自动修复异常(如Pod崩溃了,自动新建一个)。
- 通俗:像“工厂的巡检员+维修工”,盯着生产线,发现机器停了(Pod故障)就立刻修,确保产量达标(符合预期数量)。
节点(Node)核心组件(专业+通俗):
1.Kubelet
- 专业:每个节点上的“代理程序”,确保容器按Pod定义运行(如启动、监控、停止容器),并向控制平面汇报节点状态。
- 通俗:像“车间的班组长”,按指挥中心的要求(Pod定义)安排工人(容器)干活,定期汇报进度。
2.Kube-proxy
- 专业:节点的“网络代理”,管理节点网络规则,实现Pod之间、Pod与外部的通信,支持Service的负载均衡。
- 通俗:像“车间的通讯员”,负责不同车间(节点)、不同岗位(Pod)之间的消息传递,确保指令和数据能送到正确地方。
3.容器运行时(Container Runtime)
- 专业:运行容器的软件(如Docker、containerd),负责拉取镜像、创建容器、管理容器生命周期。
- 通俗:像“车间的生产设备”(如机床),按班组长(Kubelet)的要求,把原材料(镜像)加工成产品(运行的容器)。
K8s架构的核心是“声明式管理”:
- 你告诉控制平面“预期状态”(如“我要3个Nginx应用”);
- 控制平面通过etcd记录这个状态,然后调度器、控制器等组件协同工作,让节点上的实际状态(运行的Pod数量)和预期状态一致;
- 过程中,Kubelet不断汇报节点状态,控制器发现偏差(如Pod少了1个)就自动修复(新建1个Pod)。
总结:一句话理解架构
控制平面是“做决策的大脑”(指挥中心),节点是“干实事的手脚”(生产车间),两者通过API Server通信,协同实现容器化应用的自动化管理——你只需要说“要什么”,K8s自动搞定“怎么做”。