Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 如何在使用PVC时管理pod副本_Kubernetes_Kubernetes Pvc_Statefulset - Fatal编程技术网

Kubernetes 如何在使用PVC时管理pod副本

Kubernetes 如何在使用PVC时管理pod副本,kubernetes,kubernetes-pvc,statefulset,Kubernetes,Kubernetes Pvc,Statefulset,我在Kubernetes部署了一个开源项目。它有一个主、数据和查询吊舱。数据盒用于存储数据。不幸的是,当数据盒倒下时,它也会丢失所有存储的数据。 所以我想,我必须使用一个有PVC的状态集。我开始看PVC样品。 假设我创建了一个PV: kind: PersistentVolume metadata: name: task-pv-volume1 labels: type: local spec: storageClassName: local capacity: st

我在Kubernetes部署了一个开源项目。它有一个主、数据和查询吊舱。数据盒用于存储数据。不幸的是,当数据盒倒下时,它也会丢失所有存储的数据。 所以我想,我必须使用一个有PVC的状态集。我开始看PVC样品。 假设我创建了一个PV:

kind: PersistentVolume
metadata:
  name: task-pv-volume1
  labels:
    type: local
spec:
  storageClassName: local
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data1"
然后我有一个索赔和一个豆荚来约束它。这是示例状态集:

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。 有办法做到这一点吗? 这是Kube以某种方式处理的吗

谢谢你的帮助。如果您还有任何问题,请回答。我会尽力解决它。

当前是静态的,而不是动态的。动态供应器将允许自动旋转卷,如本文所述

由于默认的Kubernetes local storage provisioner不支持此功能,您将不得不找到另一个存储provisioner

我建议查看Ranchers本地路径供应员:

它在概览中做广告

本地路径供应器为Kubernetes用户提供了一种 利用每个节点中的本地存储。基于用户 配置时,本地路径供应器将基于 自动在节点上创建永久卷。它利用了这些特性 由Kubernetes引入的本地持久卷特性,但使其 比中内置的本地卷功能更简单的解决方案 库伯内特斯

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

专业人士

使用主机路径动态设置卷。目前 Kubernetes Local Volume Provisionier无法为执行动态资源调配 本地卷

缺点

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

您可以通过运行

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

然后将有状态集中的storageClassName更改为本地路径。对于状态集,可以使用
volumeClaimTemplates
()。这将导致每个副本都有自己的
PersistentVolumeClaim
。每个吊舱都有自己的磁盘。空磁盘。他们不会自动同步或做任何事情。您的存储目标是什么?您是否希望多个播客具有磁盘的同步视图?谢谢您的回答。我使用了VolumeClaim模板。稍微修改一下问题,让它简单一点。我的目标是我不想同步。我希望每个pod都能写入到唯一的位置。但是我如何在不为每个副本手动创建PV的情况下自动完成呢?啊,我明白了。对此表示歉意。PersistentVolumeClaim引用了一个
storageClassName
。这是对
StorageClass
(另一个Kubernetes对象)的引用。这允许特定存储提供商为您设置PersistentVolume。所以你要找的是一件事。它由存储类的供应器处理。您是否选择了存储资源调配器?如果你不确定,结帐也只是一个提示:你提到了生产
local
作为生产中的存储类可能有一些缺点。
kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml