kubernetes - Google Container Engine 是否支持基于 DNS 的服务发现?

标签 kubernetes google-kubernetes-engine

从 kubernetes 文档中我看到有一个 DNS based service discovery机制。谷歌容器引擎是否支持这一点。如果是这样,发现在容器引擎中运行的服务的 DNS 名称格式是什么。我在容器引擎文档中找不到相关信息。

最佳答案

服务的 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

现在你可以做一个 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

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

关于kubernetes - Google Container Engine 是否支持基于 DNS 的服务发现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32862698/

相关文章:

kubernetes - helm value.yaml 全局部分中值的最佳实践

api - 如何获取 GCP 中 VM 实例的账单?

kubernetes - 如何将 Google Container Engine 中的自定义指标记录到 Stackdriver?

kubernetes - Kubernetes-监控号码请求

python - 如果在 python multiprocessing.cpu_count() 中返回 64,我是否受益于 gcloud Compute Engine 的 96 个 vCPU?

amazon-web-services - Kubernetes (GKE/AWS/Azure) 针对大型作业的扩展

kubernetes - 如何检查字段是否在自定义资源中显式设置

kubernetes - 如何将持久卷声明与 gcePersistentDisk 绑定(bind)?

kubernetes - k8s:服务未更改但未列出

Jenkins Kubernetes Serviceaccount 无法列出 Pod