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