首页 > Web开发 > 详细

(一)kubernetes pv pvc

时间:2020-09-30 18:13:19      阅读:70      评论:0      收藏:0      [点我收藏+]

对于k8s的pv与pvc应该都不陌生,但是对使用过程中,还是会对这两者的状态会有疑惑。删除pv时为何会被hang住?pv无缘无语failed?下面这图是状态的变化。

技术分享图片

1、首先创建个pv,这里用的后端存储是nfs。当刚创建好的pv状态必然是Available的,表示可以被pvc绑定。

apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv
spec:
storageClassName: manual
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
nfs:
path: /data/k8s # 指定nfs的挂载点
server: 10.151.30.1 # 指定nfs服务地址

kubectl get pv nfs-pv

技术分享图片

2、新建pvc

刚添加的 PVC 状态是 Pending,如果有合适的 PV,这个 Pending 状态会立刻变为 Bound 状态,同时相应的 PVC 也会变为 Bound,PVC 和 PV 进行了绑定。 我们可以先添加 PVC,后添加 PV,这样就能保证看到 Pending 状态。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

(图1)新建pvc对象资源后,刚刚新建完成会是penidng状态。

(图2)如找到合适的pv绑定的话,则状态会变成bound,pv的状态也会跟着从Available变成bound。 技术分享图片 技术分享图片

3、删除PV

现在的pvc与pv是在绑定状态了,均为bound。如不小心删了pv会有什么反应?

技术分享图片

 

 

 删除pv的时候已经是hang住了,也就是说没有真正的删除pv,但这时pv的状态是Terminating,pvc的状态则是bound。也就是说,当时已绑定在一起的应该需要先删除pvc,在删除pv。这种对于pvc是没有任何影响的。但还是需要把问题处理下去。

我们可以通过编辑 PV,删除 PV 中的 finalizers 属性来强制删除 PV:

kubectl edit pv nfs-pv

删除掉finalizers 属性中的内容

技术分享图片

 

 

 删除完成后,Pv算是真正的删除了,而pvc的也是Lost状态。

技术分享图片

 

 

 当pvc是Lost时,说明之前已经绑定的pv已经没有了,但是pvc里还有着pv的绑定信息,可以导看看情况

 kubectl get pvc nfs-pvc -o yaml

技术分享图片

 

 

 要解决这个问题,就把之前创建的pv重新创建出来即可。创建完成后,pv pvc的状态都恢复成bound状态了。

kubectl apply -f volume.yaml
persistentvolume/nfs-pv created

技术分享图片

 

 上面是误操作,删除pv的情况下会发生的错误。

 

(一)kubernetes pv pvc

原文:https://www.cnblogs.com/cutecatkk/p/13755701.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!