pod有未绑定的PersistentVolumeClaims

son*_*ool 39 persistent-storage kubernetes

当我推动我的部署由于某种原因我得到我的pod上的错误 __CODE__

以下是我的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: {}
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)

Flo*_*sch 50

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

当使用storageClassKubernetes时,启用"动态卷配置",这不适用于本地文件系统.


要解决您的问题:

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

这些作品如何一起演奏?

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

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

所述PersistentVolume提供集群范围的体积情况下准备好被耗尽(" bound") -一个PersistentVolume将被绑定到一个要求.但由于该声明的多个实例可以在多个节点上运行,因此该多个节点可以访问该卷.

没有StorageClassPersistentVolume被认为是静态的.

"动态卷供应"旁边一个 StorageClass允许群集按需提供PersistentVolumes.为了实现这一目标,给定的存储提供商必须支持配置 - 然后,当弹出不满意的PersistentVolumeClaim时,它将允许集群请求配置"新"PersistentVolume.

  • 您不能删除 StorageClass,只需将存储类名称的值替换为空字符串就足够了,例如 StorageClass: "" (5认同)
  • @VictorZuanazzi 好问题 - 文档似乎略有变化,我添加了一个示例。一开始深入研究 API 是相当困难的。幸运的是,API 文档和指南之间经常存在交叉引用,反之亦然。我希望这可以帮助你继续下去。 (2认同)