个人随笔
目录
Kubernetes核心概念详解|零基础吃透集群核心组件与关联关系
2026-06-27 18:16:22
Kubernetes(简称K8s)是目前主流的容器编排平台,核心作用是实现容器化应用的自动化部署、扩容、运维与管理。本文将通俗易懂地拆解K8s全部核心资源概念,梳理各组件的关联关系,并结合微服务场景落地讲解,适合新手入门学习与日常笔记复盘。

一、Kubernetes 核心基础组件

1.1 Pod:最小部署计算单元

Pod 是 Kubernetes 中最小、可创建、可部署的计算资源单元,也是所有业务应用的运行载体,是K8s调度、管理的最小粒度。
可以将 Pod 直观理解为「豌豆荚」,一个 Pod 内封装一个或多个紧密协作的应用容器,同一 Pod 下的所有容器会共享网络、存储资源以及运行配置声明,无需单独配置网络互通、数据挂载。同时,Pod 也可以类比为一台微型物理服务器,所有容器应用都运行在这台“微型服务器”中。
通俗类比:麻屋子(Pod)、红帐子(Container容器)、白胖子(应用程序)。Pod是承载载体,容器是运行环境,最终的业务程序运行在容器之中。
需要重点注意:Pod 本身是临时性、非持久化资源,会随着集群调度、节点故障、版本更新被频繁创建、销毁、重建,不会固定存在。

1.2 Controller:Pod 生命周期控制器

控制器(Controller)是 K8s 中用于管理、运维 Pod 的核心对象,核心工作原理是持续监控集群状态,自动修正集群当前状态,使其趋近于用户定义的期望状态。
通俗类比:房间温度自动调节器。用户设置目标温度(期望状态),设备实时监测室内实际温度(当前状态),通过启停设备、调节功率,让实际温度匹配目标温度,这和控制器的闭环调控逻辑完全一致。
所有控制器都会追踪对应K8s资源的 spec 期望配置,持续完成状态校准。不同控制器适配不同业务场景,核心常用控制器分为5类:
  • Deployment(无状态应用控制器):最常用的控制器,专门用于部署无状态应用。无状态应用的所有Pod完全等价、无启动顺序、无数据依赖,可随意扩容缩容、迁移节点,支持滚动更新、版本回退。典型场景:Web服务、分布式接口服务、前端服务。
  • StatefulSet(有状态应用控制器):用于部署有状态应用。每个Pod拥有独立唯一标识、固定主机名、专属持久化存储,启动、扩容、升级均严格按照顺序执行,Pod销毁重建后仍能保留原有状态。典型场景:MySQL主从集群、Redis集群、消息队列。
  • DaemonSet(守护进程控制器):保障集群中每个Node节点永久运行一个Pod副本,新增节点会自动创建Pod,节点下线则自动回收。典型场景:集群日志收集、节点监控、系统运维组件。
  • Job(一次性任务控制器):用于执行短暂的一次性任务,确保任务对应的Pod成功运行并结束,任务完成后Pod不会保留,适用于批量处理、数据备份、脚本执行等场景。
  • CronJob(定时任务控制器):基于Cron表达式实现周期性定时任务,是Job的定时升级版,可按分钟、小时、天、周、月自动执行指定任务。

1.3 Label:资源标签

Label 是附着在K8s各类资源(Pod、Node、Service等)上的自定义键值对(key=value),仅用于用户资源管理,对集群系统本身无内置含义。
标签支持在资源创建时定义,也可在运行中动态新增、修改、删除。一个资源可绑定多个标签,同一个标签也可批量绑定多个资源,核心作用是实现多维度资源分组管理,为资源筛选、调度、部署、监控提供灵活支撑。

常用标签场景示例

  • 版本标签:release: stable(稳定版)、release: canary(灰度版)
  • 环境标签:environment: dev(开发环境)、environment: production(生产环境)
  • 架构标签:tier: frontend(前端)、tier: backend(后端)、tier: middleware(中间件)
  • 业务分区标签:partition: customerA(A客户)、partition: customerB(B客户)
  • 质量管控标签:track: daily(每日构建)、track: weekly(每周构建)

Label 语法规范

标签分为Key(键)和Value(值),均有严格的字符与长度限制:
  • Label Key:总长不超过63字符;支持DNS子域前缀(前缀总长≤253字符,以/分隔);系统保留前缀 kubernetes.io/;首尾必须为字母/数字,中间可包含连字符、下划线、点。
  • Label Value:总长不超过63字符;首尾必须为字母/数字,中间可包含连字符、下划线、点。

1.4 Label Selector:标签选择器

标签选择器是K8s的资源筛选核心机制,通过匹配资源标签,精准筛选出目标资源集合,是控制器、Service等组件关联Pod的核心依据。
通俗类比:等价于SQL的WHERE查询条件。例如 name=redis-slave 的标签选择器,可理解为 select * from pod where pod.name = 'redis-slave',精准筛选出匹配标签的Pod。
标签选择器分为两种匹配模式:
  • 基于等式(equality-based):支持 ===!= 运算符,多条件可通过逗号分隔,实现精准匹配。
  • 基于集合(set-based):支持 innotin! 运算符;仅填写标签Key时,筛选所有包含该Key的资源;!Key 筛选所有不包含该Key的资源。

1.5 Service:服务访问抽象层

Service 是K8s中用于暴露Pod应用、实现稳定服务访问的抽象资源,核心解决Pod动态变化导致的服务访问不稳定问题。
由于Pod是临时性资源,会频繁重建、销毁、迁移,Pod的IP地址无法固定,直接通过Pod IP访问应用极易出现访问中断。Service 会为一组功能相同的Pod提供统一固定的访问入口,底层基于iptables/ipvs规则实现请求转发与负载均衡。
客户端只需访问Service固定地址,无需感知后端Pod的数量、IP变化,Service会自动将请求分发到健康的后端Pod,实现服务高可用与负载均衡。

1.6 Endpoints:服务端点

Endpoints 是 Service 的核心关联资源,专门用于维护Service后端所有可用Pod的IP+端口列表
当集群中Pod创建、重启、销毁时,Endpoints会实时更新列表,自动剔除失效Pod、纳入新就绪Pod,确保Service转发的请求始终能命中健康的后端服务,保障服务访问的稳定性。

1.7 DNS:集群域名解析服务

K8s集群内置DNS组件,为集群内所有资源提供域名解析能力,替代传统的IP访问方式,进一步提升服务访问的稳定性。核心能力分为两点:
  • 实现集群内Service域名解析,集群内Pod可通过Service名称直接访问服务,无需记忆固定IP;
  • 为Pod内运行的应用提供外网域名解析能力,保障容器应用正常访问互联网。

二、核心组件关联关系

2.1 Pod 与 Controller 的关系

Controller 是 Pod 的运维管理者,所有生产环境的Pod均通过控制器创建和管理,不建议单独创建裸Pod。二者通过Label标签+标签选择器建立绑定关系:
控制器通过标签选择器匹配对应标签的Pod,持续监控Pod状态,自动完成Pod的扩容、缩容、重启、滚动升级、故障恢复等运维操作,确保集群中Pod数量、状态始终符合用户定义的期望配置。

2.2 Pod 与 Service 的关系

Service 是 Pod 的服务发现与负载均衡入口,核心作用是屏蔽Pod的动态变化。二者同样通过Label+Selector关联:
Service 通过标签选择器筛选一组相同业务的Pod,统一对外提供访问入口。无论后端Pod如何增减、重建,Service的访问地址始终不变,且自动实现请求负载分发,是微服务架构中服务互通的核心依托。

2.3 Service 与 DNS 的关系

DNS 为 Service 提供域名解析支撑,是集群内服务便捷访问的基础。集群内所有Service都会自动生成专属域名,Pod无需配置复杂的IP映射,直接通过Service域名即可完成跨Pod、跨服务通信,彻底规避IP变动带来的服务访问问题。

三、K8s 容器化微服务架构

3.1 服务架构演进

传统服务架构逐步向K8s容器化微服务演进,核心分为三个阶段:
  • 单体架构:所有业务进程、代码、模块全部部署在单台主机中,架构简单,但容错性差、扩容困难、迭代效率低,单故障点会导致整体服务瘫痪。
  • 分布式架构:将服务拆分后部署在多台不同主机,单台主机故障仅影响局部服务,不会导致整体业务瘫痪,容错性、扩展性优于单体架构,但运维复杂度大幅提升。
  • 容器化微服务架构:基于Docker容器+K8s编排实现,将拆分后的微服务容器化部署,依托K8s核心组件实现服务自动化部署、高可用保障、快速迭代、弹性扩容,是目前企业主流的服务架构方案。

3.2 K8s微服务落地场景示例

我们可以将整个K8s集群类比为一个IDC机房,以LNMT架构(Linux+Nginx+MySQL+Tomcat)应用为例,可将传统Web架构完整落地为K8s微服务:
通过不同控制器管理各类服务Pod:Deployment部署Nginx、Tomcat无状态Web服务,StatefulSet部署MySQL有状态数据库服务;通过Label对前端、后端、数据库服务做资源分组;通过Service统一暴露各类服务接口,实现负载均衡;依托集群DNS实现服务域名互通,最终搭建出一套高可用、可弹性伸缩、易运维的容器化微服务集群。

四、核心总结

1. Pod是K8s最小运行单元,承载所有业务容器,具备动态临时性;
2. Controller负责Pod全生命周期运维,不同控制器适配无状态、有状态、定时任务等各类场景;
3. Label与Label Selector是K8s资源关联、分组、筛选的核心纽带;
4. Service+Endpoints+DNS 共同构建集群稳定的服务发现与访问体系,屏蔽底层Pod变动;
5. K8s通过整套核心组件的协同工作,实现了传统架构向自动化、高可用、可扩展的容器化微服务架构升级。
 4

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2