【K8S】Kubernetes 核心资源与工作原理
Kubernetes(K8s)是目前最广泛使用的容器编排平台,其核心思想是 通过声明式 API 来管理资源对象(Resources),并由控制器(Controller)不断将实际状态(Actual State)与期望状态(Desired State)对齐。
这些资源对象构成了 Kubernetes 的全景生态。本文将对 核心资源 进行深入解析,涵盖 计算、调度、存储、网络、安全、配置与运维 六大方面,并通过文字、实例与可视化图表来阐述它们之间的关系。
一、基础资源与逻辑隔离
1. Namespace(命名空间)
作用:
- 提供逻辑隔离(适合多租户、多环境)。
- 结合 RBAC 控制权限范围。
- 配合 ResourceQuota 限制资源使用量。
特性:
- 命名空间内的资源名称唯一,不同命名空间可重名。
- 不属于命名空间的资源:Node、PV、ClusterRole、ClusterRoleBinding 等。
场景:
- 按环境划分:
dev、test、prod。 - 按业务划分:
payment、recommendation、monitoring。
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 的核心资源可归纳为:
- 调度与计算:Pod、Deployment、StatefulSet、DaemonSet、Job。
- 网络与服务发现:Service、Ingress、NetworkPolicy。
- 存储与数据持久化:PV、PVC、StorageClass、Volume。
- 配置与安全:ConfigMap、Secret、RBAC、ServiceAccount。
- 集群控制平面:API Server、Scheduler、Controller Manager、etcd。
这些资源对象通过 API Server 统一管理,形成了一个自愈(Self-Healing)、声明式(Declarative)、可扩展(Extensible)的云原生平台。
本文来自博客园,作者:NeoLshu,转载请注明原文链接:https://www.cnblogs.com/neolshu/p/19513681

浙公网安备 33010602011771号