通过DNS或静态ClusterIP为PersistentVolume配置NFS服务器

Dan*_*elW 5 nfs kubernetes google-kubernetes-engine kube-dns

我有一个在谷歌容器引擎上运行的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
Run Code Online (Sandbox Code Playgroud)

我可以启动NFS服务器并通过它检查其ClusterIP kubectl describe svc nfs-service,然后硬盘编码它的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
Run Code Online (Sandbox Code Playgroud)

但这感觉不对 - 只要我需要重新创建NFS服务,就会得到一个新的IP,我必须根据它重新配置所有的PV.

  • 这里最好的做法是什么?我很惊讶我没有找到任何一个例子,因为我认为这是很正常的事情 - 不是吗?

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

Jan*_*art 3

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

从典型的例子来看:

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