问题标签 [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.
amazon-web-services - Kubernetes 节点没有获得正确的标签
花了半天时间挖掘网络后,我仍然无法找到我的工作节点没有获得正确标签的原因。我在 AWS 的 Auto Scaling 组中有我的工作节点,并且我正在使用带有 Kubeadm 的 AWS 云提供商来预置我的集群。在我的所有主节点和工作节点出现后,我没有看到分配给工作节点的适当标签,例如分配给主节点中的工作节点,如下所示:
我不知何故怀疑这是我无法为我的 PV 创建 PVC 的原因,我想将它附加到我的 docker 注册表 pod。
我看到我的存储类和 PV 已创建,并且可以在 AWS 上验证相同的卷 ID。我还尝试使用 AWS CLI 手动尝试将卷附加到我的工作节点,但我成功了,但没有通过 PVC。请告知这里出了什么问题。提前致谢。
kubernetes - 当 storageClass 使用 glusterfs 但不使用 cinder 默认存储时,pod 如何能够使用 ReadWriteOnce 访问模式挂载相同的 pvc?
想了解 pod1 声明的 PVC在创建accessMode: ReadWriteOnce
时如何与 pod2 共享storageclass glusterfs
?它不应该失败,因为我需要指定accessMode
asReadWriteMany
吗?
- >创建storageclass
与glusterfs
type: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 读写是否安全?会不会有什么问题?在这种情况下, RWX
if的作用是什么?RWO
如果一些专家可以对此有所了解,那就太好了。谢谢。
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 挂载会将数据替换为空挂载。这是解决方法的主要原因。目标是让整个安装在图像中。
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 安装的共享时,我看到:
但应该是几个太字节。
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' 。
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 是
kubernetes - Redis 似乎在启动时删除了 dump.rdb。使用 Kubernetes PVC 和 KubeDB。为什么会这样?
我们在集群中使用KubeDB来管理我们的数据库。
所以 Redis 是通过KubeDB Redis 对象部署的,KubeDB 将 PVC 附加到 Redis pod。
不幸的是,KubeDB 不支持任何 Redis 转储的恢复或备份(目前)。
对于备份,我们的解决方案是运行 CronJob,它将dump.rdb
Redis 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。
kubernetes - 有没有办法在 pod 中的容器之间共享现有数据?
我在一个吊舱中有 2 个容器。1. Webapp 2. Nginx 我想与 nginx 容器共享来自 Webapp 容器 /var/www/webapp/ 的数据。/var/www/html
该文件夹已正确安装,但所有文件都丢失了。
在 docker 下挂载卷时,容器内的所有文件夹和文件都可用,但在 k8s 中不可用。
kubernetes - 具有共享存储的 Kuberenetes 上的 ActiveMQ
我有使用 Apache Camel 和 ActiveMQ 构建的现有应用程序。作为迁移到 Kubernetes 的一部分,我们正在做的是将使用 Apache Camel 开发的相同服务迁移到 Kubernetes。我需要部署 ActiveMQ,这样我就不会丢失数据,以防其中一个 Pod 死机。
我现在正在运行一个 RelicaSet 值为 2 的部署。这将启动 2 个 Pod,并且前面有一个 Service,我可以在至少 1 个 Pod 启动时服务任何请求。但是,如果一个 Pod 死了,我不想丢失数据。我想在 Pod 之间实现类似共享文件系统的东西。我的环境在 AWS 中,所以我可以使用 EBS。你能建议,如何实现这一目标。
下面是我的部署和服务 YAML。