pod有未绑定的PersistentVolumeClaims

问题描述 投票:18回答:1

当我推动部署时,由于某种原因,我在我的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
kubernetes persistent-storage
1个回答
32
投票

您必须定义PersistentVolume,以提供PersistentVolumeClaim使用的磁盘空间。

当使用storageClass时,Kubernetes将启用“动态卷配置”,这不适用于本地文件系统。


To solve your issue:

  • 提供PersistentVolume以满足声明的约束(大小> = 100Mi)
  • 从PersistentVolumeClaim中删除storageClass-line
  • 从群集中删除StorageClass

How do these pieces play together?

在创建部署状态描述时,通常知道应用程序将需要哪种类型(数量,速度,......)的存储。 为了使部署更加通用,您希望避免对存储的严重依赖。 Kubernetes卷抽象允许您以标准化方式提供和使用存储。

PersistentVolumeClaim用于在应用程序部署的同时提供存储约束。

PersistentVolume提供了可供使用的群集范围的卷实例(“bound”)。一个PersistentVolume将受到一项索赔的约束。但由于该声明的多个实例可以在多个节点上运行,因此该节点可以是多个节点的accessed

没有StorageClass的PersistentVolume被认为是静态的。

"Dynamic Volume Provisioning"与StorageClass一起允许集群按需提供PersistentVolumes。为了实现这一目标,给定的存储提供商必须支持provisioning - 这允许群集在弹出不满意的PersistentVolumeClaim时请求提供“新的”PersistentVolume。

© www.soinside.com 2019 - 2024. All rights reserved.