Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Azure Kubernetes 服务(AKS)对所有 1.12.x 和更高群集使用 CoreDNS 进行群集 DNS 管理和解析。 由于 AKS 是一项托管服务,因此你无法修改 CoreDNS (CoreFile) 的主要配置。 可以改用 Kubernetes ConfigMap 来替代默认设置。 若要查看默认的 AKS CoreDNS ConfigMap,请使用 kubectl get configmaps --namespace=kube-system coredns --output yaml 命令。
本文介绍如何在 Azure Kubernetes 服务(AKS)中使用 ConfigMaps 进行基本的 CoreDNS 自定义选项。
注意
以前,AKS 用于 kube-dns 群集 DNS 管理和解析,但现在已弃用。
kube-dns 通过 Kubernetes 配置映射提供不同的自定义选项。 CoreDNS 不 向后兼容 kube-dns。 必须更新以前的任何自定义项才能使用 CoreDNS。
先决条件
- 本文假定你拥有现有的 AKS 群集。 如果需要 AKS 群集,可以使用 Azure CLI、Azure PowerShell 或 Azure 门户 创建一个。
- 验证正在运行的 CoreDNS 版本。 配置值可能会在版本之间更改。
插件支持
支持所有内置 CoreDNS 插件。 不支持任何附加/第三方插件。
重要
创建配置(如本文中的配置)时,在data节中指定的名称必须以或.server结尾.override。 这个命名约定是在默认的 AKS CoreDNS ConfigMap 中定义的,可以使用 kubectl get configmaps --namespace=kube-system coredns --output yaml 命令查看。
配置 DNS 名称重写
在以下示例配置中创建一个名为
corednsms.yaml并粘贴的文件。 请确保将<domain to be rewritten>替换为您自己的完全限定域名(FQDN)。apiVersion: v1 kind: ConfigMap metadata: name: coredns-custom namespace: kube-system data: test.server: | <domain to be rewritten>.com:53 { log errors rewrite stop { name regex (.*)\.<domain to be rewritten>\.com {1}.default.svc.cluster.local answer name (.*)\.default\.svc\.cluster\.local {1}.<domain to be rewritten>.com } forward . /etc/resolv.conf # You can redirect this to a specific DNS server such as 10.0.0.10, but that server must be able to resolve the rewritten domain name }重要
如果重定向到 DNS 服务器(例如 CoreDNS 服务 IP),则该 DNS 服务器必须能够解析重写的域名。
使用
kubectl apply configmap命令创建 ConfigMap,并指定 YAML 清单的名称。kubectl apply -f corednsms.yaml使用
kubectl get configmaps命令验证是否已应用自定义项。kubectl get configmaps --namespace=kube-system coredns-custom -o yaml执行滚动重启以重新加载 ConfigMap,并使 Kubernetes 计划程序无需停机即可使用
kubectl rollout restart命令重启 CoreDNS。kubectl --namespace kube-system rollout restart deployment coredns
为网络流量指定转发服务器
在以下示例配置中创建一个名为
corednsms.yaml并粘贴的文件。 请确保将forward和<domain to be rewritten>替换为您自己的名称和值。apiVersion: v1 kind: ConfigMap metadata: name: coredns-custom namespace: kube-system data: test.server: | # You can select any name here, but it must end with the .server file extension <domain to be rewritten>.com:53 { forward foo.com 1.1.1.1 }使用
kubectl apply configmap命令创建 ConfigMap。kubectl apply -f corednsms.yaml执行滚动重启以重新加载 ConfigMap,并使 Kubernetes 计划程序无需停机即可使用
kubectl rollout restart命令重启 CoreDNS。kubectl --namespace kube-system rollout restart deployment coredns
使用自定义域
你可能想要配置只能在内部解析的自定义域。 例如,你可能想要解析自定义域 puglife.local,该域不是有效的顶级域。 在没有自定义域 ConfigMap 的情况下,AKS 群集无法解析该地址。
创建名为
corednsms.yaml并粘贴以下示例配置的新文件。 请务必使用自己的值更新自定义域和 IP 地址。apiVersion: v1 kind: ConfigMap metadata: name: coredns-custom namespace: kube-system data: puglife.server: | # You can select any name here, but it must end with the .server file extension puglife.local:53 { errors cache 30 forward . 192.11.0.1 # This is my test/dev DNS server }使用
kubectl apply configmap命令创建 ConfigMap。kubectl apply -f corednsms.yaml执行滚动重启以重新加载 ConfigMap,并使 Kubernetes 计划程序无需停机即可使用
kubectl rollout restart命令重启 CoreDNS。kubectl --namespace kube-system rollout restart deployment coredns
配置存根域
创建名为
corednsms.yaml的文件并粘贴以下示例配置。 请务必使用自己的值更新自定义域和 IP 地址。apiVersion: v1 kind: ConfigMap metadata: name: coredns-custom namespace: kube-system data: test.server: | # You can select any name here, but it must end with the .server file extension abc.com:53 { errors cache 30 forward . 1.2.3.4 } my.cluster.local:53 { errors cache 30 forward . 2.3.4.5 }使用
kubectl apply configmap命令创建 ConfigMap 并指定。kubectl apply -f corednsms.yaml执行滚动重启以重新加载 ConfigMap,并使 Kubernetes 计划程序无需停机即可使用
kubectl rollout restart命令重启 CoreDNS。kubectl --namespace kube-system rollout restart deployment coredns
添加自定义主机到IP映射
创建名为
corednsms.yaml的文件并粘贴以下示例配置。 请确保使用自己的值更新 IP 地址和主机名。apiVersion: v1 kind: ConfigMap metadata: name: coredns-custom # This is the name of the ConfigMap you can overwrite with your changes namespace: kube-system data: test.override: | # You can select any name here, but it must end with the .override file extension hosts { 10.0.0.1 example1.org 10.0.0.2 example2.org 10.0.0.3 example3.org fallthrough }使用
kubectl apply configmap命令创建 ConfigMap。kubectl apply -f corednsms.yaml执行滚动重启以重新加载 ConfigMap,并使 Kubernetes 计划程序无需停机即可使用
kubectl rollout restart命令重启 CoreDNS。kubectl --namespace kube-system rollout restart deployment coredns
后续步骤
- 若要排查 CoreDNS 问题,请参阅 排查 Azure Kubernetes 服务 (AKS) 上 CoreDNS 的问题。
- 若要了解 CoreDNS 自动缩放行为,请参阅 Azure Kubernetes 服务(AKS)中的自动缩放 CoreDNS。