Kubernetes 如何在谷歌云平台上获取服务的DNS名称?
在这个存储库中,我试图通过GKE上的NFS服务共享一个卷。如果使用硬编码的IP地址,则NFS文件共享成功 但是,在我看来,最好使用DNS名称而不是硬编码的IP地址 以下是用于在Google云平台中共享卷的NFS服务声明: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
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: "/"