CoreDNS插件是一款通过链式插件的方式为Kubernetes提供域名解析服务的DNS服务器。
CoreDNS是由CNCF孵化的开源软件,用于Cloud-Native环境下的DNS服务器和服务发现解决方案。CoreDNS实现了插件链式架构,能够按需组合插件,运行效率高、配置灵活。在kubernetes集群中使用CoreDNS能够自动发现集群内的服务,并为这些服务提供域名解析。同时,通过级联华为云的DNS服务器,还能够为集群内的工作负载提供外部域名的解析服务。
该插件为系统资源插件,kubernetes 1.11及以上版本的集群在创建时默认安装。
目前CoreDNS已经成为社区kubernetes 1.11及以上版本集群推荐的DNS服务器解决方案。
CoreDNS官网:https://coredns.io/
开源社区地址:https://github.com/coredns/coredns
DNS详细使用方法请参见Kubernetes集群内置DNS配置说明或通过kubectl配置kube-dns/CoreDNS高可用。
CoreDNS正常运行或升级时,请确保集群中的可用节点数大于等于CoreDNS的实例数,且CoreDNS的所有实例都处于运行状态,否则将导致插件异常或升级失败。
本插件为系统默认安装,若因特殊情况卸载后,可参照如下步骤重新安装。
参数 |
参数说明 |
---|---|
插件规格 |
并发域名解析能力,请根据业务需求选择插件规格。 |
实例数 |
选择上方插件规格后,显示插件中的实例数,此处仅作显示。 |
容器 |
选择插件规格后,显示插件容器的CPU和内存配额,此处仅作显示。 |
提示 |
关于本插件的注意事项,请仔细阅读。 |
存根域 |
单击“添加”,您可对自定义的域名配置域名服务器,格式为一个键值对,键为DNS后缀域名,值为一个或一组DNS IP地址,如"acme.local -- 1.2.3.4,6.7.8.9"。 |
待插件安装完成后,单击“返回”,在“插件实例”页签下,选择对应的集群,可查看到运行中的实例,这表明该插件已在当前集群的各节点中安装。
集群管理员可以修改CoreDNS Corefile的ConfigMap以更改服务发现的工作方式。使用插件proxy可对CoreDNS的存根域进行配置。
若集群管理员有一个位于10.150.0.1的Consul域名解析服务器,并且所有Consul的域名都带有.consul.local的后缀。
执行以下命令,在CoreDNS的ConfigMap中添加如下信息即可将该域名服务器配置在CoreDNS中:
kubectl edit configmap coredns -n kube-system
参照下方示例进行配置:
consul.local:5353 { errors cache 30 proxy . 10.150.0.1 }
v1.15.11及之后的集群版本,修改后最终的ConfigMap如下所示:
apiVersion: v1 metadata: name: coredns namespace: kube-system selfLink: /api/v1/namespaces/kube-system/configmaps/coredns uid: 00cb8f29-62d7-4df8-a769-0a16237903c1 resourceVersion: '2074614' creationTimestamp: '2021-04-07T03:52:42Z' labels: app: coredns k8s-app: coredns kubernetes.io/cluster-service: 'true' kubernetes.io/name: CoreDNS release: cceaddon-coredns data: Corefile: |- .:5353 { bind {$POD_IP} cache 30 errors health {$POD_IP}:8080 kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure upstream /etc/resolv.conf fallthrough in-addr.arpa ip6.arpa } loadbalance round_robin prometheus {$POD_IP}:9153 forward . /etc/resolv.conf reload } acme.local:5353 { bind {$POD_IP} errors cache 30 forward . 1.2.3.4 } test.com:5353 { bind {$POD_IP} errors cache 30 forward . 8.8.8.8 }
1.15.11之前的集群版本,修改后最终的ConfigMap如下所示:
apiVersion: v1 data: Corefile: |- .:5353 { cache 30 errors health kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure upstream /etc/resolv.conf fallthrough in-addr.arpa ip6.arpa } loadbalance round_robin prometheus 0.0.0.0:9153 proxy . /etc/resolv.conf reload } consul.local:5353 { errors cache 30 proxy . 10.150.0.1 } kind: ConfigMap metadata: name: coredns namespace: kube-system
DNS策略可以在每个pod基础上进行设置,目前,Kubernetes支持Default、ClusterFirst、ClusterFirstWithHostNet和None四种DNS策略,具体请参见https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/。这些策略在pod-specific的dnsPolicy字段中指定。
路由请求流程:
未配置存根域:没有匹配上配置的集群域名后缀的任何请求,例如 “www.kubernetes.io”,将会被转发到继承自节点的上游域名服务器。
已配置存根域:如果配置了存根域和上游DNS服务器,DNS查询将基于下面的流程对请求进行路由:
1.一旦我发现数学有题目不会做了我就跳过,这一跳我发现根本停不下来。 2.慢点...
1. 为何要转技术栈 在这之前 我已有五六年的C/C 的开发经验 Java相关的知识还是...
引言 但凡是千禧年之前出生的国人,心里大体都有一个武侠情结,那是一个由金庸、...
云桌面提供以下相关API接口。 集群管理 API 描述 CreateCluster 创建集群 Descri...
自长途枢纽IDC机房建成投入使用以来,河南网通依靠规范的管理和优质的服务,使ID...
本文转载自微信公众号「Java极客技术」,作者鸭血粉丝。转载本文请联系Java极客...
如果想要进入互联网这个行业,首先自己要有一个网站,网站离不开服务器的支持,...
近日,国内首个针对云平台的商用密码应用安全性评估(以下简称密评)结果出炉。阿...
2013已经进入了云时代,开年之初国产服务器在市场关注度排名中上升,并首次晋级...
购买 域名 和空间大约多少钱?买域名和空间那就是为了搭 建网站 了。一般搭建网...