问题标签 [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.
kubernetes - 使用 StorageOS 的 Kubernetes 上的 FailedAttachVolume 错误
我正在尝试使用 storageOS 设置一个高可用性集群。从字面上看,我想在节点之间复制卷,如果我的状态应用程序中的节点应该在具有最后状态的新节点上启动。
我在裸机(虚拟盒)上有 1 个主节点和 2 个从节点。我根据这些文档成功安装了带有 helm 的 storageos:https ://docs.storageos.com/docs/platforms/kubernetes/install/1.13
我可以在浏览器上访问 storageos 的 web gui,一切看起来都很好。我也成功创建了 storageclass。
我尝试创建一个持久卷声明并绑定到一个 pod。在 pvc 和 pod 创建后,pv 成功生成并绑定到声明。我从浏览器检查它,节点上有 1 个副本和 1 个主持久卷。没有问题直到这里。
当我关闭 Pod 的节点并在另一个节点上重新启动 Pod 时,Pod 卡在创建状态的容器上。Describe 命令给出了结果:
警告 FailedAttachVolume 23s attachdetach-controller 卷“pvc-0b2a1dbf-62e4-11e9-8b86-0800278a3f7b”的多附加错误卷已被 pod(s) nginx、nginx-6779c9f48b-g2825 使用
我遵循本指南,并且 pod 必须在具有相同状态的另一个节点上启动: https ://docs.storageos.com/docs/platforms/kubernetes/firstvolume/
我在节点“/var/lib/storageos/volumes”和 pod 上检查了这个目录,我可以看到一个节点中的卷(具有持久卷),但我在另一个节点上看不到任何卷。
我尝试过:
更改 pv 回收政策
对 openebs 进行一点尝试,但同样的问题
我尝试此故障排除结果是相同的:https ://docs.storageos.com/docs/platforms/kubernetes/troubleshoot/volumes#pod-in-pending-because -of-mount-error(我只为 docker 尝试我不知道如何在 kubernetes 上启用 MountPropagation)
我尝试等待 15-20 分钟但错误状态仍然相同
我尝试使用 1 个主节点和 3 个从节点结果相同
秘密和集群
kubernetes - 永久卷与声明不匹配
我创建了一个简单的本地存储卷。像这样的东西:
我创建一个声明:
由于未知原因,他们没有得到匹配。我究竟做错了什么?
kubernetes - 是否可以在 Kubernetes 中拥有与两个卷相同的 PVC?
我的 pod 声明了两个不同的卷。
我使用了一些定义模板,并且在某些情况下取决于环境,我想对这两卷使用相同的声明。
这会导致错误
- 它适用于两种不同的说法。
- 可以在多个 pod 中使用相同的声明。
这是一个简化的 pod 定义:
那么为什么它不起作用呢?
openshift - 不小心删除了我 PVC 的 glusterfs-dynamic 服务;我该如何重新创建它?
尝试从新的 openshift 重新创建我的所有资产(除了我的 PVC),我删除了所有内容($ oc delete all --all; oc delete configmap --all; oc delete secret -l namespace=visor)。我这样做是为了确定我的“oc 流程 -f 模板”完成了一项完整的工作。
这删除了我没有意识到挂载 PVC(持久卷声明)所需的 glusterfs-dynamic 服务。
解决方案 1:重新创建服务
- 我重新创建了这些服务,使它们看起来就像类似的 glusterfs 动态服务,但这还不够;即使 IP 地址匹配,PVC 仍然不可挂载('endpoints "glusterfs-dynamic-xxx" not found')
解决方案 2:将数据从旧 PVC 复制到新 PVC
- 要复制,我需要能够从 pod 访问 PVC——我无法安装 PVC……
我尝试重新创建服务:
我希望能够安装我的 PVC。
但是我得到了这个错误:
MountVolume.NewMounter initialization failed for volume "pvc-89647bcb-6df4-11e9-bd79-001a4a195f6a" : endpoints "glusterfs-dynamic-89647bcb-6df4-11e9-bd79-001a4a195f6a" not found
kubernetes - 我们可以在 k8s 中获得只有 PVC(没有 PV)的 Persistent Volume 吗?
我刚刚在容器中看到了一个用于 Postgres 的 yaml 文件,其中包含PersistentVolumeClaim
和。我找不到任何定义。volumeMounts
volumes
persistentVolumeClaim
postgres
PersistentVolume
但是,当postgres
容器 pod 启动时,我可以看到
yaml 文件PersistentVolume
中定义的绑定。persistentVolumeClaim
PersistentVolume
如果我们只定义 ,k8s 会创建PersistentVolumeClaim
吗?
kubernetes - 如何为 Kubernetes 配置“efs-provider”?
我已按照本指南中的步骤为Kubernetes部署并efs-provider
绑定 EFS 文件系统。我没有成功。
我正在使用 Amazon EKS 实施 Kubernetes,并且我使用 EC2 实例作为工作节点,所有这些都使用eksctl
.
在我应用这个调整后的清单文件后,结果是:
无论我等待多少时间,我的 PVC 的状态都停留在Pending
.
在创建 Kubernetes 集群和工作节点以及配置 EFS 文件系统之后,我应用efs-provider
清单,其中包含指向 EFS 文件系统的所有变量。在StorageClass
配置文件中将该spec.AccessModes
字段指定为ReadWriteMany
.
此时我的efs-provider
pod 正在运行且没有错误,并且状态PVC
为Pending
. 会是什么?如何配置efs-provider
以使用 EFS 文件系统?我应该等待多长时间才能获得PVC
状态Bound
?
更新
关于 Amazon Web Services 的配置,这些是我所做的:
- 创建 EFS 文件系统后,我为节点所在的每个子网创建了一个挂载点。
- 每个挂载点都附有一个带有入站规则的安全组,以授予每个节点组的安全组对 NFS 端口 (2049) 的访问权限。
我的 EFS 安全组的描述是:
部署
该kubectl describe deploy ${DEPLOY_NAME}
命令的输出是:
Pod 日志
该kubectl logs ${POD_NAME}
命令的输出是:
存储类
该kubectl describe sc ${STORAGE_CLASS_NAME}
命令的输出是:
PersistentVolumeClaim
该kubectl describe pvc ${PVC_NAME}
命令的输出是:
关于问题
您是否正确配置了 EFS 文件系统 ID
efs-provisioner
?
- 是的,两者(来自 fs 和配置的)都匹配。
您是否具有访问此 EFS 的正确 IAM 凭证?
- 是的,我的用户拥有并且该
eksctl
工具也对其进行了配置。为您的供应商指定的 EFS 路径是否存在?
- 是的,只是根 (/) 路径。
您是否将 EFS 端点添加到运行工作程序节点的子网,或者确保您的 EFS 子网连接了 Internet 网关?
- 是的,我已将 EFS 端点添加到运行工作程序节点的子网中。
您是否将安全组设置为允许 NFS 端口的入站?
- 是的。
kubernetes-helm - 将文件从 docker 卷复制到 kubernetes 卷
我正在将我的服务从 docker 转移到 kubernetes,我还必须从我的 docker 卷中复制一些文件。
我在 kubernetes 中使用 aPersistentVolumeClaim
和 aStorageClass
并且已经实现了。
但是现在我需要将文件夹/opt/checker/dataFiles
中的内容复制到kubernetes上相同的挂载路径。怎么做最好?有没有比手动将文件复制到 kubernetes 容器内的文件夹更好的方法?
cron - 在 Openshift 中的 cronjob 上挂载卷
我有 Jenkins POD,它用 pvc 安装 pv。现在我想创建一个使用相同 pvc 的 cronjob,以便在 jenkins 构建上进行一些日志轮换。
如何从 cronjob 访问 Jenkins PVC 以便在 PV 上执行一些批处理程序?
kubernetes - pod 有未绑定的即时 PersistentVolumeClaims kubernetes nfs 卷
我知道围绕这个话题有很多讨论,但不知何故,我无法让它发挥作用。
我正在尝试在裸机上安装带有 statefulset 和 nfs 持久卷的弹性搜索集群。我的 pv、pvc 和 sc 配置如下:
Statefuleset 定义了以下 pvc 部分:
现在,当我尝试部署它时,我在 statefulset 上收到以下错误:
当我得到 pvc 事件时,它显示:
我尝试不提供任何存储类(没有创建它)并将其从 pv 和 pvc 中完全删除。这一次,我得到以下错误:
我还尝试在 pvc 中将 storageclass 设置为 "" 而在 pv 中没有提及它,但它也不起作用。
请在这里帮忙。我可以检查更多以使其正常工作?
它是否与nfs服务器和路径有关(如果偶然,它被错误地提及),尽管我看到pv创建成功。
EDIT1:
一个问题是 pvc 的 accessmode 与 pv 的 accessmode 不同。我得到了纠正,现在我的 pvc 显示为绑定。
但现在,我得到以下错误:
pod has unbound immediate PersistentVolumeClaims 我也尝试使用本地卷,但同样的错误。PV 和 PVC 绑定正确,但 statefulset 显示上述错误。
使用 hostPath 卷时,一切正常。
从根本上说我在这里做错了什么吗?
EDIT2
我让本地卷正常工作。pod 需要一些时间才能绑定到 pvc。等待几分钟后,我的 pod 绑定到 pvc。
我认为,nfs 绑定问题可能更多与权限相关。但是,k8s 应该也会给出一些错误。
kubernetes - 自动绑定 PVC 到 PV
再会!
如果在 Openshift 中创建 PVC 时没有明确指定 volumeName,那么 PVC 会绑定到哪个 PV?
我认为如果存储大小与声明匹配,PVC 可以与任何处于“可用”状态的 PV 绑定。
告诉我这个过程是如何运作的?谢谢。