Google容器引擎是否支持基于DNS的服务发现?

时间:2015-09-30 09:34:59

标签: kubernetes google-kubernetes-engine

从kubernetes文档中我看到有DNS based service discovery机制。 Google Container Engine是否支持此功能。如果是这样,发现在Container Engine中运行的服务的DNS名称格式是什么。我在Container Engine文档中找不到相关信息。

2 个答案:

答案 0 :(得分:6)

服务的DNS名称如下:{service-name}.{namespace}.svc.cluster.local

假设您已配置kubectl以使用群集,您应该能够通过以下步骤获取服务和命名空间详细信息。

获取您的命名空间

$ kubectl get namespaces
NAME          LABELS    STATUS
default       <none>    Active
kube-system   <none>    Active

您应该忽略kube-system条目,因为这是针对群集本身的。所有其他条目都是您的namespaces。默认情况下,会有一个名为default的额外命名空间。

获取您的服务

$ kubectl get services
NAME                  LABELS                                                    SELECTOR                   IP(S)            PORT(S)
broker-partition0     name=broker-partition0,type=broker                        name=broker-partition0     10.203.248.95    5050/TCP
broker-partition1     name=broker-partition1,type=broker                        name=broker-partition1     10.203.249.91    5050/TCP
kubernetes            component=apiserver,provider=kubernetes                   <none>                     10.203.240.1     443/TCP
service-frontend      name=service-frontend,service=frontend                    name=service-frontend      10.203.246.16    80/TCP
                                                                                                           104.155.61.198   
service-membership0   name=service-membership0,partition=0,service=membership   name=service-membership0   10.203.246.242   80/TCP
service-membership1   name=service-membership1,partition=1,service=membership   name=service-membership1   10.203.248.211   80/TCP

此命令列出群集中可用的所有服务。例如,如果我想获取service-frontend的IP地址,我可以使用以下DNS:service-frontend.default.svc.cluster.local

使用busybox pod验证DNS

您可以创建一个busybox pod并使用该pod执行nslookup命令来查询DNS服务器。

$ kubectl create -f - << EOF
apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: default
spec:
  containers:
  - image: busybox
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
    name: busybox
  restartPolicy: Always
EOF

现在,您可以从群集中的pod中执行nslookup

$ kubectl exec busybox -- nslookup broker-partition0.default.svc.cluster.local
Server:    10.203.240.10 
Address 1: 10.203.240.10

Name:      service-frontend.default.svc.cluster.local
Address 1: 10.203.246.16

您可以在此处看到Addres 1条目是service-frontend服务的IP,与kubectl get services列出的IP地址相同。

答案 1 :(得分:1)

它的工作方式与您链接的文档中提到的方式相同。你试过吗? (即&#34; my-service.my-ns&#34;)