2

设置

名为 frontend 的部署的 pod 通过名为 frontend 的服务公开。

NAME                          READY     STATUS    RESTARTS   AGE
po/frontend-b48b88789-dcxs6   1/1       Running   0          2h

NAME              DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deploy/frontend   1         1         1            1           2h

NAME           TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
svc/frontend   ClusterIP   10.106.243.125   <none>        80/TCP    2h

问题

通过busybox查询服务前端的DNS名称返回服务IP地址。通过 busybox 查询 pod frontend-b48b88789-dcxs6 的 DNS 名称无法解析。

/ # nslookup frontend
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      frontend
Address 1: 10.106.243.125 frontend.exam.svc.cluster.local
/ # nslookup frontend-b48b88789-dcxs6
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

nslookup: can't resolve 'frontend-b48b88789-dcxs6'

问题

我必须做什么才能通过 Kubernetes 集群 DNS 系统解析 pod?

我一直在寻找答案的来源

4

1 回答 1

1

我认为如果你真的需要这个,那么你可能真正感兴趣的是StatefulSet,它提供了一种引用由它启动的 pod 的静态方式。使用 StatefulSet,您的 pod 将具有可预测的名称myapp-0,例如myapp-1等,您将能够将它们解析为 ie。myapp-0.mysvcmysvcstatefulset 的“管理”服务在哪里)

可预测的名称允许更轻松地配置需要形成集群的事物,此外,您还可以获得其他收益,例如顺序扩展、持久存储的映射或创建始终命中 StatefulSet 的给定 pod(如 pod 编号 N)的服务的能力,这意味着您例如,能够创建myapp-0始终指向myapp-0.mysvcpod 的服务。

于 2018-01-15T11:50:06.663 回答