代码之家  ›  专栏  ›  技术社区  ›  soniccool

pod具有未绑定的PersistentVolumeClaims

  •  8
  • soniccool  · 技术社区  · 6 年前

    当我推进部署时,出于某种原因,我的pods上出现了错误:

    以下是我的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
    
    1 回复  |  直到 5 年前
        1
  •  107
  •   Florian Neumann    4 年前

    你必须定义一个 持久卷 提供磁盘空间供 .

    storageClass “动态卷设置”


    要解决您的问题:

    • 提供 持久卷
    • 拆下 存储类 -从 持久卷声明
    • 存储类 从你的集群

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

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

    这个 持久卷 bound "). 一个PersistentVolume将绑定到 索赔。但由于该声明的多个实例可能在多个节点上运行,因此该卷可能是 accessed

    A 不带StorageClass的PersistentVolume 被认为是 静止的

    "Dynamic Volume Provisioning" 沿着 具有 存储类 为了实现这一点,给定的存储提供程序必须支持 provisioning 持久卷 当一个不满意的人 持久卷声明


    PersistentVolume示例

    为了找到如何指定的东西,你最好看看 API for your Kubernetes version 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"
    

    这个 持久卷 我选择了一个 hostPath 将本地目录映射为卷内容的卷。容量允许资源调度器根据资源需求识别此卷。


    其他资源: