Kubernetes 资源全景解析

Kubernetes 资源全景解析

Kubernetes 中的资源(Resources)是 Kubernetes API 的核心对象,用来描述应用、网络、存储、配置以及集群本身的行为。理解这些资源,是学好 Kubernetes 的第一步。


一、工作负载资源 (Workload Resources)

管理和运行容器化应用的核心对象。

  1. Pod
    最小部署单元,一个 Pod 可以包含一个或多个紧密耦合的容器。
    示例 YAML:
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: nginx
      image: nginx:1.25
      ports:
        - containerPort: 80
  1. Deployment
    最常用的控制器,适合 无状态应用。支持滚动更新、回滚。
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deploy
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: nginx
          image: nginx:1.25
  1. ReplicaSet
    确保 Pod 数量,一般由 Deployment 管理。
  2. StatefulSet
    管理有状态应用(如数据库),提供稳定标识和有序部署。
  3. DaemonSet
    在每个节点上运行一个 Pod,常用于日志、监控、存储守护进程。
  4. Job / CronJob
    Job 负责一次性任务,CronJob 负责周期任务(类似 Linux cron)。

二、服务发现与负载均衡 (Service Discovery & Load Balancing)

  1. Service
    提供稳定访问入口,支持多种类型:ClusterIP、NodePort、LoadBalancer。
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: NodePort
  selector:
    app: web
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30080
  1. Ingress
    提供 HTTP/HTTPS 路由,需配合 Ingress Controller(如 Nginx)。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
    - host: app.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-service
                port:
                  number: 80

三、配置与存储资源 (Configuration & Storage)

  1. ConfigMap – 非机密配置
apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  APP_MODE: "production"
  1. Secret – 敏感信息(需额外加密)
apiVersion: v1
kind: Secret
metadata:
  name: db-secret
type: Opaque
data:
  password: cGFzc3dvcmQ=   # base64("password")
  1. Volume – 存储挂载,生命周期和 Pod 一致。
  2. PersistentVolume (PV) & PersistentVolumeClaim (PVC) – 持久存储抽象。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  1. StorageClass – 定义不同存储类型(如 SSD/HDD)。

四、集群级资源 (Cluster-Level Resources)

  1. Namespace – 逻辑隔离,常用于多环境管理(dev/test/prod)。
  2. ResourceQuota – 限制命名空间总资源使用量。
  3. LimitRange – 控制单个 Pod/容器的资源上下限。

五、元数据与安全资源 (Metadata & Security)

  1. HorizontalPodAutoscaler (HPA)
    自动扩缩容 Pod 副本。
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: hpa-example
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-deploy
  minReplicas: 2
  maxReplicas: 5
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 60
  1. ServiceAccount – Pod 身份标识,用于 API 访问。
  2. Role / ClusterRole – 定义权限规则。
  3. RoleBinding / ClusterRoleBinding – 绑定用户/组/SA 和权限。

总结表格

分类

资源

作用

工作负载

Pod

最小运行单元

Deployment

无状态应用

StatefulSet

有状态应用

DaemonSet

每节点运行

Job / CronJob

批处理/定时任务

网络

Service

提供稳定入口

Ingress

HTTP/HTTPS 路由

配置存储

ConfigMap

非机密配置

Secret

敏感配置

PV/PVC

持久存储

StorageClass

存储类别

集群级

Namespace

逻辑隔离

ResourceQuota

限制命名空间资源

LimitRange

限制 Pod/容器资源

元数据/安全

HPA

自动扩缩容

SA / Role / RBAC

认证与授权


这样一份 文字 + YAML 示例 + 总结表格 的全景手册,你可以直接当作 学习大纲 或者 运维速查表

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...