文章中如果有图看不到,可以点这里去 csdn 看看。从那边导过来的,文章太多,没法一篇篇修改好。

【K8S】Kubernetes 核心资源与工作原理

Kubernetes(K8s)是目前最广泛使用的容器编排平台,其核心思想是 通过声明式 API 来管理资源对象(Resources),并由控制器(Controller)不断将实际状态(Actual State)与期望状态(Desired State)对齐。

这些资源对象构成了 Kubernetes 的全景生态。本文将对 核心资源 进行深入解析,涵盖 计算、调度、存储、网络、安全、配置与运维 六大方面,并通过文字、实例与可视化图表来阐述它们之间的关系。


一、基础资源与逻辑隔离

1. Namespace(命名空间)

作用

  • 提供逻辑隔离(适合多租户、多环境)。
  • 结合 RBAC 控制权限范围。
  • 配合 ResourceQuota 限制资源使用量。

特性

  • 命名空间内的资源名称唯一,不同命名空间可重名。
  • 不属于命名空间的资源:Node、PV、ClusterRole、ClusterRoleBinding 等。

场景

  • 按环境划分:devtestprod
  • 按业务划分:paymentrecommendationmonitoring

2. Node(节点)

作用

  • Pod 的运行载体,集群的工作单元。

组成

  • kubelet:负责 Pod 生命周期管理。
  • kube-proxy:实现 Service 的流量转发。
  • 容器运行时:Docker / containerd / CRI-O。

原理

  • 调度器选择合适 Node → API Server 下发调度信息 → kubelet 拉取镜像并启动容器。

二、工作负载(Workload)

工作负载资源是 K8s 的应用核心,主要解决应用 调度、扩缩容、弹性与高可用

3. Pod

定义:最小调度单元,封装一组共享网络和存储的容器。

关键点

  • Pause 容器:提供 Pod 的网络命名空间。
  • 同一 Pod 内容器共享 IP 和 Volume
  • 生命周期管理:Init Container、Sidecar、主容器。

4. ReplicaSet

作用

  • 确保指定数量的 Pod 副本一直存在。
  • Deployment 底层依赖它来管理 Pod。

5. Deployment

定义:声明式管理 无状态应用

特性

  • 滚动更新(Rolling Update)和回滚(Rollback)。
  • 支持扩缩容(HorizontalPodAutoscaler 结合使用)。
  • 管理 Pod 模板,底层依赖 ReplicaSet。

场景:Web 服务、API 服务。


6. StatefulSet

定义:有状态应用的控制器。

特性

  • Pod 有序编号(app-0, app-1)。
  • 与 PVC 一一绑定,保证数据持久化。
  • 依赖 Headless Service 维持固定网络标识。

场景:数据库(MySQL、PostgreSQL)、消息队列(Kafka、RabbitMQ)。


7. DaemonSet

作用:保证每个 Node 上运行一个 Pod。

场景

  • 节点监控(Prometheus Node Exporter)。
  • 日志收集(Fluentd、Filebeat)。
  • CNI 插件(Calico、Cilium)。

8. Job / CronJob

Job:运行一次性任务,确保至少执行一次。
CronJob:周期性任务,基于 Cron 表达式调度。

场景

  • 数据批处理。
  • 定时备份数据库。
  • 生成周期性报表。

三、网络资源

9. Service

作用:为 Pod 提供稳定的访问入口。

类型

  • ClusterIP(默认,集群内访问)。
  • NodePort(节点对外暴露端口)。
  • LoadBalancer(外部负载均衡)。
  • Headless Service(无 ClusterIP,直连 Pod)。

原理

  • kube-proxy 维护转发表。
  • 通过 iptables 或 IPVS 实现四层负载均衡。

10. Ingress

作用:七层网关,提供基于域名/路径的流量转发和 TLS。

关键点

  • 需要 Ingress Controller(Nginx、Traefik、HAProxy)。
  • 支持 SSL 终止、Rewrite、流量分流。

场景

  • 对外暴露 API 服务。
  • 基于域名的多租户路由。

11. NetworkPolicy

作用:限制 Pod 之间的流量,实现零信任网络。

特性

  • 控制 Ingress / Egress。
  • 默认拒绝(deny all)+ 白名单允许。
  • 需要 CNI 插件支持(Calico、Cilium)。

四、存储资源

12. Volume

定义:Pod 内部存储卷,生命周期随 Pod。

13. PersistentVolume(PV) & PersistentVolumeClaim(PVC)

PV:集群级别的存储抽象。
PVC:用户请求存储的声明。

绑定方式

  • 静态绑定(管理员预先创建 PV)。
  • 动态供应(StorageClass 自动创建 PV)。

14. StorageClass

作用:定义存储策略(存储类型、回收策略)。

场景

  • 云环境:EBS、GCE PD、Azure Disk。
  • 分布式存储:Ceph RBD、GlusterFS。

五、配置与安全资源

15. ConfigMap

作用:存放非敏感配置(应用配置、环境变量)。

使用方式

  • 环境变量注入。
  • Volume 挂载。

16. Secret

作用:存放敏感数据(密码、证书、Token)。

安全性

  • 默认 base64 存储(需额外加密,结合 KMS/SealedSecret)。

17. ServiceAccount

作用:Pod 在集群内与 API Server 交互的身份。


18. Role / ClusterRole & RoleBinding / ClusterRoleBinding

作用:基于 RBAC 的访问控制。

区别

  • Role/RoleBinding:作用于 namespace。
  • ClusterRole/ClusterRoleBinding:作用于整个集群。

六、集群级别与控制资源

19. API Server

作用:集群的唯一入口,处理所有资源对象的 CRUD。


20. Controller Manager

作用:运行各种控制器,保持集群状态一致。


21. Scheduler

作用:为 Pod 选择最优的 Node。

调度策略

  • 资源过滤(资源足够的节点)。
  • 打分排序(亲和性、反亲和性、优先级)。

22. etcd

作用:Kubernetes 的分布式键值存储。

特性

  • Raft 共识算法。
  • 存储所有资源对象的期望状态。

七、资源关系全景图

Kubernetes 集群
Namespace
Deployment
ReplicaSet
Pod
StatefulSet
DaemonSet
Job / CronJob
Service
Ingress
PersistentVolumeClaim
PersistentVolume
StorageClass
ConfigMap
Secret
ServiceAccount
Role/ClusterRole + Binding
API Server
etcd
Controller Manager
Scheduler
Node
NetworkPolicy

八、总结

Kubernetes 的核心资源可归纳为:

  1. 调度与计算:Pod、Deployment、StatefulSet、DaemonSet、Job。
  2. 网络与服务发现:Service、Ingress、NetworkPolicy。
  3. 存储与数据持久化:PV、PVC、StorageClass、Volume。
  4. 配置与安全:ConfigMap、Secret、RBAC、ServiceAccount。
  5. 集群控制平面:API Server、Scheduler、Controller Manager、etcd。

这些资源对象通过 API Server 统一管理,形成了一个自愈(Self-Healing)、声明式(Declarative)、可扩展(Extensible)的云原生平台。

posted @ 2025-10-04 20:37  NeoLshu  阅读(0)  评论(0)    收藏  举报  来源