我在google容器引擎上运行了一个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,然后硬盘编码它的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-Service,就会得到一个新的IP,我必须根据它重新配置所有的PV。
这里最好的做法是什么?我很惊讶我没有找到任何一个例子,因为我认为这是很正常的事情 - 不是吗?
是否可以为服务设置一种静态IP,以便我可以依赖NFS服务始终使用相同的IP?
答案 0 :(得分:3)
你走在正确的轨道上。要确保您的服务使用的是静态IP,只需在服务的clusterIP: 1.2.3.3
部分添加spec:
即可。
来自规范example:
将来,我们可以使用服务名称将这些组合在一起,但是现在,您必须对IP进行硬编码。