我在AWS EKS中有一个Kubernetes cron作业,它需要一个持久卷,所以这大致就是我所拥有的:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-{{$.Release.Name}}-tmp
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
resources:
requests:
storage: 10Gi
然后它被挂载到cronjob(挂载部分是正确的,如下所示(
所有这些都使用Helm进行部署,并且新的部署超时,因为PVC仍处于Pending
状态,并显示消息waiting for the first consumer to be created before binding
。如果在部署过程中,我基于cron作业创建了一个新作业,则PVC将立即绑定,并且此作业和所有后续部署工作都与预期一样。
是否可以使PVC粘合";急切地";,没有一个需要它的pod,或者最好不要等到它在图表安装过程中被绑定?
您使用的存储类是什么?Storage类具有volumeBindingMode
属性,这些属性控制PV的动态创建方式。
volumeBindingMode
可以是Immediate
和WaitForFirstConsumer
模式。
要检查存储类,可以执行kubectl get storageclass
或kubectl describe storageclass
。如果K8 PVC定义中未指定,则将使用默认存储类。
参考文献:
- https://kubernetes.io/docs/concepts/storage/storage-classes/#volume-绑定模式