k8s pv 及 pvc 实践

参考文章 https://www.cnblogs.com/benjamin77/p/9944268.html

pv = PersistentVolume  存储的定义,生命周期独立于pod,是一块创建好的持久化空间,由管理员管理, 应用无需关心,只需要提出申请使用即可

pvc = PersistentVolumeClaim 存储的声明

经过个人的理解 pv跟pvc是一一对应关系, pv 被使用了后就不能被其它pvc申请了, 看过很多文章说, 只要管理员创建好pv, 开发人员只要写pvc申请就行了, 手工维护的不太可能, 还是要动态生成 pv , 一一对应关系有什么好处?

一直没明白网上说的好处, 减少耦合,这还不是一一对应关系嘛,紧密结合呀,用完了还是清掉让后面的人用, 也许唯一的好处就是清掉后不要再重新创建新的了, 这对大规模的使用也许有好处吧.

使用我们已经定义好的nfs 参考 https://mp.csdn.net/postedit/93199622

下面开始创建 pv

vi pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
    name: mypv
spec:
    capacity:
      storage: 5Gi
    accessModes:
      - ReadWriteOnce
    persistentVolumeReclaimPolicy: Recycle
    storageClassName: nfs
    nfs:
      path: /home/nfs
      server: 192.168.220.128

开始创建

kubectl apply -f pv.yaml 

查看状态

kubectl get pv

pvc 

打开mysql的helm定义的pvc.yaml做为例子来分析一下

{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: {{ template "mysql.fullname" . }}
  namespace: {{ .Release.Namespace }}
{{- with .Values.persistence.annotations  }}
  annotations:
{{ toYaml . | indent 4 }}
{{- end }}
  labels:
    app: {{ template "mysql.fullname" . }}
    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
    release: "{{ .Release.Name }}"
    heritage: "{{ .Release.Service }}"
spec:
  accessModes:
    - {{ .Values.persistence.accessMode | quote }}
  resources:
    requests:
      storage: {{ .Values.persistence.size | quote }}
{{- if .Values.persistence.storageClass }}
{{- if (eq "-" .Values.persistence.storageClass) }}
  storageClassName: ""
{{- else }}
  storageClassName: "{{ .Values.persistence.storageClass }}"
{{- end }}
{{- end }}
{{- end }}

PVC ,只需要指定 PV 的容量,访问模式和 class。

这里面  .Values.persistence.size 指容量 1Gi 这样的写法

访问模式  .Values.persistence.accessMode  = ReadWriteOnce

 accessModes 指定访问模式为 ReadWriteOnce,支持的访问模式有:
ReadWriteOnce – PV 能以 read-write 模式 mount 到单个节点。  不太理解单个跟多个节点是什么概念?
ReadOnlyMany – PV 能以 read-only 模式 mount 到多个节点。
ReadWriteMany – PV 能以 read-write 模式 mount 到多个节点。

class  .Values.persistence.storageClass = nfs

猜你喜欢

转载自blog.csdn.net/gs80140/article/details/93475231