作为服务发现机制的基本功能,在集群内需要能够通过服务名对服务进行访问,这就是需要一个集群范围内的DNS服务来完成从服务名到ClusterIP 地址的解析。DNS服务在Kubernetes 的发展中经历了3个阶段,这里我只讲以CoreDNS 为例,说明KUbernetes 集群DNS 服务的搭建过程。
1. 修改每个Node 上Kubelet 的DNS 启动参数
修改每个Node 上kubelet 的启动参数,在其中加上以下两个参数。
(1)–cluster-dns=169.169.0.100 : 为DNS 服务的CLusterIP 地址
(2)–cluster-domain=cluster.local: 为在DNS 服务中设置的域名
然后重启kubelet 服务。
2. 部署CoreDNS服务
部署CoreDNS 服务时需要创建3个资源对象: 1个ConfigMap,1个Deployment 和 1个Service 。在启用了RBAC 的集群中,还可以设置ServiceAccount ,ClusterRole,ClusterRoleBinding 对CoreDNS 容器进行权限设置。
ConfigMap “coredns” 主要设置CoreDNS 的主要配置文件Corefile 的内容,其中可以定义各种域名的解析方式和使用的插件,示例如下:
apiVersion: v1
kind: ConfigMap
metadata:
name: coredns
namespace: kube-system
labels:
addonmanager.kubernetes.io/mode: EnsureExists
data:
Corefile: |
cluster.local {
errors
health {
lameduck 5s
}
ready
kubernetes cluster.local 169.169.0.0/16 {
fallthrouth in-addr.arpa ip6.arpa
}
prometheus :9153
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
. {
cache 30
loadbalance
forward . /etc/resolv.conf
}
Deployment “coredns” 主要设置CoreD