问题标签 [persistent-volume-claims]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - 为另一个 PersistentVolumeClaim 重用 Persistent Volume
我在 Kubernetes 上使用 rookio 和 CoreOS 来动态创建持久卷。
所以我创建了一个 PersistentVolumeClaim ( kubectl create -f postgres-pvc.yaml
) 并为持久卷回收策略应用一个补丁来保留。我做了一个"kubectl get pv"
,我可以看到一个动态创建的持久化卷并被绑定。现在,当我删除 PersitentVolumeClaim 时,状态变为已发布。
我在那个持久化卷中存储了一些宝贵的数据。有没有办法可以重用已进入已发布状态的持久卷?
谢谢-索南
kubernetes - Kubernetes NFS 持久卷 - 同一卷上的多个声明?索赔停滞不前?
用例:
我有一个可用的 NFS 目录,我想用它来为多个部署和 pod 保存数据。
我创建了一个PersistentVolume
:
我希望多个部署能够使用它PersistentVolume
,所以我对所需要的理解是我需要创建多个PersistentVolumeClaims
都指向这一点PersistentVolume
。
我相信这会在PersistentVolume
. 当我运行时kubectl get pvc
,我看到:
我不明白为什么我看到的是 10Gi 容量,而不是 50Mi。
然后,当我更改PersistentVolumeClaim
部署 yaml 以创建名为 PVC时,nfs-pvc-2
我得到以下信息:
PVC2 从不绑定到 PV。这是预期的行为吗?我可以有多个 PVC 指向同一个 PV 吗?
当我删除nfs-pvc-1
时,我看到了同样的事情:
再次,这是正常的吗?
在多个部署/吊舱之间使用/重用共享 NFS 资源的适当方法是什么?
kubernetes - Kubernetes 永久卷声明无限期处于待处理状态
我创建了一个来自 Google Compute Engine 永久磁盘的 PersistentVolume,我已经格式化并提供了数据。Kubernetes 说 PersistentVolume 可用。
然后我创建了一个 PersistentVolumeClaim,以便我可以将此卷附加到跨多个节点的多个 pod。但是,kubernetes 无限期地表示它处于待处理状态。
有什么见解吗?我觉得选择器可能有问题......
是否有可能预先配置一个带有数据的永久磁盘,并让跨多个节点的 pod 都能够从中读取?
kubernetes - Kubenetes 上的持久卷声明的延迟是否会使我的服务不可用?
为什么在 kubernetes pod 中挂载 GCE 卷会导致延迟?是:
但是当 pod 有一个 GCE 持久卷挂载时,运行状态会在 20 到 60 秒之间达到。
例如,在进行滚动部署时,这是否意味着有 20-60 秒的服务不可用?
kubernetes - Kubernetes 未声明持久卷 - “由于 PersistentVolumeClaim 未绑定而失败:“task-pv-claim”,这是意外的。”
我不确定为什么没有声明持久卷,或者我可以采取哪些步骤来进一步诊断?
声明大小是否应该与卷大小匹配?卷大小是否应该与 GCP 卷大小匹配?
这很难测试和弄清楚......
我的目标是能够创建一个带有单个副本的 Wordpress 实例,只要它支持滚动部署......
输出kubectl get pods
:
输出kubectl describe pods
:
输出kubectl get pvc
:
输出kubectl get pv
:
生产.yaml
pVolume.yaml
pVolumeClaim.yaml
kubernetes - 在 ReadWriteMany 模式下,多个 pod 可以挂载/声明 GCP 永久磁盘吗?
我有一个永久性磁盘 (GCP),我希望能够允许对多个 pod 进行读写访问。
这可能吗?这是我的两个配置:
pVolume.yaml
pVolumeClaim.yaml
使用上述配置,我在我的 pod 上看到以下错误:
这发生在副本计数设置为 2 时。
mongodb - 我可以在 Kubernetes Statefulset 的 volumeClaimTemplate 中使用现有的 GCE 永久磁盘吗
我正在使用 Google Container Engine 为 MongoDB 副本集(3 个副本 pod)运行 StatefulSet。
这适用于持久存储的动态配置——即在创建有状态集时为每个 pod 配置新存储。
但是,如果我重新启动 StatefulSet,我似乎无法重新绑定旧的持久卷,因为将再次配置新的存储。这意味着数据丢失。理想情况下,持久性存储应该在 Kubernetes 集群本身被删除后仍然存在,数据会保留下来并准备好在新集群中再次使用。
有没有办法创建 GCE 持久磁盘并在 StatefulSet 的持久卷声明中使用它们?
[2017 年 9 月 20 日更新]
找到答案: 这就是解决方案(归功于@RahulKrishnan RA)
创建一个存储类,指定底层磁盘类型和区域
创建一个 PersistentVolume 指定上面创建的存储类,并引用您要挂载的永久磁盘
- 创建一个 PersistentVolumeClaim。命名 PVC 很重要
<pvc template name>-<statefulset name>-<ordinal number>
。(正确的名称是诀窍!)将volumeName指定为上面创建的PV和存储类。 - 创建与具有正确名称的副本一样多的 PV 和 PVC。
- 使用 PVC 模板创建 statefulSet。
kubernetes - 我可以依赖 volumeClaimTemplates 命名约定吗?
我想在启用本地 PV的裸元 kubernetes 1.7 中设置一个预定义的 PostgreSQL 集群。我有三个工作节点。我在每个节点上创建本地 PV 并成功部署有状态集(使用一些复杂的脚本来设置 Postgres 复制)。
但是我注意到在volumeClaimTemplates 和PersistentVolumeClaim 之间有一种命名约定。例如
创建的 pvc 是pgvolume-postgres-0
, pgvolume-postgres-1
, pgvolume-postgres-2
.
有点棘手,我手动创建 PVC 并通过选择器绑定到目标 PV。我再次测试有状态集。看来有状态集很乐意使用这些 PVC。
我成功地完成了我的测试,但我仍然有这个问题。我可以依赖 volumeClaimTemplates 命名约定吗?这是一个未记录的功能吗?
kubernetes - Kubernetes:是否可以将卷挂载到作为 CronJob 运行的容器上?
我正在尝试创建一个 Kubernetes CronJob 来每分钟运行一个应用程序。
一个先决条件是我需要将我的应用程序代码放到 CronJob 中运行的容器上。我认为最好的方法是使用持久卷,pvclaim,然后定义卷并将其安装到容器中。我已经使用在 Pod 中运行的容器成功地做到了这一点,但在 CronJob 中似乎是不可能的?这是我尝试的配置:
对应的错误:
错误:验证“cron-applications.yaml”时出错:验证数据时出错:发现 v2alpha1.CronJobSpec 的无效字段卷;如果您选择忽略这些错误,请使用 --validate=false 关闭验证
我找不到任何资源表明这是可能的。那么,如果不可能,如何解决将应用程序代码放入正在运行的 CronJob 的问题?
kubernetes - 如何重用现有的持久卷声明
我已经删除了我的 elasticsearch 集群,但是现在在我部署了一个新集群之后,我需要访问存储在 3 个持久卷 PV 上的旧数据,如下所述:
这是旧 PV 声明的描述:
我的新部署描述如下:
将我的 pod 与 Loadblance 服务连接后,我没有找到任何文档。我错过了什么吗?以及如何在同一个 POD 中使用三个 PV。