【发布时间】:2018-12-07 16:07:47
【问题描述】:
我已经设置了一个包含三个节点的 kubernetes 集群。所有节点都是Linux centos机器。
我需要持久卷来存储数据,我正在努力实现这一目标。
我正在学习本教程。但它只涵盖一个节点集群。 https://kubernetes.io/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume/
由于我的集群由三个节点组成,我无法使用本地路径。以前的教程对我不起作用。
我需要一个网络路径,使用 NFS 对我来说似乎是一个合理的解决方案。 (有什么好的选择我想听。)
使用 NFS 网络挂载包含两个步骤。 首先,在网络路径上创建持久卷。 其次,将此网络路径定义为持久卷并使用它。
第二步非常简单。它在 kubernetes 文档中进行了解释,甚至还有示例 yaml。 文档:https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistent-volumes 例如:https://github.com/kubernetes/examples/blob/master/staging/volumes/nfs/nfs-pv.yaml
第一部分似乎也很简单。它在以下文档中进行了解释
/etc/exports
directory_to_share client(share_option1,...,share_optionN)
/etc/exports
/var/nfs/general 203.0.113.256(rw,sync,no_subtree_check)
/home 203.0.113.256(rw,sync,no_root_squash,no_subtree_check)
但是,当您将路径导出为 NFS 路径时,您应该进行一些配置并赋予客户端一些权限。基本上你需要客户端ip。
对于 kubernetes,我们使用 pod 等抽象,我们不想处理真实机器及其 IP 地址。所以,问题从这里开始。
所以,我不想将节点 ip 提供给 nfs 服务器。 (他们可能首先会改变。)应该有一个更好的解决方案,所有 pod(在任何节点中)应该能够连接到 NFS 网络路径。
即使无限制地允许所有 ip 或允许 ip 范围也可以解决问题。我想知道是否有这样的解决方案。但是,我也想听听什么是最佳做法。其他人如何使用来自 kubernetes 的 NFS 网络路径。
我还没有找到任何解决方案。如果您解决了类似的问题,请告诉我您是如何解决的。关于这个问题的任何文档也将是好的。提前致谢!
【问题讨论】:
-
我不想将节点的 ip 提供给 nfs 服务器,但是你对拥有
203.0.113.256的人的硬编码很酷?因为我希望这些地址以相同的频率变化。当然,如果您正在运行 cluster-autoscaler,那么新节点可能会神奇地出现,但我会说这不是典型情况 -
@MatthewLDaniel,我没有 Kubernetes 网络经验!我应该将节点 ip 或 pod ip 提供给 nfs 服务器吗?当一个pod到达nfs服务器时,请求源ip是什么,节点ip,pod ip或其他什么。由于nfs服务器在kubernetes集群之外,请求将在真实网络上进行,我假设它应该是节点ip。但是,我不确定,任何信息都会很有帮助。
-
我不确定这是否是最佳实践,但这里有一个可能的解决方案:stackoverflow.com/questions/45360084/…
-
是的,它将是节点的 IP,因为它将建立 NFS 挂载的底层机器(我不确定您所说的“源 ip”是什么意思);到 Pod 运行时,这已经发生并且只是卷安装到容器中
标签: docker kubernetes centos7 nfs persistent-storage