Bota5ky

Kubernetes学习笔记(三十一):Volumes、Persistent Volumes、Storage Class

Volumes

!!!注意题目给的 mountPath 后面有没有 /,可能会判定为不同路径。

apiVersion: v1
kind: Pod
metadata:
  name: random-number-generator
spec:
  containers:
  - image: alpine
    name: alpine
    command: ["/bin/sh","-c"]
    args: ["shuf -i 0-100 -n 1 >> /opt/number.out;"]
    volumeMounts:
    - mountPath: /opt ## Container内的存储路径
      name: data-volume

  volumes:
  - name: data-volume
    hostPath:
      path: /data ## 对应存储在host上的路径
      type: Directory
    ## awsElasticBlockStore: ## 可替换hostPath
      ## volumeID:
      ## fsType: ext4

Persistent Volumes

Persistent Volumes Claim(PVC)

pv-definition.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-vol1
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 1Gi
  awsElasticBlockStore:
    volumeID: <volume-id>
    fsType: ext4

管理员创建一组PV,用户创建PVC以用于存储。单个PVC绑定单个PV。

可以使用label进行匹配,如果所有其他条件都匹配,并且没有更好的选项,则较小的PVC可能会绑定到较大的PV,且剩下的存储空间无法再被其他PVC利用。没有PV可用,则PVC会保持pending状态。

selector:
  matchLabels:
    name: my-pv ## PVC
labels:
  name: my-pv ## PV

pvc-definition.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: myclaim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 500Mi

PVC被删除后,PV的状态取决于:

persistentVolumeReclaimPolicy: Retain | Delete | Recycle

Storage Class

在应用程序需要时自动配置volumes

sc-definition.yaml 不需要再配置pv,由Storage Class自动创建

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: google-storage
provisioner: kubernetes.io/gec-pd
parameters: ## 取决于磁盘配置
  type: pd-standard
  replication-type: none

pvc-definition.yaml

spec:
  storageClassName: google-storage
posted @ 2022-09-11 17:56  Bota5ky  阅读(56)  评论(0)    收藏  举报