首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >库伯奈特生产中Pod的持续体积

库伯奈特生产中Pod的持续体积
EN

Stack Overflow用户
提问于 2020-06-08 19:40:50
回答 1查看 448关注 0票数 1

我执行了一个场景,使用PV和PVC在K8s集群上部署。它工作得很好,但我看到一些奇怪的行为。我创建了PV,但是它只在一个节点上可见,而在其他员工节点上是不可见的。我在这里少了什么,有什么输入吗?

背景:

服务器1-主服务器

服务器2-工作人员

服务器3-工作人员

服务器4-工作人员

Pod:"MyDb“在服务器(节点)4上运行,没有任何副本集。我猜是因为我的POD运行在服务器-4上,当创建POD时,PV是在服务器4上创建的,并在其中引用PVC (claim)。

请让我知道您对这个问题的想法,或者分享您关于在生产集群中安装共享磁盘的输入。

那些想要在K8s集群上部署SQL的人可以参考飞利浦发布的博客。链接到下面,

https://www.phillipsj.net/posts/sql-server-on-linux-on-kubernetes-part-1/ (无PV)

https://www.phillipsj.net/posts/sql-server-on-linux-on-kubernetes-part-2/ (带有PV和Claim)

你好,法鲁克

请参阅下面我的发现,我原来的问题陈述。问题:创建了用于Server的POD。在运行时,K8s在服务器-4上创建了这个pod,因此在服务器-4上创建了PV。但是,在其他节点上,PV路径没有创建(/tmp/sqldata_ )。

  • 我关闭服务器-4节点并运行命令删除SQL (最初没有使用任何副本)。
  • POD状态改为“终止”POD
  • 有一段时间什么也没发生。
  • 我重新启动了服务器-4,并注意到POD立即被删除。

下一步:-我再次停止服务器-4并创建相同的荚。POD是在运行时在server-3节点上创建的,我看到PV (/tmp/sqldata)也是在服务器-3上创建的。但是,我的所有数据(示例示例表)都丢失了。它现在是服务器3上的新PV。

我假设PV将安装外部存储容量,而不是集群中任何节点的存储/磁盘。

EN

回答 1

Stack Overflow用户

发布于 2020-06-08 19:53:37

我猜是因为我的POD运行在服务器-4上,当创建POD时,PV是在服务器4上创建的,并在其中引用PVC (claim)。

这或多或少是正确的,您应该能够通过简单地删除Pod并重新创建它来验证这一点(因为您说您没有一个ReplicaSet为您这样做)。然后,PersistentVolume将在计划Pod的节点上可见。

编辑:以上假设您使用的是一个外部存储提供程序,如NFS或AWS (参见可能的存储提供者中的Kubernetes)。对于HostPath,上面的内容不适用,并且PV将在节点上本地创建(并且不会挂载到另一个节点)。

没有理由也将PersistentVolume挂载到其他节点。假设有数百个节点,您是否希望将PersistentVolume安装到所有节点,而您的Pod只是运行在其中一个节点上呢?

您还在询问“共享”磁盘。在您链接的博客文章中创建的PersistentVolume使用的是ReadWriteMany,因此您实际上可以启动多个Pods访问相同的卷(考虑到您的存储也支持这个功能)。但是您的软件(在您的例子中是一个数据库)需要支持多个进程访问相同的数据。

特别是在考虑数据库时,您还应该查看StatefulSets,因为这基本上允许您定义始终使用相同存储的Pods,这对于数据库来说非常有趣。无论你在哪里应该在Kubernetes上运行或不运行数据库都是一个完全不同的话题.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62269991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档