0

背景

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 卷挂载失败,退出状态为 32

如果直接安装在吊舱中是标准方式,请告诉我,我会这样做。

问题

是否有为工作节点自定义云配置的选项?我即将开始破解那个 shell 脚本,但我想我应该先检查一下。我浏览了文档,但找不到任何文档。

这是我尝试添加到 Vagrant 文件的 coreOS 云配置:

https://coreos.com/os/docs/latest/mounting-storage.html#mounting-nfs-exports

4

1 回答 1

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

我运行它并让它将文件写入服务器。这帮助我调试了应用程序。请注意,即使当您 ssh 进入 kubernetes 节点并运行 docker -it run /bin/bash 时未显示 nfs 挂载,它们也会挂载在 kubernetes pod 中。这就是我的大部分误解发生的地方。我想您必须在手动执行时将安装参数添加到命令中。

此外,我的应用程序 gogs 将其配置文件存储在 /data 中。为了让它工作,我首先将 nfs 挂载到 /mnt。然后,就像在 kubernetes nfs-busybox 示例中一样,我创建了一个命令,它将 /data 中的所有文件夹复制到 /mnt 。在复制控制器 yaml 中,在container节点下,我输入了一个命令:

    command:
      - sh
      - -c
      - 'sleep 300; cp -a /data /mnt; done'

这给了我足够的时间来运行我的应用程序的初始配置。然后我就等到睡眠时间到了,文件就被复制过来了。

然后我将我的挂载点更改为 /data,现在应用程序在 pod 重新启动时从它停止的地方开始。再加上外部的mysql服务器,到目前为止它看起来像是无状态的。

于 2016-02-01T21:10:34.763 回答