首页 > 解决方案 > GKE上的可附加flexVolume不起作用

问题描述

我正在在集群上编写自己的 flexVolume 驱动程序,1.10.2-gke.3但在使其以可附加模式工作时遇到了麻烦。

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

我通过在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\") "

根据此问题评论以及文档,如果 kubelet 使用--enable-controller-attach-detach选项启动,则驱动程序也必须安装在主服务器上。查看正在运行的进程,未设置此选项,但同时可能是默认选项?

所以我的问题是:

谢谢!

标签: kubernetesgoogle-kubernetes-engine

解决方案


总之,GKE master 是由 Google 管理的,所以你无法访问 master。似乎不可能编写具有附加支持的 flexVolume 驱动程序,而无需将其安装在主机上。但是,对于这个问题和另一个问题(一次仅在一个节点上安装卷),我们建议联系 GKE 团队。它们在 Slack 上可用:slack.k8s.io


推荐阅读