pod 具有未绑定的 PersistentVolumeClaims
pod has unbound PersistentVolumeClaims
当我推送我的部署时,出于某种原因,我在 pods:
上收到错误
pod has unbound 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 提供磁盘 space 以供 PersistentVolumeClaim.
使用
使用 storageClass
时,Kubernetes 将启用 “动态卷配置”,它不适用于本地文件系统。
解决您的问题:
- 提供满足声明约束的PersistentVolume(大小 >= 100Mi)
- 从 PersistentVolumeClaim 中删除
storageClass
或为其提供一个空值 (""
)
- 从集群中删除 StorageClass
这些曲子如何组合在一起演奏?
在创建部署状态描述时,通常知道应用程序需要哪种存储(数量、速度...)。
为了使部署具有通用性,您希望避免对存储的硬依赖。 Kubernetes 的卷抽象允许您以标准化方式提供和使用存储。
PersistentVolumeClaim 用于在部署应用程序的同时提供存储约束。
PersistentVolume 提供集群范围的卷实例,随时可供使用 ("bound
")。一个 PersistentVolume 将绑定到 一个 声明。但是由于该声明的多个实例可能在多个节点上 运行,因此该卷可能被多个节点 accessed。
没有 StorageClass 的 PersistentVolume 被认为是 static。
"Dynamic Volume Provisioning" 与 with 一起 StorageClass 允许集群按需提供 PersistentVolumes。
为了使其工作,给定的存储提供程序必须支持 provisioning - 这允许集群在不满足 PersistentVolumeClaim 弹出。
持久卷示例
要了解如何指定内容,建议您查看 API for your Kubernetes version, so the following example is build from the API-Reference of K8S 1.17:
apiVersion: v1
kind: PersistentVolume
metadata:
name: ckan-pv-home
labels:
type: local
spec:
capacity:
storage: 100Mi
hostPath:
path: "/mnt/data/ckan"
PersistentVolumeSpec 允许我们定义多个属性。
我选择了一个 hostPath
卷,它将本地目录映射为卷的内容。该容量允许资源调度程序根据资源需求将此卷识别为适用。
其他资源:
我 运行 解决了这个问题,但我意识到我正在使用“手动”StorageClass 类型创建我的 PV。
你的连播
期望什么样的存储 class?
您的 PVC 定义
volumeClaimTemplates --> storageClassName : "standard"
PV
规格 --> storageClassName : "standard"
如果您使用 rancher k3s kubernetes 发行版,请按照 doc
中的说明将 storageClassName
设置为 local-path
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-path-pvc
namespace: default
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-path
resources:
requests:
storage: 2Gi
要在其他发行版上使用它,请使用 https://github.com/rancher/local-path-provisioner
当我推送我的部署时,出于某种原因,我在 pods:
上收到错误pod has unbound 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 提供磁盘 space 以供 PersistentVolumeClaim.
使用使用 storageClass
时,Kubernetes 将启用 “动态卷配置”,它不适用于本地文件系统。
解决您的问题:
- 提供满足声明约束的PersistentVolume(大小 >= 100Mi)
- 从 PersistentVolumeClaim 中删除
storageClass
或为其提供一个空值 (""
) - 从集群中删除 StorageClass
这些曲子如何组合在一起演奏?
在创建部署状态描述时,通常知道应用程序需要哪种存储(数量、速度...)。
为了使部署具有通用性,您希望避免对存储的硬依赖。 Kubernetes 的卷抽象允许您以标准化方式提供和使用存储。
PersistentVolumeClaim 用于在部署应用程序的同时提供存储约束。
PersistentVolume 提供集群范围的卷实例,随时可供使用 ("bound
")。一个 PersistentVolume 将绑定到 一个 声明。但是由于该声明的多个实例可能在多个节点上 运行,因此该卷可能被多个节点 accessed。
没有 StorageClass 的 PersistentVolume 被认为是 static。
"Dynamic Volume Provisioning" 与 with 一起 StorageClass 允许集群按需提供 PersistentVolumes。 为了使其工作,给定的存储提供程序必须支持 provisioning - 这允许集群在不满足 PersistentVolumeClaim 弹出。
持久卷示例
要了解如何指定内容,建议您查看 API for your Kubernetes version, so the following example is build from the API-Reference of K8S 1.17:
apiVersion: v1
kind: PersistentVolume
metadata:
name: ckan-pv-home
labels:
type: local
spec:
capacity:
storage: 100Mi
hostPath:
path: "/mnt/data/ckan"
PersistentVolumeSpec 允许我们定义多个属性。
我选择了一个 hostPath
卷,它将本地目录映射为卷的内容。该容量允许资源调度程序根据资源需求将此卷识别为适用。
其他资源:
我 运行 解决了这个问题,但我意识到我正在使用“手动”StorageClass 类型创建我的 PV。
你的连播 期望什么样的存储 class?
您的 PVC 定义 volumeClaimTemplates --> storageClassName : "standard"
PV 规格 --> storageClassName : "standard"
如果您使用 rancher k3s kubernetes 发行版,请按照 doc
中的说明将storageClassName
设置为 local-path
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-path-pvc
namespace: default
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-path
resources:
requests:
storage: 2Gi
要在其他发行版上使用它,请使用 https://github.com/rancher/local-path-provisioner