Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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。