Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 如何在谷歌云平台上获取服务的DNS名称?_Kubernetes_Google Cloud Platform - Fatal编程技术网

Kubernetes 如何在谷歌云平台上获取服务的DNS名称?

Kubernetes 如何在谷歌云平台上获取服务的DNS名称?,kubernetes,google-cloud-platform,Kubernetes,Google Cloud Platform,在这个存储库中,我试图通过GKE上的NFS服务共享一个卷。如果使用硬编码的IP地址,则NFS文件共享成功 但是,在我看来,最好使用DNS名称而不是硬编码的IP地址 以下是用于在Google云平台中共享卷的NFS服务声明: apiVersion: v1 kind: Service metadata: name: nfs-server spec: ports: - name: nfs port: 2049 - name: mountd port: 20

在这个存储库中,我试图通过GKE上的NFS服务共享一个卷。如果使用硬编码的IP地址,则NFS文件共享成功

但是,在我看来,最好使用DNS名称而不是硬编码的IP地址

以下是用于在Google云平台中共享卷的NFS服务声明:

apiVersion: v1
kind: Service
metadata:
  name: nfs-server
spec:
  ports:
    - name: nfs
      port: 2049
    - name: mountd
      port: 20048
    - name: rpcbind
      port: 111
  selector:
    role: nfs-server
以下是具有硬编码IP地址的PersistentVolume的定义:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: wp01-pv-data
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  nfs:
    server: 10.247.248.43 # with hard coded IP, it works
    path: "/"
以下是具有DNS名称的PersistentVolume的定义:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: wp01-pv-data
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  nfs:
    server:  nfs-service.default.svc.cluster.local # with DNS, it does not works
    path: "/"
我正在使用它获取服务的DNS。有什么遗漏的吗


谢谢

问题在于节点自身的DNS解析。将NFS共享装载到pod是kubelet在节点上启动的工作。因此,DNS解析也是根据节点本身上的/etc/resolv.conf进行的。只需将
名称服务器
添加到节点
/etc/resolv.conf
,就足够了,但在某些情况下,它可能会成为鸡毛蒜皮的问题

我只需将GKE集群的kubectl版本从
1.7.11-GKE.1
升级到
1.8.6-GKE.0
,就解决了这个问题

kubectl version
# Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.6", GitCommit:"6260bb08c46c31eea6cb538b34a9ceb3e406689c", GitTreeState:"clean", BuildDate:"2017-12-21T06:34:11Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
# Server Version: version.Info{Major:"1", Minor:"8+", GitVersion:"v1.8.6-gke.0", GitCommit:"ee9a97661f14ee0b1ca31d6edd30480c89347c79", GitTreeState:"clean", BuildDate:"2018-01-05T03:36:42Z", GoVersion:"go1.8.3b4", Compiler:"gc", Platform:"linux/amd64"}
实际上,这是yaml文件的最终版本:

apiVersion: v1
kind: Service
metadata:
  name: nfs-server
spec:
  # clusterIP: 10.3.240.20
  ports:
    - name: nfs
      port: 2049
    - name: mountd
      port: 20048
    - name: rpcbind
      port: 111
  selector:
    role: nfs-server
#  type: "LoadBalancer"


关于添加
servername
,您能否提供更多详细信息?thanksin/etc/resolv.conf如果您已经定义了DNS服务器,请尝试在最新的
kubectl
上为我添加一行kube DNS ClusterIP,使用此pv的任何部署都会遇到
没有最低可用性的问题。有什么建议吗?
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs
spec:
  capacity:
    storage: 1Mi
  accessModes:
    - ReadWriteMany
  nfs:
    # FIXED: Use internal DNS name
    server: nfs-server.default.svc.cluster.local 
    path: "/"