Kubernetes集群Coredns组件的妙处
1.Coredns基本概念
CoreDNS项目是SkyDNS2的作者,Miek Gieben采用更模块化,可扩展的框架构建,将此DNS服务器作为Kube-DNS的替代品。CoreDNS作为CNCF中的托管的一个项目,在Kuberentes1.9版本中,使用kubeadm方式安装的集群可以通过以下命令直接安装CoreDNS。
coredns用来解析service地址,所以service的名称就可以看成一个域名,coredns会将service的名称解析成对应的service ip,生产环境通常都是由一个nginx pod负载后面所有的项目pod。
service ip有时候也许会发生改变,但是service的名称一般都是不会改变的,在写nginx负载均衡配置时,常以如下配置来完成nginx负载均衡后端pod
通过coredns解析service获取后端资源的格式:service资源名称.namespace名称:pod端口
。
upstream know-8080 {
server know-prod-8080.prod-know:8080; #这样配置后,当请求发送到know-8080资源池后,会被转发到prod-know命名空间下的know-prod-8080这个deployment资源上
}
当然想要ping通不同namespace中的pod,也可以使用service名称.namespace名称
或者deployment.namespace
的方式来实现,否则不同的命名空间的pod无法通讯。