GKE上的可附加flexVolume无法正常工作

时间:2018-07-12 09:36:23

标签: kubernetes google-kubernetes-engine

我正在1.10.2-gke.3群集上编写自己的flexVolume驱动程序,但遇到麻烦使其无法在可连接模式下工作。

该驱动程序在不可连接模式下工作,但是ReadWriteOnce不会一次只在一个节点上强制安装,这是我的驱动程序的要求,也是我在此处要实现的最终目标。 / p>

我通过返回init调用中的功能来使驱动程序可附加: {"status": "Success", "capabilities": {"attach": true}}

然后,当使用此驱动程序创建引用该卷的Pod时,仅调用getvolumename。我在这里返回的内容或根本没有实现电话都没有关系。这也是驱动程序的唯一调用,即永远不会被attach等调用。

日志表明该卷未注册为节点正在使用中:

kubelet[1910]: W0712 flexVolume driver a3cloud/glusterloop: using default GetVolumeName for volume a3cloud-system-test
kubelet[1910]: I0712 operationExecutor.VerifyControllerAttachedVolume started for volume "a3cloud-system-test" (UniqueName: "flexvolume-a3cloud/glusterloop/a3cloud-system-test") pod "test-56c867dd4d-75hwc" (UID: "4f633bb6-85b1-11e8-adb3-42010a9c0fc8")
kubelet[1910]: E0712 Operation for "\"flexvolume-a3cloud/glusterloop/a3cloud-system-test\"" failed. No retries permitted until 2018-07-12 08:57:24.360177039 +0000 UTC m=+64585.959480766 (durationBeforeRetry 2m2s). Error: "Volume has not been added to the list of VolumesInUse in the node's volume status for volume \"a3cloud-system-test\" (UniqueName: \"flexvolume-a3cloud/glusterloop/a3cloud-system-test\") pod \"test-56c867dd4d-75hwc\" (UID: \"4f633bb6-85b1-11e8-adb3-42010a9c0fc8\") "

根据this issue commentthe docs,如果kubelet以--enable-controller-attach-detach选项启动,则驱动程序也必须安装在主服务器上。从正在运行的进程来看,这个选项没有设置,但是在此期间它可能是默认选项吗?

所以我的问题是:

  • 是否可以编写具有可附加支持的flexVolume驱动程序而无需将其安装在主服务器上?
  • 是否可以在GKE主服务器上安装flexVolume驱动程序?
  • 还有其他方法可以确保我的卷一次只能安装在一个节点上(无需破解自己的锁定解决方案)吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

总而言之,GKE母版由Google管理,因此您无法访问母版。如果没有将其安装在主服务器上,似乎无法编写具有可附加支持的flexVolume驱动程序。但是,对于这个问题和另一个问题(一次仅在一个节点上安装卷),我们建议与GKE团队联系。它们可在Slack:slack.k8s.io上获得。