当前位置: 首页 > news >正文

Kubernetes脉络:从基础概念到核心架构的认知框架

引言

        在云计算和容器化技术飞速发展的今天,Kubernetes 作为容器编排领域的佼佼者,已经成为众多企业和开发者构建和管理应用的得力工具。它从最初的容器编排解决方案,摇身一变成为如今集自动化部署、扩缩容、服务发现等多种功能于一体的云原生平台。本文将避开繁杂的技术细节,专注于厘清K8s的基础概念、架构设计和核心资源模型,为初学者构建一个清晰的认知框架。

一、基础概念

1.1 Kubernetes 简介‌

Kubernetes(通常简称为K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。

功能类别

核心能力

应用场景与价值

容器编排

自动化部署、管理容器化应用

统一管理微服务架构,简化复杂应用的部署和维护

弹性伸缩

基于 CPU/内存或自定义指标自动扩缩容

应对流量高峰(如电商大促),空闲时自动缩减资源降低成本

服务发现与负载均衡

为 Pod 提供稳定 IP/DNS,自动分发流量

微服务间通信无需手动配置 IP,服务中断时自动切换流量

存储管理

动态挂载本地/云存储(如 NFS, AWS EBS)

数据库持久化存储、配置文件共享

配置与密钥管理

集中管理 ConfigMap 和 Secret

安全存储数据库密码,动态更新应用配置无需重启容器

自我修复

自动重启容器、替换故障节点

节点宕机时自动迁移服务,保障业务连续性

滚动更新与回滚

分批次更新应用,支持版本回退

实现零停机的应用升级,故障时秒级回滚到稳定版本

批处理任务

管理 CronJob 和一次性任务

定时执行日志清理、批量数据处理等离线任务

多环境一致性

统一管理开发、测试、生产环境

解决“在我机器上能运行”问题,提升交付效率

多云/混合云支持

跨公有云、私有云统一部署应用

避免云厂商锁定,实现灾备和多云负载均衡

1.2 核心架构与组件‌

Kubernetes 采用主从架构‌,分为控制平面(Control Plane)和工作节点(Worker Nodes)。

上图来源:https://kubernetes.io/zh-cn/docs/concepts/architecture/

1.2.1 控制平面(Control Plane)‌

负责集群的全局决策和状态管理,通常部署在独立的 Master 节点上。

组件

核心功能

关键特性

kube-apiserver

集群的 ‌API 入口‌,接收并验证所有请求(如 kubectl 命令)

RESTful 接口,唯一与 etcd 通信的组件

etcd

分布式键值数据库,存储集群所有配置、状态和元数据

高可用、强一致性,集群的“唯一数据源”

kube-scheduler

监听未调度的 Pod,根据资源需求、策略等将其分配到合适的工作节点

支持自定义调度策略(如节点亲和性)

kube-controller-manager

运行核心控制循环,确保集群状态与预期一致:

• 节点控制器(监控节点状态)

• 副本控制器(维持 Pod 副本数)

• 端点控制器(关联 Service 与 Pod)

自动化修复(如节点故障时重建 Pod)

cloud-controller-manager

集成云服务商功能(如 AWS/GCP),管理节点、负载均衡器、存储卷等

解耦 Kubernetes 与底层云平台

1.2.2 工作节点(Worker Nodes)‌

运行容器化应用,每个节点包含以下组件:

组件

核心功能

关键特性

kubelet

节点上的“代理”,管理 Pod 生命周期:

• 启动/停止容器

• 监控容器健康状态

• 报告节点状态到控制平面

仅管理 Kubernetes 创建的容器

kube-proxy

(可选)

实现 Service 的网络代理:

• 维护网络规则(iptables/IPVS)

• 提供负载均衡和流量转发

支持 ClusterIP、NodePort 等 Service 类型

容器运行时

运行容器的引擎(如 containerd、CRI-O)

遵循 CRI(容器运行时接口)标准

1.2.3 核心抽象对象‌

Kubernetes 通过抽象对象管理应用:

对象

作用

示例场景

Pod

最小部署单元,包含 1 个或多个共享网络/存储的容器

Web 应用容器 + 日志收集 Sidecar 容器

Service

为一组 Pod 提供固定访问入口(IP/DNS)和负载均衡

前端应用通过 Service 访问后端数据库集群

Deployment

管理 Pod 副本集,支持滚动更新、回滚

无状态应用(如 Nginx)的版本升级

ConfigMap

存储非敏感配置数据(如环境变量)

应用配置文件(数据库地址、日志级别)

Secret

存储敏感数据(密码、密钥),Base64 编码

数据库密码、TLS 证书

Volume

为 Pod 提供持久化存储

数据库数据存储(如挂载 AWS EBS 卷)

二、核心资源与控制器

2.1 工作负载资源

工作负载资源是 Kubernetes 中‌管理 Pod 部署和生命周期的抽象对象

核心资源:

资源分组

核心资源

设计目标与核心能力

典型应用场景

无状态应用

Deployment, ReplicaSet

• Deployment滚动更新/回滚副本扩缩容声明式管理

• ReplicaSet确保指定数量Pod运行通常不直接操作

DeploymentWeb服务、API、无状态计算服务等

ReplicaSetPod副本管理(Deployment底层)

有状态应用

StatefulSet

• 稳定的唯一身份标识

• 有序优雅的部署与扩缩容

• 持久化存储绑定

数据库集群、消息队列、注册中心等有状态应用

节点代理服务

DaemonSet

• 节点级守护进程

• 自动供应

• 确保所有匹配节点运行Pod副本

日志收集器、监控代理、网络插件等系统服务

批处理任务

Job, CronJob

• Job一次性任务(批处理)

• CronJob定时任务(备份、清理)

数据处理、备份任务、镜像构建等(Job)

每日报表、定时清理等(CronJob)

2.2 网络与通信

2.2.1 网络模型的核心功能

Kubernetes 网络模型是一个复合体,其核心功能可以概括为以下四点,它们共同协作,缺一不可:

  1. 基础网络互通‌:确保集群内所有Pod之间能够直接通信,无论它们是否在同一个节点上,这是所有高级功能的基础。
  2. 服务发现与负载均衡‌:为动态变化的Pod集合提供一个稳定的访问地址,并将流量合理地分发到后端健康的Pod上。
  3. 访问入口网关‌:管理从集群外部到内部服务的访问流量。
  4. 网络访问控制‌:对Pod之间的流量进行限制,实现网络分段和安全隔离。

2.2.2 核心资源详解

上述流程中涉及的核心组件,其机制、场景和必要性如下表所示:

资源/组件

核心机制

应用场景

是否必须/可被替代

Pod 网络

通过 CNI (容器网络接口) 插件实现,

为每个Pod分配唯一的集群IP,并负责Pod与Pod之间的直接通信。

微服务间内部通信、数据同步。

是基础‌,必须由CNI插件实现,但插件本身(如Calico, Flannel)可替换。

Service

kube-proxy‌ 监视 Service 和 EndpointSlice,并通过配置 ‌iptables‌ 或 ‌IPVS‌ 规则,

实现虚拟IP到实际Pod IP的负载均衡与转发。

为一组Pod(如微服务实例)提供‌内部‌服务发现和稳定的访问端点。

几乎是必需的‌。虽然极端情况下可以直接用Pod IP,但鉴于Pod的动态性,Service 提供的稳定性对于服务间调用至关重要。

Ingress / Gateway API

Ingress Controller‌(如Nginx, Traefik)监听Ingress资源,并作为‌反向代理‌根据规则(如域名、路径)将外部HTTP/HTTPS流量路由到后端Service。Gateway API 是其演进版本,功能更强大。

作为集群的‌边缘网关‌,处理外部访问、SSL终止、基于域名的虚拟主机等。

功能上必要,实现可替代‌。您需要一个机制将外部流量引入集群。您可以使用K8s的Ingress/Gateway API,也可以自建Nginx,或将Service类型设为LoadBalancer直接暴露。

NetworkPolicy

由‌网络插件‌(如Calico, Cilium)实施,本质上是作用于Pod的‌防火墙规则‌。

实现网络微隔离,例如:

• 禁止数据库Pod被非指定服务访问。

• 实现微服务间按需通信。

非必需,但强烈推荐‌。可以选择不使用,但这会牺牲安全性。其实现依赖于支持该功能的CNI插件。

2.2.3 云原生时代下的微服务Spring Cloud Gateway和Eureka的定位思考

核心结论:从“必需品”变为“可选项”

Spring Cloud Gateway‌ 和 ‌Eureka‌ 已从微服务架构的核心组件,转变为需要根据具体需求权衡的技术选型。

技术对比:原生方案 vs. Spring Cloud

特性

Kubernetes 原生方案

Spring Cloud 方案

服务发现

Service + EndpointSlice‌(自动、无需编码)

Eureka‌(需客户端集成与心跳维护)

API 网关

Ingress / Gateway API‌(基础设施层)

Spring Cloud Gateway‌(应用层,编程控制)

技术绑定

语言无关,通用标准

深度绑定 Java/Spring 技术栈

治理能力

提供基础路由与负载均衡

提供丰富的编程式过滤器、限流、熔断等能力

行业趋势与混合模式

使用 Kubernetes Service 进行基础的服务发现,同时继续使用 Spring Cloud Gateway 来处理需要精细控制的业务层路由和过滤逻

选型决策建议

        1. Spring Cloud Gateway

  • ✅ 保留价值:处理‌业务层流量治理‌(复杂路由、API聚合、自定义过滤)
  • ❌ 避免场景:简单路由/TLS终止等基础功能(使用Ingress替代)
  • ⚡ 最佳实践:作为独立Pod部署,通过K8s Service暴露

        2. ‌Eureka

  • ⚠️ 定位:‌技术债务处理器‌而非新架构选择
  • 🔄 迁移路径:

  • 🚫 新项目:严格使用K8s Service+DNS发现

2.3 存储管理

Kubernetes 存储管理的本质是‌为容器化应用提供持久化、可靠且可扩展的数据存储解决方案的体系‌。它通过抽象底层存储基础设施,实现了:

2.3.1 存储工作流模式

Kubernetes存储工作流提供了灵活的资源供应模式:

  • 静态供应‌:完全掌控存储资源配置,适合固定环境
  • 动态供应‌:自动化按需分配,适合云原生环境
  • 混合模式‌:结合两者优势,满足多样化需求

静态供应与动态供应对比总览:

特性

静态供应

动态供应

核心流程

管理员先创建PV → 用户创建PVC

用户创建PVC → 系统自动创建PV

资源准备

手动预先配置存储资源

按需即时创建存储资源

适用场景

特定存储需求、固定配置环境

弹性环境、云原生应用

管理开销

高(需手动管理PV)

低(自动化管理)

灵活性

扩展性

有限

优秀

2.3.2 动态供应

定义:

‌        动态供应是Kubernetes存储管理的核心机制,它允许用户按需自动创建存储资源,无需管理员预先手动配置。这种机制解决了传统存储管理中资源预分配的痛点,实现了"申请即用"的存储消费模式。

核心价值‌

  1. ‌自动化‌:从申请到创建完全自动化
  2. 按需分配‌:需要时才创建,避免资源浪费
  3. 简化操作‌:开发者只需关心"要什么",不用知道"怎么实现"

动态供应时序图如下:

详细步骤解说:

1、步骤1-3:存储需求传递‌

  • 步骤1:开发者创建PVC,就像在餐厅点菜一样,只需要说"我要10GB的高速SSD存储"
  • 步骤2‌:Kubernetes找到对应的"菜单"——StorageClass配置
  • 步骤3‌:系统根据菜单找到对应的"厨师"——CSI驱动

2、步骤4-5:云平台资源创建‌

  • 步骤4‌:CSI驱动调用云厂商的API,就像厨师联系食材供应商
  • 步骤5‌:云厂商创建真实的云硬盘并返回ID,就像供应商送来食材

3、步骤6-7:K8s内部资源抽象‌

  • 步骤6‌:CSI驱动在K8s中创建PV对象,代表"这道菜已经准备好了"

4、步骤8-10:应用部署准备‌

  • ‌步骤8‌:开发者创建Pod并指定使用前面申请的存储
  • 步骤9‌:调度器选择合适的节点运行Pod
  • 步骤10‌:节点上的Kubelet请求挂载存储

5、步骤11-13:最终挂载完成‌

  • 步骤11-12‌:CSI驱动与云平台协作,将云盘实际挂载到节点

动态供应核心组件详解:

组件

角色

关键功能

生命周期

PersistentVolumeClaim (PVC)

存储需求声明

定义所需存储特性(大小、性能等)

与应用生命周期相关

StorageClass

存储模板

定义动态供的行为和参数

长期存在,集群级资源

CSI驱动

存储插件

对接底层存储系统实现具体操作

集群部署,长期运行

PersistentVolume (PV)

存储资源实例

代表实际的存储资源

动态创建,与PVC绑定

云存储提供商

基础设施

提供物理/虚拟存储资源

独立于Kubernetes集群

流程总结:

        开发者提交PVC后,Kubernetes通过CSI接口调用云厂商的API,在云平台上创建真实的存储资源,然后自动完成挂载流程‌。这套机制让复杂的存储基础设施对开发者变得透明,实现了真正的"基础设施即代码"。

这个流程完美体现了云原生的核心理念:‌声明式API + 可扩展架构 + 自动化运维‌。

2.3.3 Kubernetes存储机制与传统Docker挂载NFS的对比分析

        这两种存储挂载方式高度相关,但实现机制处于不同的抽象层次‌。传统Docker挂载NFS是基础操作,而Kubernetes PV/PVC机制是在此基础上构建的高级抽象。

核心区别对比

特性

Docker直接挂载

Kubernetes PV/PVC

配置方式

命令行/Compose文件

声明式YAML配置

存储抽象

无抽象,直接路径

PV/PVC抽象层

生命周期

与容器/主机绑定

独立于Pod生命周期

多节点支持

每节点单独配置

集群统一管理

动态供

不支持

支持(需Provisioner)

存储类型

仅NFS

支持多种存储后端

权限管理

手动配置

通过StorageClass控制

2.3.4 常用卷类型对比

卷(Volume)‌ 是 Kubernetes 中用于为 Pod 提供持久化或临时存储的抽象概念。它是 Pod 中的一个目录,可供容器访问,其生命周期由卷类型决定。

类型

特点

适用场景

生命周期

emptyDir

临时存储,随Pod删除而销毁

缓存文件、临时数据处理

与 Pod 相同

hostPath

挂载节点本地目录(慎用)

监控代理访问节点文件系统

独立于 Pod

(节点重启后保留)

nfs

网络文件系统

多Pod共享读/写(如媒体库)

独立于集群

需手动管理

awsEBS/gcePD

云厂商块存储

数据库持久化数据

独立于集群

需手动删除

configMap/secret

将配置/密钥作为文件挂载

应用配置文件、TLS证书

与 ConfigMap/Secret 对象相同

2.3.5 实际应用场景

数据库存储场景:‌

  • 使用:StatefulSet + PVC
  • 存储:动态申请云盘(如MySQL数据目录)
  • 特点:数据持久化、有序部署

配置管理场景:‌

  • 使用:ConfigMap挂载为卷
  • 效果:配置修改后自动同步到Pod

三、高级特性

3.1 工作负载与调度进阶‌

3.1.1 高级调度策略

Kubernetes高级调度策略通过精细控制Pod的部署位置和分布方式,优化集群资源利用并满足各类业务需求。

调度策略

控制对象

主要作用

解决的问题

应用场景

优先级(强制执行力度)

节点亲和性

Pod与节点

控制Pod在特定节点上的部署

硬件资源匹配问题

(如GPU节点、高内存节点)

硬件优化

Pod亲和性

Pod与Pod

控制Pod之间的协同部署位置

服务拓扑优化问题

(如缓存与计算服务就近部署)

服务拓扑

Pod反亲和性

Pod与Pod

防止Pod过度集中

高可用性问题

(避免单点故障影响多个副本)

高可用部署

污点与容忍

节点与Pod

创建专用节点区域

节点隔离问题

(如专用GPU节点、预留测试节点)

专用节点

最高

拓扑分布约束

Pod分布域

跨拓扑域均匀分布Pod

容灾部署问题

(跨机架/可用区/区域部署)

容灾部署

自定义调度器

调度逻辑

实现特殊调度逻辑

特殊业务需求问题

(如批处理作业调度)

特殊需求

自定义

3.1.2 资源管理与服务质量 (QoS)‌

核心机制解析

        1. ‌QoS作用

根据Pod的资源请求(requests)和限制(limits)分配服务质量等级,决定资源竞争时的优先级和驱逐顺序‌。分为:

  • Guaranteed‌:严格资源保障(requests=limits),资源不足时最后被驱逐‌
  • Burstable‌:弹性资源分配(部分设置requests),中等驱逐优先级‌
  • BestEffort‌:无资源保证(未设requests/limits),资源紧张时优先被驱逐‌

        2. 资源管理组件

  • LimitRanges‌:强制约束Pod/容器的资源请求与限制范围
  • ResourceQuotas‌:限制命名空间级别的总资源用量

两者共同确保资源声明符合QoS分级前提

3.2 网络、安全与策略‌

3.2.1 核心安全领域与架构总览

        下图架构展示了Kubernetes安全防护的层次化设计理念,通过身份认证与授权作为安全基础,网络隔离与控制作为防护边界,机密信息管理作为数据保障,共同构建了深度防御的安全体系。

关键组件介绍见下面3个小节

3.2.2 身份认证与授权

此领域确保用户和工作负载具有明确的、最小化的身份与权限,是访问控制的基石。

安全组件

安全角色

核心功能

控制粒度

关键依赖/关联

RBAC

访问控制

Kubernetes核心权限模型,定义谁可以在集群中执行什么操作控制对API资源(如Pod、Service)的操作权限(如get, list, create)。

用户/服务账号

API Server

ServiceAccount

工作负载身份

为在Pod中运行的进程提供身份标识,是工作负载访问API Server的凭证。

Pod级别

RBAC (通过RoleBinding授权)

Pod安全标准 (PSS)

运行时安全

通过准入控制器定义Pod必须遵守的安全约束(特权、能力等),提供基线、限制等策略级别。

Pod级别

准入控制器 (如PodSecurity)

3.2.3 网络隔离与控制‌

此领域控制集群内外的网络流量,实现微服务间的安全通信与隔离。

安全组件

安全角色

核心功能

控制粒度

关键依赖/关联

网络策略 (NetworkPolicy)

微隔离

定义Pod组之间允许的入站(Ingress)和出站(Egress)规则,充当集群内防火墙。

Pod级别

CNI网络插件

服务网格 (Service Mesh)

服务安全

提供自动mTLS加密、基于身份的细粒度策略、可观测性等高级安全与控制。

服务/工作负载级别

控制平面 (如Istio),ServiceAccount

Ingress控制器

边界安全

在集群入口层面提供TLS终止、路由、以及与外部的OAuth/OpenID Connect认证服务集成。

HTTP/HTTPS路由级别

Ingress资源

3.2.4 机密信息管理‌

此领域确保密码、令牌、证书等敏感信息的安全存储、分发和使用。

安全组件

安全角色

核心功能

控制粒度

关键依赖/关联

Secrets

机密存储

Kubernetes内建资源,用于以加密形式存储少量敏感数据,是机密管理的基础。

命名空间级别

etcd (加密存储)

外部Secrets集成

密钥扩展

将专业外部密钥管理系统(如HashiCorp Vault, AWS Secrets Manager)与Kubernetes无缝集成。

集群/应用级别

外部密钥库,Operator (如ESO)

3.3 自动化与弹性‌

此领域涵盖Kubernetes保障应用高可用性与资源高效利用的核心机制

3.3.1 自动扩缩容体系

自动扩缩容通过不同维度动态调整资源,以应对负载变化,实现弹性与成本控制。

扩缩类型

控制维度

核心原理与触发指标

适用场景与说明

HPA

(Horizontal Pod Autoscaler)

水平扩缩

基于CPU/内存使用率、自定义指标(如QPS)等,‌动态调整Pod的副本数量‌。

无状态服务‌弹性。最常用的扩缩容方式,适用于几乎所有可水平扩展的工作负载。

VPA

(Vertical Pod Autoscaler)

垂直扩缩

基于历史资源使用分析,‌自动优化Pod的requestslimits配置‌。

资源优化‌。用于解决资源配置不当问题。‌注意‌:由于需要重建Pod,在生产环境中需谨慎使用。

Cluster Autoscaler

(集群自动扩缩)

集群扩缩

监测因资源不足而无法调度的Pod,‌自动调整节点池的节点数量‌。

集群成本控制‌。与HPA联动,确保在应用需要更多Pod时,集群有足够的节点资源。

3.3.2 发布策略与自愈机制

此部分保障应用的可控发布与运行期间的高可用性。

1. 发布策略

通过Deployment等控制器实现平滑的应用升级与流量控制。

  • 蓝绿发布‌:同时部署新旧两个完整环境,通过切换流量实现瞬间发布与回滚。
  • 金丝雀发布‌:将部分用户流量引入新版本,验证无误后逐步扩大范围,实现渐进式发布。

2. 自愈机制

Kubernetes核心功能,确保应用实例始终处于预期状态。

  • 工作负载自愈‌:当Pod因故障退出时,Deployment、StatefulSet等控制器会‌自动重新创建Pod‌,恢复预期副本数。
  • Pod中断预算(PDB)‌:‌保障自愿中断期间的应用可用性‌。通过设置最小可用Pod实例数或最大不可用Pod实例数,在对节点进行维护/驱逐时,防止过多Pod同时中断,确保服务不失衡。

总结:从容器编排到云原生操作系统的演进

        Kubernetes已经超越了其"容器编排器"的初始定位,逐步演进为云原生时代的分布式操作系统内核。它通过一系列精妙的设计,实现了从基础设施抽象到应用生命周期管理的范式变革。

标准化抽象‌:Pod、Service、Ingress、ConfigMap等资源定义了一套通用的"语言",用于描述应用及其依赖。这实现了开发与运维责任的清晰分离,开发者关注业务逻辑,运维者关注平台稳定性。

自动化运维‌:无论是故障自愈、负载均衡,还是滚动更新,其内在驱动力都是控制循环。这些永不疲倦的控制器是自动化的核心引擎,将运维人员从重复性劳动中解放出来。

极致弹性能力‌:从Pod级别的HPA,到节点级别的Cluster Autoscaler,Kubernetes构建了一个多层次、自动响应的弹性体系。

可扩展的生态基石‌:CRD和Operator模式赋予了Kubernetes无限的生命力,使得任何有状态应用、中间件都能以"云原生"的方式被管理和运维。

        Kubernetes不仅仅是一项技术,它更代表了一种构建和运维应用的先进思想。它正在也必将持续地重塑整个软件生命周期,成为未来十年数字化基础设施的坚实底座。

扩展阅读:

博客https://blog.csdn.net/2301_78183285/article/details/138656873

B站视频:https://www.bilibili.com/video/BV13Q4y1C7hS

官网中文文档:https://kubernetes.io/zh-cn/docs/concepts/

http://www.dtcms.com/a/582883.html

相关文章:

  • Ascend C核函数执行全流程深潜:从rtKernelLaunch到硬件执行的完整解密
  • 海澜之家的网站建设目标中文官网资源
  • 食品 网站源码外贸出口公司网站建设方案
  • 沈阳建网站如何建设企业人力资源网站
  • 精准计算,终结经验主义:钢丝绳智能选型重塑吊装安全
  • 汽车智能驾驶 超声波雷达、毫米波雷达和激光雷达
  • 网站开发所需要的条件icp备案号是什么意思
  • 幂数加密(攻防世界)
  • DMA 实践拾遗
  • K8S重启之后无法启动故障排查 与 修复
  • 咸阳专业学校网站建设深圳建筑设计找工作哪个招聘网站
  • 企业营销网站建设规划江西 网站 建设 开发
  • 快速CAD转到PPT的方法,带教程
  • 分布式系统中处理跨服务事务的常见方案
  • 浙江网站建设企业江苏省建设厅 标准化网站
  • html网站开发实例教程做网站的网页
  • 生活用品:为生活量身定制的温柔
  • wordpress手机端网站网站建设知识文章
  • 网站关键词优化是什么郑州关键词排名外包
  • 3dmax物体分段分离切片及转换虚线
  • 注册网站建设开发文件上传网站源码
  • 深入理解 AVL 树:自平衡二叉搜索树的原理与实现
  • py day33 异常处理
  • 网站开发 相册网站备案 地域
  • 基于asp网站开发 论文装潢设计网站
  • 算法763. 划分字母区间
  • JVM组件协同工作机制详解
  • 使用 FastAPI+FastCRUD 快速开发博客后端 API 接口
  • 网站底部版权信息网页游戏开服表大全
  • 系统运维Day02_数据同步服务