Rancher-FileOrCreate的问题
概述
最近在 Rancher 集群上部署一个应用的时候,因为使用了 Hostpath
,并且创建了一个文件,按照 FileOrCreate
的模式创建的,常理来说,如果母机上没有这个文件,应该是可以创建出来的,但是在 Rancher 的集群上部署的时候就出了一个比较奇怪的情况,预期的文件,竟然变成了文件夹,一开始以为是参数有问题,反复看了几遍官方文档,感觉还是没啥问题。于是检索一下相关的 issue,果然发现了 HostPath volume type: FileOrCreate creates a directory not a file in RKE provisioned clusters。
问题研究
这个 issue 快一年了,还是 Open,Rancher 团队和社区也没太关心,这个可能跟这种 Hostpath
使用的场景比较少有关。因为以前使用过,但从来没有发现过类似的问题,仔细考虑了一下,可能跟以前管理的集群都是物理机/VM 部署的 kubelet,这个可能会跟 Rancher 是以 Docker 方式来运行 kubelet 有关。
Bind mounts may be stored anywhere on the host system. They may even be important system files or directories. Non-Docker processes on the Docker host or a Docker container can modify them at any time.
下面是容器化的 kubelet 的 docker inspect
的结果,从结果上看,猜测是 mount
参数的一些问题, 因为 Rancher RKE 是通过调用 Docker Engine 的 /containers/create
接口来创建容器化的 kubelet 的,所以如果要修改这个问题,可能还需要仔细看下容器创建的时候,相关的参数应该怎么传递,按照 Docker 的文档看,这个接口在创建容器的时候可能是使用了 -v
这个选项来挂载目录。
|
|
暂时没有时间深入去看,所以如果只是想简单解决的话,可以手动在母机上创建需要的文件。