使用PVC

问题描述

我有一个在Kubernetes中部署的开源项目。它具有一个主,数据和查询窗格。数据容器用于存储数据。不幸的是,当数据容器断开时,它也会丢失所有存储的数据。 所以我想,我必须对PVC使用StatefulSet。我开始看PVC样品。 假设我创建了一个PV:

kind: PersistentVolume
metadata:
  name: task-pv-volume1
  labels:
    type: local
spec:
  storageClassName: local
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data1"

然后我有一个Claim和一个绑定它的POD。这是示例状态集:

kind: StatefulSet
metadata:
  name: myweb
spec:
  replicas: 2
...
        volumeMounts:
        - name: data
          mountPath: /data
  volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: local
      resources:
        requests:
          storage: 100Mi

现在,当我运行一个示例作业时,我意识到这两个窗格中只有一个处于活动状态。另一个Pod无法说:

Warning  FailedScheduling  <unknown>        0/1 nodes are available: 1 pod has unbound immediate PersistentVolumeClaims.

我相信这是因为我仅创建了一个PV。所以我去创建一个新的PV,

path: "/mnt/data2"

吊舱已启动并运行。

在产品设置中,我希望这种情况自动发生。这意味着我不想为每个副本创建这些PV。 有没有办法做到这一点? 库伯以某种方式解决了这个问题吗?

感谢帮助。如有其他疑问,请回复。我会尽力解决它。

解决方法

当前Kubernetes local storage provisioner是静态的而不是动态的。一个动态的预配器将允许自动拆分卷,如后所述。

由于默认的Kubernetes本地存储供应商不支持此功能,因此您将不得不寻找另一个存储供应商。

我建议您查看Ranchers local-path-provisioner:https://github.com/rancher/local-path-provisioner

它在其概述中投放广告

本地路径供应器为Kubernetes用户提供了一种方法 利用每个节点中的本地存储。基于用户 配置,本地路径设置程序将创建基于hostPath 节点上的持久卷。利用功能 由Kubernetes Local Persistent Volume功能引入 比内置的本地卷功能更简单的解决方案 Kubernetes。

与Kubernetes中内置的本地持久卷功能比较

优点

使用hostPath动态配置卷。目前 Kubernetes本地卷供应商无法为以下产品进行动态供应 本地卷。

缺点

当前不支持卷容量限制。容量限制 现在将被忽略。

您可以通过运行安装它

kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml

,然后将状态集中的storageClassName更改为local-path

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...