卷卷的GKE / Multi-Attach错误的卷声明已经专门附加

时间:2017-10-23 10:25:36

标签: kubernetes google-cloud-platform google-kubernetes-engine persistent-volumes

问题似乎是solved a long time ago,因为答案和评论没有提供真正的解决方案,我想从有经验的用户那里得到一些帮助

错误如下(在描述pod时,它继续处于ContainerCreating状态):

Multi-Attach error for volume "pvc-xxx" Volume is already exclusively attached to one node and can't be attached to another 

这一切都在GKE上运行。我有一个以前的集群,问题从未发生过。我在创建这个新集群时重用了相同的磁盘 - 不确定它是否相关

Here is the full yaml config files(我将离开相关代码部分进行评论,以突出显示它;它不是在有效使用时)

如果有明显的解决方法,请提前致谢

2 个答案:

答案 0 :(得分:5)

根据您的描述,您所遇到的内容正是应该发生的事情。

您在PV/PVC definition中使用gcePersistentDiskaccessModeReadWriteOnce - 这意味着此PV只能附加到单个节点(强调节点此处,可能有多个Pod使用相同的PV在相同的节点上运行。你无能为力; gcePersistentDisk就像一个远程阻止设备,无法同时将其安装在多个节点上(除非只读)。

有一个不错的table that shows which PVs support ReadWriteMany(即同时对多个节点进行写访问):

  

重要!只能一次使用一种访问模式安装卷,即使它支持多种卷也是如此。例如,GCEPersistentDisk可以由单个节点或ReadOnlyMany由许多节点挂载为ReadWriteOnce,但不能同时挂载。

答案 1 :(得分:3)

您的部署yaml显示5个副本,这些副本在ReadWriteOnce模式下无法与GCE PD一起使用。 GCE PD只能以ReadOnlyMany模式附加到多个节点。

如果您需要跨所有副本共享可写存储,那么您应该查看NFS或Gluster等多作者解决方案。

如果您希望每个副本都有自己的磁盘,那么您可以使用StatefulSet,每个副本都有一个PVC。