k8s数据持久化PV&PVC模板
简单的方式在deployment是mout挂载的方式映射到物理机,然后使用name管理,例如容器的name和物理机的name相同,就可以进行挂载,类似于bindmount。有个缺点,受容器影响,当容器删除,数据也就没有了。emptyDir方式持久化在相同的pod中,所有容器使用同一个持久卷,生命周期和pod一致,不受容器的影响,把容器删掉数据也不会丢失。apiVersion: v1kind: Po
·
简单的方式
在deployment是mout挂载的方式映射到物理机,然后使用name管理,例如容器的name和物理机的name相同,就可以进行挂载,类似于bindmount。有个缺点,受容器影响,当容器删除,数据也就没有了。
emptyDir方式持久化
在相同的pod中,所有容器使用同一个持久卷,生命周期和pod一致,不受容器的影响,把容器删掉数据也不会丢失。
apiVersion: v1
kind: Pod
metadata:
name: busy111-busy222
spec:
containers:
- name: busy111
image: busybox
volumeMounts:
- name: share-volume
mountPath: /busy111_dir # 创建卷的目录
args:
- /bin/sh
- -c
- echo "that's busybox111" > /busy111_dir/busy111; sleep 30000000
- name: busy222
image: busybox
volumeMounts:
- name: share-volume
mountPath: /busy111_dir # 同一个券
args:
- /bin/sh
- -c
- cat /busy111_dir/busy111; sleep 30000 # 看第一个容器创建的文件
volumes:
- name : share-volume
emptyDir: {} # 类型,在pod内共享
运行结果:
目录在这里
外部存储,创建PV
可以是Fsadfs
、NFS等
PV : 连接外部层出
PVC: 申请外部存储的空间
yum -y install nfs-utils.x86_64 rpcbind.x86_64 -y
mkdir -p /nfsdata/pv1
echo "/nfsdata *(rw,no_root_squash,sync)" > /etc/exports
# 设置’NFS共享- 创建PV.yaml
apiVersion: v1
kind: PersistentVolume #设置 PV
metadata:
name: mypv1
spec:
capacity: # 设置PV容量
storage: 1Gi
accessModes:
- ReadWriteOnce #连接权限
# 三种连接权限 1. ReadWriteOnce :单节点可读写 2.ReadOnlyMany 多节点只读 3. ReadWriteMany 多节点可读写
persistentVolumeReclaimPolicy: Recycle #数据回收策略
# 两种策略 1. Recycle 可回收循环使用 2. Retain 保留的,当删掉PV或者PVC数据会被保留。
storageClassName: nfs-test #定义当前存储的名字
nfs: # 用的什么协议,如果是fsdtdfs,就不能写nfs
path: /nfsdata/pv1 #nfs的路径
server: 192.168.42.122 # nfs服务器地址
创建成功,可以看到状态是 Available 可用,如果是 Bound 则说明是被绑定,不可用。
- 申请数据,创建PVC
apiVersion: v1
kind: PersistentVolumeClaim #创建PVC
metadata:
name: mypvc1
spec:
accessModes:
- ReadWriteOnce # 权限
resources: # 资源
requests:
storage: 1Gi
storageClassName: nfs-test #请求PV 资源,这里是PV的名字
可以看到已经pv与pvc已经绑定
- 创建Pod使用pvc name进行挂载
apiVersion: v1
kind: Pod
metadata:
name: mypod1
spec:
containers:
- name: mypod1
image: busybox
args:
- /bin/sh
- -c
- sleep 3000000
volumeMounts: # 挂载
- name: mydata
mountPath: /mydata
volumes:
- name: mydata
persistentVolumeClaim:
claimName: mypvc1 # pvc的name
删除的顺序
删除 pod > pvc > pv
删除pvc之前数据都在
更多推荐
已为社区贡献6条内容
所有评论(0)