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

chi*_*tti 7 kubernetes google-kubernetes-engine

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

pjv*_*vds 6

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

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

获取您的命名空间

$ kubectl get namespaces
NAME          LABELS    STATUS
default       <none>    Active
kube-system   <none>    Active
Run Code Online (Sandbox Code Playgroud)

您应该忽略该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
Run Code Online (Sandbox Code Playgroud)

此命令列出群集中可用的所有服务.因此,例如,如果我想获取service-frontend我可以使用以下DNS 的IP地址: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
Run Code Online (Sandbox Code Playgroud)

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

$ 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
Run Code Online (Sandbox Code Playgroud)

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


小智 1

它的工作方式应该与您链接到的文档中提到的方式相同。你尝试过吗?(即“my-service.my-ns”)