一、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 状态的机制。
  • 突出“工作负载”是对象的一类,包含哪些类型、用途与典型场景。
  • 强调资源分类细化:工作负载之外还有配置、网络、存储等类别对象。