通过DNS或静态ClusterIP

时间:2017-03-23 10:49:50

标签: kubernetes nfs google-kubernetes-engine kube-dns

我在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?

1 个答案:

答案 0 :(得分:3)

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

来自规范example

  

将来,我们可以使用服务名称将这些组合在一起,但是现在,您必须对IP进行硬编码。