问题标签 [kubernetes-pvc]

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.

0 投票
2 回答
866 浏览

amazon-web-services - Kubernetes 节点没有获得正确的标签

花了半天时间挖掘网络后,我仍然无法找到我的工作节点没有获得正确标签的原因。我在 AWS 的 Auto Scaling 组中有我的工作节点,并且我正在使用带有 Kubeadm 的 AWS 云提供商来预置我的集群。在我的所有主节点和工作节点出现后,我没有看到分配给工作节点的适当标签,例如分配给主节点中的工作节点,如下所示:

我不知何故怀疑这是我无法为我的 PV 创建 PVC 的原因,我想将它附加到我的 docker 注册表 pod。

我看到我的存储类和 PV 已创建,并且可以在 AWS 上验证相同的卷 ID。我还尝试使用 AWS CLI 手动尝试将卷附加到我的工作节点,但我成功了,但没有通过 PVC。请告知这里出了什么问题。提前致谢。

0 投票
1 回答
1577 浏览

kubernetes - 当 storageClass 使用 glusterfs 但不使用 cinder 默认存储时,pod 如何能够使用 ReadWriteOnce 访问模式挂载相同的 pvc?

想了解 pod1 声明的 PVC在创建accessMode: ReadWriteOnce时如何与 pod2 共享storageclass glusterfs?它不应该失败,因为我需要指定accessModeasReadWriteMany吗?

- >创建storageclassglusterfstype:distributed

-> 在上面创建的 PVstorageclass和 pvc 完成AccessMode: ReadWriteOnce

-> 第一个 Pod 附加了上面创建的 PVC

-> 第二个 Pod 尝试附加创建的相同 PVC,它确实工作并且能够访问第一个 pod 创建的文件

尝试了另一个没有 astorageclass并直接从 cinder 存储创建 PVC 的流程,出现以下错误,

Warning FailedAttachVolume 28s attachdetach-controller Multi-Attach error for volume "pvc-644f3e7e-8e65-11e9-a43e-fa163e933531" Volume is already used by pod(s) pod1

试图理解为什么在storageclass创建并分配给 PV 时没有发生这种情况?

我如何能够从第二个 pod 访问文件AccessMode: ReadWriteOnce?根据 k8s 文档,如果不同节点中的多个 pod 需要访问它应该是 ReadWriteMany。

如果RWO访问模式有效,那么两个 pod 读写是否安全?会不会有什么问题?在这种情况下, RWXif的作用是什么?RWO

如果一些专家可以对此有所了解,那就太好了。谢谢。

0 投票
1 回答
307 浏览

kubernetes - Kubernetes 对 /var/www/html 问题的持久卷声明

我在 nginx 上有一个 magento 部署,它使用持久卷和持久卷声明。一切正常,但我正在努力解决一个问题。我正在使用initContainer通过cli安装magento(工作正常)但是我的POD启动并将PVC安装到/var/www/html(我的webroot)之前的数据(在initContainer中)安装的数据丢失(或者更好地被新的山)。我的解决方法是将 magento 安装到/tmp/magento(在 initContainer 中),一旦“真正的”POD 启动,数据/tmp/magento就会被复制到/var/www/html. 正如您可以想象的那样,这需要一段时间并且有点像权限地狱,但它确实有效。

有什么办法可以直接在目标目录中安装我的应用程序,而无需“过度映射”我的文件?我必须使用 PV/PVC,因为我通过 NFS 安装 POD 目录,而且我不想丢失我的文件。

更新:Magento 部署位于 docker 映像中,并在 docker 构建期间安装。因此,如果我将数据安装到目标位置,kubernetes 挂载会将数据替换为空挂载。这是解决方法的主要原因。目标是让整个安装在图像中。

0 投票
1 回答
553 浏览

kubernetes - Heketi 没有看到所有 glusterfs 砖块

glusterfs 有问题。看起来并非所有积木都被 POD 使用。

所以我使用的是 Kubernetes v1.11、Heketi v9.0.0 和 glusterfs 4.1.5

以前我在一个工作节点上遇到了奇怪的问题,所以我需要重新启动这个节点。在此之后,我遇到了 heketi pod 的问题。看起来它无法挂载 heketi db。我修复了这个问题,它能够启动,但是当我检查 POD 中 gluster 挂载的共享时,我注意到那里只有最新的数据。
首先,我检查了所有同行的状态:

然后使用比较 glusterfs 卷中的所有砖块

对于所有具有 heketi 拓扑的 gluster 节点和卷,一切都很好。
在我的 glusterfs 节点上使用lvdisplay我检查了所有砖块的路径,甚至将其中一些砖块安装在主机节点上,以确保其中的数据仍然可用——在里面找到旧数据。

glusterfs 实例的一些输出:

当我在 POD 中使用 df -h 检查 gluster 安装的共享时,我看到:

但应该是几个太字节。

0 投票
1 回答
1811 浏览

azure-aks - Pod 无法在托管的 aks 集群上挂载磁盘

我从这里尝试了简单的 PVC 示例,其中 nginx 声称 azure-managed-disk 并且出现“无法安装”错误,见下文。此外,我无法使用“ kubectl delete pv pvc-3f3c3c78-9779-11e9-a7eb-1aafd0e2f988 ”删除创建的 PV。

我的托管 aks 集群正在使用 v1.12.8 ,SP 具有贡献者角色(所有者角色也无济于事)。在我的简单 nginx 示例(提供的链接)的 yaml 中有存储类 'managed-premium' 。

0 投票
1 回答
580 浏览

docker - 如果重新部署后无法访问来自 Kubernetes PVC 的图像,会出现什么问题?

我在数字海洋 Kubernetes 集群中使用 Strapi。公用文件夹图像由持久卷声明 (PVC) 处理。重新部署后,图像在 Strapi 和http://api.mywebsite.com/uploads/blabla.jpg中可见。尝试从 Strapi 获取相同图像时,位于同一集群中的 Imaginary 图像处理器返回 404 错误。

这可能是什么原因?

我试图构建一个像这里写的那样的 initContainer https://medium.com/faun/digitalocean-kubernetes-and-volume-permissions-820f46598965但它没有帮助。


流程是这样的:frontend -> ingress -> image-processor (Fastify server) -> imaginary -> backend

后端:

后端 PVC:

描述后端 pod:

描述PVC:

图像处理器:

前端 img-url 是

http://imagehandling.domain.com/b2b36f31caa9d8f6/320/title.webp?type=webp&width=320&url=http://backend:1337/uploads/b2b36f31caa9d8f6.jpg&filename=title

0 投票
2 回答
1538 浏览

kubernetes - Redis 似乎在启动时删除了 dump.rdb。使用 Kubernetes PVC 和 KubeDB。为什么会这样?

我们在集群中使用KubeDB来管理我们的数据库。

所以 Redis 是通过KubeDB Redis 对象部署的,KubeDB 将 PVC 附加到 Redis pod。

不幸的是,KubeDB 不支持任何 Redis 转储的恢复或备份(目前)。

对于备份,我们的解决方案是运行 CronJob,它将dump.rdbRedis pod 中的数据复制到作业 pod 中,然后将其上传到 S3。

对于转储的恢复,我也想做同样的事情,只是反过来。有一个临时 pod,它下载 S3 备份,然后将其复制到 Redis pod 到该dump.rdb位置。

redis.conf看起来像这样:

复制工作。位于dump.rdb具有正确权限的正确位置。我通过在 Redis pod 中使用相同的redis.conf. dump.rdb正在毫无问题地加载到服务器中。

但是,由于我不想手动启动第二个 redis-server,所以我重新启动了 Redis pod(通过 kubectl delete pods)让 pod 拾取复制的dump.rdb.

每次我删除 pod 时,它dump.rdb都会被删除,并且dump.rdb正在创建一个尺寸更小(93 字节)的新 pod。

我不认为这是 PVC 问题,因为我创建了一些文件来测试它们是否也被删除。他们不是。只有dump.rdb.

为什么会这样?我期望 Redis 只是从数据库中恢复数据库dump.rdb而不是创建一个新数据库。

编辑:是的,大小dump.rdb约为 47 GB。Redis 版本是 4.0.11。

0 投票
2 回答
2048 浏览

kubernetes - 有没有办法在 pod 中的容器之间共享现有数据?

我在一个吊舱中有 2 个容器。1. Webapp 2. Nginx 我想与 nginx 容器共享来自 Webapp 容器 /var/www/webapp/ 的数据。/var/www/html

该文件夹已正确安装,但所有文件都丢失了。

在 docker 下挂载卷时,容器内的所有文件夹和文件都可用,但在 k8s 中不可用。

0 投票
2 回答
2624 浏览

kubernetes - 具有共享存储的 Kuberenetes 上的 ActiveMQ

我有使用 Apache Camel 和 ActiveMQ 构建的现有应用程序。作为迁移到 Kubernetes 的一部分,我们正在做的是将使用 Apache Camel 开发的相同服务迁移到 Kubernetes。我需要部署 ActiveMQ,这样我就不会丢失数据,以防其中一个 Pod 死机。

我现在正在运行一个 RelicaSet 值为 2 的部署。这将启动 2 个 Pod,并且前面有一个 Service,我可以在至少 1 个 Pod 启动时服务任何请求。但是,如果一个 Pod 死了,我不想丢失数据。我想在 Pod 之间实现类似共享文件系统的东西。我的环境在 AWS 中,所以我可以使用 EBS。你能建议,如何实现这一目标。

下面是我的部署和服务 YAML。

0 投票
0 回答
79 浏览

kubernetes - 使用 NFS 时正确的 Pod 架构?

我正在使用 AWS EKS 运行 Kubernetes 集群。

在这方面,我使用 AWS EFS 进行持久存储来存储应用程序日志。我有许多应用程序正在运行,我为每个应用程序创建一个 PVC。我只需要应用程序日志的持久存储。现在,我在 Elasticsearch 中也需要这些日志。所以,我使用 Filebeat 来做到这一点。所以,这是我的架构,

Kubernetes 架构

我只是想获得有关此架构的反馈。这是正确的方法吗?这样做的缺点是什么?您如何在 Kubernetes 中将应用程序日志发送到 ELK?