一、Kubernetes 对象(对象、工作负载与资源类型)
1. 对象(Object)概述
在 Kubernetes 中,“对象”是集群中的持久化实体,用于表示集群的状态。通过创建对象,用户定义了集群所期望的“期望状态”(desired state),Kubernetes 控制平面会不断地驱动实际状态(status)朝向期望状态调整,保持系统一致性 :contentReference[oaicite:1]{index=1}。
对象通常包含以下字段:
spec:用户定义的期望状态(desired state)。status:控制平面反馈的当前状态(actual state) :contentReference[oaicite:2]{index=2}。
对象涵盖了几乎 Kubernetes 所有可创建资源,例如:
- 工作负载对象(Workload)
- Service、ConfigMap、Secret、Ingress
- 网络策略(NetworkPolicy)
- 持久卷(PersistentVolume)、持久卷声明(PersistentVolumeClaim)、StorageClass
这些资源统一称作“对象”,而不是混用“服务”(service)一词,以避免与 Kubernetes 内建的 Service 概念冲突 :contentReference[oaicite:3]{index=3}。
2. 工作负载(Workload)
2.1 什么是工作负载?
工作负载是指用于运行应用程序在 Kubernetes 中的对象,通常是由 Pod 和控制器(controller)共同保障的运行方式。Kubernetes 不建议直接管理 Pod,而是使用工作负载对象,通过控制器自动维护 Pod 的副本数、升级、恢复等 :contentReference[oaicite:4]{index=4}。
2.2 常见工作负载类型
Kubernetes 内建的工作负载类型包括:
- Pod:最小部署单元,封装一个或多个容器。
- ReplicationController / ReplicaSet:保证指定数量的 Pod 副本持续运行(ReplicationController 已被 ReplicaSet 逐步替代):contentReference[oaicite:5]{index=5}。
- Deployment:管理 ReplicaSet,实现滚动更新、回滚、声明式升级。
- StatefulSet:用于带状态应用,每个 Pod 拥有稳定标识和持久存储(例如数据库)。
- DaemonSet:确保每个节点(或指定节点)上运行一个 Pod(如节点级别代理服务)。
- Job 与 CronJob:一次性任务或周期任务控制器。
这些控制器共同构成了 Kubernetes 的工作负载生态,有助于应用部署、扩缩容、容错和滚动升级等场景 :contentReference[oaicite:6]{index=6}。
2.3 扩展工作负载
用户还可以通过 CRD(Custom Resource Definition)及自定义 Controller 创建自定义工作负载。前提是 CRD 中应包含:
- Pod 模板 (
pod spec或引用) status子资源反映当前状态- 支持水平扩缩容的
scale子资源 - 标签选择器 (
selector) 用于关联 Pod :contentReference[oaicite:7]{index=7}。
3. Kubernetes 对象类型分类说明
整理如下分类结构,有助于理解:
| 分类层级 | 内容描述 | 说明 |
|---|---|---|
| 对象(Object) | 所有通过 Kubernetes API 创建的资源类型 | 包括工作负载、Service、ConfigMap、Ingress 等,统一归为“对象”范畴。 |
| 工作负载(Workload) | 特定用于应用部署的对象子类型 | 包括 Pod、Deployment、DaemonSet、StatefulSet、Job、CronJob、ReplicaSet 等。不是独立资源,而是多个控制器的集合概念。 |
| 其他对象类型 | 应用部署以外的资源对象 | 比如 Service、ConfigMap、Secret、Ingress、网络策略、PV/PVC、StorageClass 等。 |
特别说明:
Service在 Kubernetes 中已有特定含义(网络抽象层),因此在分类时也统一归入“对象”,避免术语混淆。
4. 术语演变与统一说明
- 以前常用“service”泛指可创建资源(比如业务服务),但 Kubernetes 中已将其作为特定 API 姿态(Service 对象用于网络访问)。
- 当前技术规范统一使用“对象”(Object)描述所有资源类型。
- “工作负载”是指实现应用部署功能的对于对象的集合概念,而非新增资源。
5. 示例内容整理(补充内容建议)
- 明确“对象”的模型(spec/status/metadata):描述 Kubernetes 保持 desired vs actual 状态的机制。
- 突出“工作负载”是对象的一类,包含哪些类型、用途与典型场景。
- 强调资源分类细化:工作负载之外还有配置、网络、存储等类别对象。