当我推动部署时,由于某种原因,我在我的pod上收到错误:
pod有未绑定的PersistentVolumeClaims
以下是我的YAML:
这是在本地运行,而不是在任何云解决方案上运行
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.16.0 ()
creationTimestamp: null
labels:
io.kompose.service: ckan
name: ckan
spec:
replicas: 1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
io.kompose.service: ckan
spec:
containers:
image: slckan/docker_ckan
name: ckan
ports:
- containerPort: 5000
resources: {}
volumeMounts:
- name: ckan-home
mountPath: /usr/lib/ckan/
subPath: ckan
volumes:
- name: ckan-home
persistentVolumeClaim:
claimName: ckan-pv-home-claim
restartPolicy: Always
status: {}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: ckan-pv-home-claim
labels:
io.kompose.service: ckan
spec:
storageClassName: ckan-home-sc
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
volumeMode: Filesystem
---
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: ckan-home-sc
provisioner: kubernetes.io/no-provisioner
mountOptions:
- dir_mode=0755
- file_mode=0755
- uid=1000
- gid=1000
您必须定义PersistentVolume,以提供PersistentVolumeClaim使用的磁盘空间。
当使用storageClass
时,Kubernetes将启用“动态卷配置”,这不适用于本地文件系统。
storageClass
-line在创建部署状态描述时,通常知道应用程序将需要哪种类型(数量,速度,......)的存储。 为了使部署更加通用,您希望避免对存储的严重依赖。 Kubernetes卷抽象允许您以标准化方式提供和使用存储。
PersistentVolumeClaim用于在应用程序部署的同时提供存储约束。
PersistentVolume提供了可供使用的群集范围的卷实例(“bound
”)。一个PersistentVolume将受到一项索赔的约束。但由于该声明的多个实例可以在多个节点上运行,因此该节点可以是多个节点的accessed。
没有StorageClass的PersistentVolume被认为是静态的。
"Dynamic Volume Provisioning"与StorageClass一起允许集群按需提供PersistentVolumes。为了实现这一目标,给定的存储提供商必须支持provisioning - 这允许群集在弹出不满意的PersistentVolumeClaim时请求提供“新的”PersistentVolume。