以下是 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 存储数据库密码。