通过 DNS 或静态群集 IP 为 PersistentVolume 配置 NFS 服务器



我有一个在谷歌容器引擎上运行的 kubernetes 集群,它定义了一个运行 NFS 服务器的 Pod,我想通过各种PersistentVolume在其他 Pod 中访问它。

如果 NFS 服务位于同一群集中,配置该服务的最佳方式是什么?

根据各种文档,我发现不可能依赖 kube-dns 来实现这一点,因为启动 kubernetes pod 的节点没有配置为将其用作其 DNS。

所以这是毫无疑问的(而且真的不起作用 - 我测试了它,使用各种不同的主机名/FQDN......

apiVersion: v1
kind: PersistentVolume
metadata:
name: xxx-persistent-storage
labels:
app: xxx
spec:
capacity:
storage: 10Gi
nfs:
path: "/exports/xxx"
server: nfs-service.default.svc.cluster.local  # <-- does not work

我可以启动 NFS 服务器并通过kubectl describe svc nfs-service检查其 ClusterIP,然后对其 PV 的端点 IP 进行硬编码(这有效):

apiVersion: v1
kind: PersistentVolume
metadata:
name: xxx-persistent-storage
labels:
app: xxx
spec:
capacity:
storage: 10Gi
nfs:
path: "/exports/xxx"
server: 10.2.1.7  # <-- does work

但这感觉不对 - 一旦我需要重新创建 NFS 服务,就会获得一个新的 IP,我必须基于它重新配置所有 PV。

  • 这里的最佳实践是什么?我很惊讶我没有找到任何例子,因为我认为这是一件很正常的事情——不是吗?

  • 是否可以为服务设置一种静态 IP,以便我可以依赖始终为 NFS 服务设置相同的 IP?

你走在正确的轨道上。要确保您的服务使用静态 IP,只需在服务的spec:部分下添加clusterIP: 1.2.3.3

从规范示例中:

将来,我们将能够使用服务名称将它们绑定在一起,但现在,您必须对 IP 进行硬编码。

相关内容

  • 没有找到相关文章

最新更新