【发布时间】:2017-03-23 10:49:50
【问题描述】:
我有一个在谷歌容器引擎上运行的 kubernetes 集群,它定义了一个运行 NFS 服务器的 Pod,我想通过各种 PersistentVolumes 在其他 Pod 中访问它。
如果 NFS 服务在同一个集群中,那么配置 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 硬编码其 Endpoint-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?
【问题讨论】:
标签: kubernetes nfs google-kubernetes-engine kube-dns