PVC

  • 用于请求和绑定持久化存储卷pv,PVC 独立于具体的存储实现,可以通过存储类(StorageClass)来动态配置和管理存储资源。

yaml参考

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gih

K.os

  • 应该是可以理解为通过pvc进行申请后,StorageClass会根据pvc来动态创建pv

    configMap

  • 于在集群中管理非机密数据配置,将配置信息从代码中分离出来,注入配置数据的方法,便于管理和更新。

K.os

  • 可以用键值得形式存储重要数据

secret

可以参考:

持久卷

为Pod提供独立于Pod生命周期的持久存储。

PV

  • 一块存储资源。它是集群级别的资源,与Pod的生命周期分离。PV可以由管理员预先创建,也可以通过存储类动态创建。

静态

  • 写完直接apply
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
    name: my-pvc
    spec:
    accessModes:
    - ReadWriteOnce
    resources:
    requests:
    storage: 10Gi

    动态

  • 需要一个存储类StorageClass进行动态申领,就是想定义好StorageClass,再进行pvc进行获取

绑定

  • Kubernetes会根据PVC的需求自动寻找和绑定合适的PV。

回收

  • 当PVC被删除后,PV的回收策略决定了PV的处理方式。回收策略有三种:Retain、Recycle和Delete。
  1. Retain:保留数据,管理员可以手动处理数据。
  2. Recycle:清空数据后重新供PVC使用(已弃用)。
  3. Delete:删除PV和存储数据。

K.os

  • 可以理解成物理卷一样,都是可以当作一块存储。但是后续的操作不一样,this.pv是能够通过StorageClass动态创建。

投射卷

  • 将多种不同类型的数据源投射到 Pod 内的单个卷中。这些数据源包括 Secret、ConfigMap、Downward API 和 ServiceAccount Token 等。投射卷的一个主要优势是,它可以将多个来源的数据整合到一个挂载点,从而简化了数据管理和使用。
apiVersion: v1
kind: Pod
metadata:
name: projected-volume-pod
spec:
containers:
- name: my-container
image: nginx
volumeMounts:
- name: my-projected-volume
mountPath: /etc/projected-volume
volumes:
- name: my-projected-volume
# 这里11111
projected:
sources:
- configMap:
name: my-config
- secret:
name: my-secret
- downwardAPI:
items:
- path: "labels"
fieldRef:
fieldPath: metadata.labels
- serviceAccountToken:
path: "token"
expirationSeconds: 3600
audience: "api"

存储类

用来定义PV的资源对象

属性

Provisioner:定义由谁负责提供存储资源。不同的 Provisioner 对应不同的存储系统,如 kubernetes.io/aws-ebs 对应 AWS 的 EBS 存储,kubernetes.io/gce-pd 对应 Google Cloud 的 Persistent Disk,等等。

Parameters:提供给存储系统的参数。例如,对于 AWS EBS,可以指定卷类型(如 gp2、io1 等)、IOPS 等参数。

ReclaimPolicy:定义 PV 被释放后如何处理。有两种策略:

Retain:保留存储资源供管理员手动回收。
Delete:自动删除存储资源。
AllowVolumeExpansion:指示是否允许动态扩展存储卷大小。

MountOptions:提供给挂载卷的选项,这些选项会应用于挂载存储卷时。

VolumeBindingMode:定义 PV 的绑定模式,主要有两种:

Immediate:PV 会立即绑定到 PVC。
WaitForFirstConsumer:PV 会等待第一个消费者(Pod)出现后再绑定,以便更好地优化存储资源分配。

apiVersion: storage.k8s.io/v1  # 指定API版本
kind: StorageClass # 声明资源类型为StorageClass
metadata:
name: fast # StorageClass的名称,用户定义的标识
provisioner: kubernetes.io/aws-ebs # 指定Provisioner类型,这里使用AWS EBS作为存储提供者
parameters:
type: io1 # 指定AWS EBS卷的类型,这里使用io1类型
iopsPerGB: "10" # 指定每GB卷的IOPS(仅对io1类型有效)
fsType: ext4 # 指定文件系统类型,默认为ext4
reclaimPolicy: Retain # 设置回收策略,Retain表示保留PV供管理员手动回收
allowVolumeExpansion: true # 允许动态扩展存储卷大小
mountOptions:
- debug # 挂载卷时的选项,这里使用debug模式
volumeBindingMode: WaitForFirstConsumer # 设置卷绑定模式,WaitForFirstConsumer表示等待第一个消费者出现再绑定