设置
名为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?
来源我一直在寻找答案
1 回答
我认为,如果你真的需要这个,那么你真正感兴趣的是StatefulSet,它提供了一种有点静态的方式来引用由它调整的pod . 使用StatefulSet,您的pod将具有可预测的名称,如
myapp-0
,myapp-1
等,您将能够将它们解析为ie .myapp-0.mysvc
(其中mysvc
是有状态的"governing"服务)可预测的名称允许更容易地配置需要形成集群的事物,并且您可以获得其他收益,例如顺序扩展,持久存储的映射或创建始终命中StatefulSet的给定pod(如在pod数N中)的服务的能力,这意味着您例如,能够创建始终指向
myapp-0.mysvc
pod的myapp-0
服务 .