当前位置:  首页>> 技术小册>> Kubernets合辑3-kubernetes介绍

在k8s集群中pod的IP地址会发生变化,k8s通过标签选择器筛选出一组pod,这组pod共同指关联到抽象资源service,这个service拥有固定的IP地址,即cluster ip。此时无论后端的pod如何变化,都可以请求都可以通过service到达后端的pod上。

每个service有着自己的名称和cluster IP地址,可以通过IP地址直接访问到service后端对应的pod资源,也可以使用DNS将cluster ip 和 service 名称关联,实现通过service的名称访问后端pod。kubernetes的dns插件有kube-dns和coredns两种,在kubernetes 1.11 开始使用coredns较多,在此之前使用kube-dns比较多。

使用dns解析时,如果在pod外,需要使用全域名解析如:nginx-web.default.svc.cluster.local,pod内部则可以使用短域名。

  1. [root@hdss7-21 ~]# kubectl exec nginx-ds-jdp7q -- /bin/bash -c "cat /etc/resolv.conf" # 重点关注主机域
  2. nameserver 192.168.0.2
  3. search default.svc.cluster.local svc.cluster.local cluster.local host.com
  4. options ndots:5
  5. #######
  6. # 全路径访问(常用在集群外访问情况):
  7. [root@hdss7-21 ~]# dig -t A kubernetes.default.svc.cluster.local @192.168.0.2 +short
  8. 192.168.0.1
  9. # 短域名访问(常用在同一个名称空间内pod之间访问)
  10. [root@hdss7-21 ~]# kubectl exec nginx-ds-jdp7q -- /bin/bash -c "host kubernetes"
  11. kubernetes.default.svc.cluster.local has address 192.168.0.1
  12. # 带名称空间的短域名(常用在跨名称空间pod之间访问)
  13. [root@hdss7-21 ~]# kubectl exec nginx-ds-jdp7q -- /bin/bash -c "host coredns.kube-system"
  14. coredns.kube-system.svc.cluster.local has address 192.168.0.2

在Pod数量比较多,频繁使用域名解析,出现DNS解析超时,此时可以考虑使用 local-dns-cache,这种方式会在各个节点部署一个本地DNS缓存服务器,可以大幅度减少Core DNS压力。


该分类下的相关小册推荐: