kubernetes dns详解

背景:

解释 kube-proxy 和kube-dns 的区别

@hxx 一句话总结

访问任何一个服务都需要知道ip+port,这是无疑的,那么访问service也当然需要,kube-dns是为了解决通过域名来访问service!

而,从pod 访问 service(也可以说是到service后面的pod),是需要kube-proxy来实现的,kube-proxy实现的方式有两个:userspace 和iptables!

可以理解为 kube-dns 只是其中的一个域名服务,和edoc一样,只要部署几个服务节点即可!而kube-proxy是每个node 都需要部署的,以demonset的形式部署!

 

正文:

1: kube-dns是什么?

kube-dns是为了解决service使用endpoint(service名字)来实现服务发现的一个域名解析服务!

kube-dns实现服务发现功能要解决下面几个问题:如何将域名解析成svc vip? 如果知道这种对应关系?svc backend变化或者故障如何发现转移?pod 又是如何找到kube dns的?

它内部包含四个组件:

etcd,它的用途是保存DNS规则。 @hxx 1.3之后无需配置etcd

kube2sky,作用是写入DNS规则。 @hxx 1.3之后叫kubedns,监控并记录vip 到name 的变化映射关系

skydns,提供DNS解析服务。 @hxx 对应 dnsmasq,提供域名查询,并缓存查找结果

healthz,提供健康检查功能。 @hxx 对应sidecar

在云搜的搭建中,在集群内部会创建kube-dns 的pod(并不是每个node节点都安装),

如下:

[root()@tjtx1 ~]# kubectl get pod -n kube-system |grep dns

kube-dns-3257220715-0lsx1 3/3 Running 0 222d

kube-

你可能感兴趣的:(kubernetes dns详解)