k8s pv 及 pvc 实践
参考文章https://www.cnblogs.com/benjamin77/p/9944268.htmlpv =PersistentVolume 存储的定义,生命周期独立于pod,是一块创建好的持久化空间,由管理员管理,应用无需关心,只需要提出申请使用即可pvc =PersistentVolumeClaim存储的声明经过个人的理解pv跟pvc是一一对应关系,pv...
参考文章 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
更多推荐
所有评论(0)