由于某种原因,当我进行部署时,我的吊舱出现了错误:
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
答案 0 :(得分:28)
您必须定义 PersistentVolume ,以提供供 PersistentVolumeClaim 占用的光盘空间。
使用storageClass
时,Kubernetes将启用“动态卷配置” ,该功能不适用于本地文件系统。
storageClass
行
在创建部署状态描述时,通常知道应用程序需要哪种类型的存储(量,速度,...)。
为了使部署具有通用性,您希望避免对存储的严格依赖。 Kubernetes的卷抽象可让您以标准化的方式提供和使用存储。
PersistentVolumeClaim 用于在部署应用程序的同时提供存储限制。
PersistentVolume 提供了群集范围内的卷实例,这些实例可以被使用(“ bound
”)。一个PersistentVolume将绑定到一个声明。但是由于该声明的多个实例可能在多个节点上运行,因此该卷可能由多个节点accessed。
没有存储类的 PersistentVolume 被认为是静态。
"Dynamic Volume Provisioning"和以及一个 StorageClass 一起,允许群集按需配置PersistentVolume。 为了使该工作正常进行,给定的存储提供者必须支持provisioning-这使群集可以在 PersistentVolumeClaim 不满意时请求提供“新的” PersistentVolume 。 >弹出。