我想在我的 Amazon Elastic Kubernetes Service(Amazon EKS)集群中使用 CoreDNS 配置条件转发器。
简短描述
使用 CoreDNS 为发送至自定义 DNS 服务器解析的域的 DNS 查询配置条件转发器。有关更多信息,请参阅 Kubernetes 网站上的自定义 DNS 服务。
**重要事项:**在对 CoreDNS Amazon EKS 附加组件进行配置更改之前,必须确定 Amazon EKS 管理的设置。您可以在 Amazon EKS 附加组件配置中找到此信息。当修改 Amazon EKS 管理的字段时,Amazon EKS 无法管理该附加组件。更新附加组件时,Amazon EKS 可能会覆盖您的更改。
解决方法
以下解决方法适用于 CoreDNS 自主管理型和 Amazon EKS 附加组件配置。
配置自主管理型附加组件
运行以下命令来修改 CoreDNS ConfigMap 并添加自定义 DNS 条件转发器配置:
$ kubectl -n kube-system edit configmap coredns
输出类似于以下内容:
apiVersion: v1
kind: ConfigMap
metadata:
annotations:
labels:
eks.amazonaws.com/component: coredns
k8s-app: kube-dns
name: coredns
namespace: kube-system
data:
Corefile: |
.:53 {
errors
health
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
fallthrough in-addr.arpa ip6.arpa
}
prometheus :9153
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
domain-name:53 {
errors
cache 30
forward . custom-dns-server
reload
}
注意: 将 domain-name 替换为您的域名,将 custom-dns-server 替换为您的自定义 DNS 服务器 IP 地址。
配置 Amazon EKS 附加组件
要对 Amazon EKS 托管 CoreDNS 附加组件进行更改,请完成以下步骤:
-
打开 Amazon EKS 控制台。
-
在导航窗格上,选择集群。
-
选择您的集群的名称。
-
选择附加组件选项卡。
-
选择 CoreDNS 附加组件,然后选择编辑。
-
在编辑页面上,选择可选配置设置部分。在配置值部分,添加自定义 DNS 条件转发器配置:
corefile: |
.:53 {
errors
health
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
fallthrough in-addr.arpa ip6.arpa
}
prometheus :9153
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
domain-name:53 {
errors
cache 30
forward . custom-dns-server
reload
}
注意: 将 domain-name 替换为您的域名,将 custom-dns-server 替换为您的自定义 DNS 服务器 IP 地址。
验证域名解析
要验证域名解析是否有效,请运行下面的命令:
$ kubectl run busybox --restart=Never --image=busybox:1.28 -- sleep 3600
$ kubectl exec busybox -- nslookup domain-name
**注意:**将 domain-name 替换为您的域名。