一.k8s的service和ep是如何关联和相互影响的
1.api-server创建service对象,与service绑定的pod地址:称之为endpoints
2.服务发现方面:kube-proxy监控service后端endpoint的动态变化,并且维护service和endpoint的映射关系
二.k8s coredns解析流程,如何访问外网
运行Pod时,kubelet将预先配置集群DNS服务器到Pod中,并搜索节点自己的DNS设置路径(默认路径/etc/resolv)。当我们k8s内部DNS无法解析的域名时会将请求抛给上一级DNS解析器,也就是我们宿主机级别解析器进行解析
三.k8s coredns和kubedns区别
在Kubernetes1.11版本中,CoreDNS已经实现了基于DNS的服务发现的GA,可作为kube-dns插件的替代品。使用kube-dns集群插件对于实施的可靠性、灵活性和安全性存在一些担忧
CoreDNS是一个通用的权威DNS服务器,提供与Kubernetes后向兼容但可扩展的集成。它解决了kube-dns所遇到的问题,并提供了许多独特的功能,可以解决各种各样的用力。
实施差异
在kube-dns中,一个Pod内使用了数个容器: kubedns、dnsmasq和sidecar。kubedns容器监视Kubernetes API并基于Kubernetes DNS规范提供DNS记录,dnsmasq提供缓存和存根域支持,sidecar提供指标和健康检查。
kube-dns设置会导致一些问题随着时间的推移而出现。首先,dnsmqsq中的安全漏洞导致过去需要发布Kubernetes安全补丁。此外,由于dnsmasq处理根羽,但kube-dns处理External Services,因此无法在外部服务中使用根域。
在CoreDNS中,所有这些功能都在一个容器中完成—-该容器运行用GO编写的进程。启用的不同插件来复制kube-dns中的功能