背景
CoreOS-Kubernetes有一个关于Vagrant的多节点项目:
https://github.com/coreos/coreos-kubernetes https://coreos.com/kubernetes/docs/latest/kubernetes-on-vagrant.html
他们有一个针对etcd节点的自定义云配置,但是没有针对工作节点的云配置。对于那些,Vagrant文件引用shell脚本,其中包含一些云配置但主要是Kubernetes yaml:
https://github.com/coreos/coreos-kubernetes/blob/master/multi-node/generic/worker-install.sh
目标
我尝试将NFS目录挂载到coreOS工作节点上,以便在Kubernetes pod中使用。根据我在文档和教程中读到的关于Kubernetes的内容,我想首先在节点上挂载作为持久卷,就像在docker上一样:
http://www.emergingafrican.com/2015/02/enabling-docker-volumes-and-kubernetes.html
我看到一些帖子表示安装在pod本身可能有问题,并希望首先安装在coreOS工作节点上来避免它:
Kubernetes NFS volume mount fail with exit status 32
如果正确安装在吊舱中是标准方式,请告诉我,我会这样做。
问题
是否有为工作节点自定义云配置的选项?我即将开始攻击那个shell脚本,但我想我应该先检查一下。我查看了文档,但无法找到任何文档。
这是我试图添加到Vagrant文件的coreOS云配置:
https://coreos.com/os/docs/latest/mounting-storage.html#mounting-nfs-exports
答案 0 :(得分:0)
不需要在coreOS上安装NFS。 Kubernetes会在pod中为你做这件事:
http://kubernetes.io/v1.1/examples/nfs/README.html
结帐nfs-busybox复制控制器:
http://kubernetes.io/v1.1/examples/nfs/nfs-busybox-rc.yaml
我运行它并将其写入服务器。这帮我调试了应用程序。请注意,即使在您进入kubernetes节点并运行docker -it run / bin / bash时,nfs挂载也不会显示,但它们会安装在kubernetes pod中。这就是我的大部分误解发生的地方。我想你必须手动添加mount参数给命令。
此外,我的应用程序gogs将其配置文件存储在/ data中。为了让它工作,我首先将nfs安装到/ mnt。然后,就像在kubernetes nfs-busybox示例中一样,我创建了一个命令,它将/ data中的所有文件夹复制到/ mnt。在复制控制器yaml中,在container
节点下,我输入了一个命令:
command:
- sh
- -c
- 'sleep 300; cp -a /data /mnt; done'
这给了我足够的时间来运行我的应用程序的初始配置。然后我就等到睡眠时间到了,文件被复制了。
然后我将我的挂载点更改为/ data,现在应用程序从pod重新启动时停止的位置开始。与外部mysql服务器相结合,到目前为止看起来它是无状态的。