chi*_*tti 7 kubernetes google-kubernetes-engine
从kubernetes文档中我看到有一个基于DNS的服务发现机制.Google Container Engine是否支持此功能.如果是这样,发现在Container Engine中运行的服务的DNS名称格式是什么.我在Container Engine文档中找不到相关信息.
服务的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并使用该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.
| 归档时间: |
|
| 查看次数: |
2041 次 |
| 最近记录: |