广告连播具有未绑定的PersistentVolumeClaims


84

当我出于某些原因推动部署时,我在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

Answers:


86

你必须定义一个PersistentVolume由消费提供磁盘空间PersistentVolumeClaim

使用storageClassKubernetes时将启用“动态卷配置”,该功能不适用于本地文件系统。


解决您的问题:

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

这些乐段如何一起演奏?

创建部署状态描述时,通常知道应用程序需要哪种存储(量,速度,...)。
为了使部署具有通用性,您希望避免对存储的严格依赖。Kubernetes的卷抽象可让您以标准化方式提供和使用存储。

所述PersistentVolumeClaim用于提供一个存储约束的应用程序的部署旁边。

PersistentVolume提供集群范围音量情况下随时被消耗(” bound“)。一个PersistentVolume将绑定到一个声明。但是,由于该声明的多个实例可以在多个节点上运行,因此该卷可以被多个节点访问

没有StorageClassPersistentVolume被认为是静态的

“动态卷供应”旁边一个StorageClass允许群集按需提供PersistentVolumes。为了使该工作正常进行,给定的存储提供者必须支持配置-这允许群集在弹出不满意的PersistentVolumeClaim时请求“新” PersistentVolume的配置。


持久卷示例

为了找到如何指定内容的方法,最好查看Kubernetes版本API,因此以下示例是从K8S 1.17API参考构建的

apiVersion: v1
kind: PersistentVolume
metadata:
  name: ckan-pv-home
  labels:
    type: local
spec:
  capacity:
    storage: 100Mi
  hostPath:
    path: "/mnt/data/ckan"

PersistentVolumeSpec允许我们定义多个属性。我选择了一个hostPath将本地目录映射为该卷内容的卷。该容量使资源调度程序可以根据资源需求将此卷识别为适用的。


其他资源:


3
您可能不会删除StorageClass,仅将存储类名称的值替换为空字符串就足够了,例如StorageClass:“”
mrvol

应该如何定义PersistentVolume?
Victor Zuanazzi

1
@VictorZuanazzi好问题-似乎文档略有变化,我添加了一个示例。在开始时,很难钻研API。Fortunatley通常从API文档到指南进行交叉引用,反之亦然。希望这对您有所帮助。
弗洛里安·诺伊曼
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.