背景:
解释 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 对应sid