以下是 Kubernetes 中常见核心资源的对比表格,帮助理解它们的用途和差异:
 
1. 核心工作负载资源对比
 
| 资源类型 | 主要功能 | 副本管理 | 适用场景 | 关键字段/特性 | 
|---|
| Pod | 最小部署单元,封装容器 | ❌ | 单容器/多容器协作 | containers,volumes | 
| Deployment | 管理 Pod 副本和滚动更新 | ✅ | 无状态应用(如 Web 服务) | replicas,strategy | 
| ReplicaSet | 确保指定数量的 Pod 副本运行 | ✅ | 通常由 Deployment 自动管理 | replicas,selector | 
| StatefulSet | 管理有状态应用的 Pod(唯一标识和顺序) | ✅ | 数据库(如 MySQL、Redis) | serviceName,volumeClaimTemplates | 
| DaemonSet | 每个节点运行一个 Pod。也可以通过 Label、Selector 实现在指定节点上运行 Pod。 | ❌ | 节点级服务(如日志采集) | nodeSelector,tolerations | 
| Job | 运行一次性任务 | ❌ | 批处理任务 | completions,backoffLimit | 
| CronJob | 定时运行 Job | ❌ | 定时任务(如每日备份) | schedule,startingDeadlineSeconds | 
 
2. 网络资源对比
 
| 资源类型 | 主要功能 | 适用场景 | 关键字段/特性 | 
|---|
| Service | 暴露 Pod 的稳定 IP 和端口 | 内部服务访问 | selector,type(ClusterIP, NodePort, LoadBalancer) | 
| Ingress | 提供 HTTP/HTTPS 路由规则 | 外部访问(域名和路径映射) | rules,tls | 
| Endpoint | 记录 Service 后端 Pod 的 IP 列表 | 动态更新 Service 的关联 Pod | 自动生成,无需手动配置 | 
 
3. 配置与存储资源对比
 
| 资源类型 | 主要功能 | 适用场景 | 关键字段/特性 | 
|---|
| ConfigMap | 存储非敏感配置数据(键值对或文件) | 配置文件、环境变量 | data,binaryData | 
| Secret | 存储敏感数据(如密码、证书) | 加密存储敏感信息 | data(base64 编码) | 
| PV (PersistentVolume) | 集群级别的存储资源 | 抽象存储设备(如 NFS、云盘) | capacity,accessModes | 
| PVC (PersistentVolumeClaim) | Pod 对存储资源的请求 | 绑定 Pod 与 PV | resources.requests.storage | 
 
4. 其他关键资源
 
| 资源类型 | 主要功能 | 适用场景 | 
|---|
| Namespace | 逻辑隔离集群资源(如开发、生产环境) | 多租户资源隔离 | 
| HPA (HorizontalPodAutoscaler) | 自动扩缩容 Pod 副本数 | 动态调整负载(基于 CPU/内存) | 
| Role/RoleBinding | 定义 RBAC 权限规则 | 控制用户或服务的访问权限 | 
 
 
5.对比总结
 
- 工作负载管理: - 无状态应用:用 Deployment。
- 有状态应用:用 StatefulSet。
- 节点级服务:用 DaemonSet。
- 批处理任务:用 Job/CronJob。
 
- 网络与访问: - 内部访问:用 Service。
- 外部访问:用 Ingress + Service。
 
- 配置与存储: - 配置文件:用 ConfigMap。
- 敏感数据:用 Secret。
- 持久化存储:用 PV + PVC。
 
- 扩展与安全: - 自动扩缩容:用 HPA。
- 权限控制:用 Role + RoleBinding。
 
6.示例场景
 
- 部署一个 Web 应用: - 使用 Deployment 管理 Pod 副本。
- 使用 Service (ClusterIP) 暴露内部访问。
- 使用 Ingress 配置外部域名访问。
- 使用 ConfigMap 挂载配置文件。
 
- 运行一个数据库: - 使用 StatefulSet 管理有状态 Pod。
- 使用 PVC 绑定持久化存储。
- 使用 Secret 存储数据库密码。