我正在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 comment和the docs,如果kubelet以--enable-controller-attach-detach
选项启动,则驱动程序也必须安装在主服务器上。从正在运行的进程来看,这个选项没有设置,但是在此期间它可能是默认选项吗?
所以我的问题是:
谢谢!
答案 0 :(得分:0)
总而言之,GKE母版由Google管理,因此您无法访问母版。如果没有将其安装在主服务器上,似乎无法编写具有可附加支持的flexVolume驱动程序。但是,对于这个问题和另一个问题(一次仅在一个节点上安装卷),我们建议与GKE团队联系。它们可在Slack:slack.k8s.io上获得。