kubernetes的DNS解析

《docker+k8s教程》

新建test-svc-dns目录,在test-svc-dns目录下新建两个文件busybox.yaml、myapp-pod-service.yaml

busybox.yaml

apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: default
spec:
  containers:
  - name: busybox
    image: busybox
    command:
      - sleep
      - "3600"

myapp-pod-service.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-myapp
  namespace: default
  labels:
    app: myapp
spec:
  containers:
  - name: myapp
    image: ikubernetes/myapp:v1
    ports:
    - name: http
      containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: service-myapp
  namespace: default
spec:
  selector:
    app: myapp
  ports:
  - name: http
    port: 80
    targetPort: 80

在test-svc-dns下运行部署命令

kubectl apply -f .

进入到busybox的pod中

kubectl exec -it busybox -- /bin/sh

通过域名访问Service

wget -O - -q http://service-myapp

在pod内能通过服务名获取到数据。

 

下面简单介绍下在pod网络,DNS的解析过程

在busybox中执行    cat /etc/resolv.conf

busybox中的DNS服务器地址是10.96.0.10

重新开一个xshell终端,连接master节点,执行命令 kubectl get svc -n kube-system

从上图可知,10.96.0.10是kube-dns的IP地址,即是说pod内的NDS服务器是kube-dns

 

既然知道了pod使用的DNS服务器是什么,那现在就来看下,pod解析DNS的过程。

先了解一些概念

service_name: 服务的名称
namespace:资源对象所在名称空间
domain:提供的域名后缀,比如默认的 cluster.local

在 pod 中通过 service_name.namespace.svc.domain 来访问kubernetes集群中的服务,如果 pod 和 service 在同一个 namespace 中,可以直接使用 service_name。

busybox、service-myapp都在默认名称空间default下。

所以当运行  wget -O - -q http://service-myapp  时,kubernetes会把域名修改为 service-myapp.default.svc.cluster.local

在busybox执行  nslookup service-myapp 查看DNS解析(busybox的nslookup命令似乎是有问题,时好时坏,如果无法解析,可多运行几次)

service-myapp.default.svc.cluster.local 域名对应的ip是 10.108.217.164。

10.108.217.164 就是service-myapp的ip地址。

 

总结下:pod的DNS服务器用的是kube-dns,pod可以通过service_name.namespace.svc.domain来访问集群中的Service。

 

也可以在节点上查看kube-dns的域名解析

dig -t A service-myapp.default.svc.cluster.local. @10.96.0.10

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值