Kubernetes 资源分类
一、工作负载型资源(Workload Resources)
管理容器化应用的部署和执行
1. Pod
-
最小部署单元:包含一个或多个容器(紧密耦合)
-
特点:
- 共享网络命名空间(相同IP)
- 共享存储卷(Volumes)
- 临时性(ephemeral)设计
-
典型配置:
apiVersion: v1 kind: Pod metadata: name: nginx-pod spec: containers: - name: nginx image: nginx:1.19 ports: - containerPort: 80
2. Deployment
- 无状态应用管理:提供声明式更新
- 核心功能:
- 滚动更新(RollingUpdate)
- 回滚(Rollback)
- 副本数维护(Replicas)
- 示例场景:Web服务、API服务
3. StatefulSet
- 有状态应用管理:
- 稳定的网络标识(PodName-{0..N})
- 持久化存储(PVC模板)
- 有序部署/扩展
- 典型应用:数据库(MySQL集群)、ZooKeeper
4. DaemonSet
- 节点级部署:
- 每个Node运行一个Pod副本
- 新Node加入时自动部署
- 使用场景:
- 日志收集(Fluentd)
- 节点监控(Node Exporter)
- 网络插件(Calico)
5. Job/CronJob
- 任务型工作负载:
- Job:一次性任务(批处理)
- CronJob:定时任务(类Crontab)
- 特性:
- 任务完成保证(completions)
- 并行控制(parallelism)
二、服务发现与负载均衡(Service & Ingress)
管理应用访问方式
1. Service
-
服务抽象:为一组Pod提供稳定访问点
-
类型:
- ClusterIP(默认,集群内访问)
- NodePort(节点端口暴露)
- LoadBalancer(云厂商LB集成)
- ExternalName(CNAME映射)
-
选择器机制:
selector: app: frontend tier: web
2. Ingress
- L7路由管理:
- 基于Host/Path的路由规则
- TLS终止
- 需配合Ingress Controller使用:
- Nginx Ingress
- Traefik
- ALB Ingress Controller
三、配置与存储资源
1. ConfigMap
-
非敏感配置分离:
- 环境变量
- 配置文件(挂载为Volume)
-
创建方式:
kubectl create configmap game-config --from-file=config.properties
2. Secret
- 敏感信息管理:
- 类型:Opaque(通用)、docker-registry、tls
- Base64编码存储(非加密!)
- 安全建议:
- 配合RBAC使用
- 考虑Vault集成
3. Volume/PersistentVolume
- 存储抽象:
- Volume:Pod级存储声明
- PersistentVolume (PV):集群存储资源
- PersistentVolumeClaim (PVC):用户存储请求
- 常用Volume类型:
- emptyDir(临时目录)
- hostPath(节点目录,慎用)
- CSI(云存储接口)
四、集群级资源
1. Namespace
-
虚拟集群隔离:
- 资源配额限制(ResourceQuota)
- 默认命名空间:default, kube-system
-
操作隔离:
kubectl get pods --namespace=production
2. ResourceQuota
-
资源配额限制:
- 计算资源(CPU/Memory)
- 对象数量(Pods数)
-
示例:
spec: hard: pods: "20" requests.cpu: "10"
3. HorizontalPodAutoscaler (HPA)
- 自动扩缩容:
- 基于CPU/Memory指标
- 支持自定义指标(Prometheus)
- 配置要点:
- 目标利用率(targetUtilization)
- 最小/最大副本数
五、安全相关资源
1. ServiceAccount
- 身份认证:
- Pod访问API Server的凭证
- 默认绑定default SA
2. Role/RoleBinding
-
RBAC授权:
- Role:命名空间内权限规则
- RoleBinding:绑定角色到主体
-
示例:
rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "watch", "list"]
3. ClusterRole/ClusterRoleBinding
- 集群级RBAC:
- 跨命名空间权限管理
- 预定义ClusterRoles:
- view/edit/admin/cluster-admin
六、扩展资源(Custom Resources)
1. CustomResourceDefinition (CRD)
- 自定义API资源:
- 扩展K8S API
- 需配合Controller使用
- 典型用例:
- Operator模式(如ETCD Operator)
- 业务特定资源定义
2. Operator
- 自定义控制器:
- 通过CRD+Controller实现
- 自动化复杂应用管理
资源分类速查表
分类 | 主要资源 |
---|---|
工作负载 | Pod, Deployment, StatefulSet, DaemonSet, Job, CronJob |
服务发现 | Service, Ingress, Endpoints |
配置存储 | ConfigMap, Secret, Volume, PersistentVolumeClaim |
集群管理 | Namespace, ResourceQuota, LimitRange, HorizontalPodAutoscaler |
安全 | ServiceAccount, Role, RoleBinding, ClusterRole, NetworkPolicy |
扩展资源 | CustomResourceDefinition (CRD), Operator |
评论需开启科学上网!