本文档介绍如何为管理员集群或用户集群配置 DNS。
集群的 DNS 配置保存在名为 default
的 ClusterDNS 自定义资源中。这是集群范围的资源;也就是说,它没有命名空间。
查看 ClusterDNS 资源
如需查看 ClusterDNS 资源,请运行以下命令:
kubectl --kubeconfig CLUSTER_KUBECONFIG get clusterdns default --output yaml
将 CLUSTER_KUBECONFIG 替换为集群 kubeconfig 文件的路径。
DNS 配置位于 spec
部分。如果 spec
部分为空或缺失,则集群将使用默认 Kubernetes CoreDNS 配置。
更改 DNS 配置
为名为 default
的 ClusterDNS 资源创建清单。根据需要填写 spec
。例如:
apiVersion: networking.gke.io/v1alpha1 kind: ClusterDNS metadata: name: default spec: upstreamNameservers: - serverIP: 8.8.8.8 - serverIP: 8.8.4.4 domains: - name: altostrat.com nameservers: - serverIP: 198.51.100.0.1 - name: my-own-personal-domain.com - serverIP: 203.0.113.1 - serverIP: 203.0.113.2 serverPort: 54 googleAccess: private
将清单保存到名为 my-dns.yaml
的文件,然后将该资源应用于集群:
kubectl --kubeconfig CLUSTER_KUBECONFIG apply -f my-dns.yaml
ClusterDNS 规范
spec.upstreamNameservers
对象数组,其中每个对象都有一个服务器 IP 地址和一个服务器端口(可选)。服务器端口的默认值为 53。
默认的上游域名服务器。默认情况下,对非集群网域的请求会转发到此组服务器。例如:
spec: upstreamNameservers: - serverIP: 8.8.8.8 - serverIP: 1.2.3.4 serverPort: 54
如果您没有为 upstreamNameservers
指定任何值,则 DNS 提供商会使用节点上的 /etc/resolve.conf
文件查找上游域名服务器列表。
spec.domains
特定网域的配置。这样可以替换 upstreamNameservers
中的配置。
您可以使用此部分为特定网域配置不同的上游域名服务器,而无需使用默认的上游域名服务器。
您还可以为网域启用查询日志记录。您可以对任何指定网域或集群网域 cluster.local 执行此操作。
例如:
spec: domains: - name: altostrat.com nameservers: - serverIP: 203.0.113.1 - name: my-own-personal-domain.com nameservers: - serverIP: 198.51.100.1 - serverIP: 198.51.100.2 serverPort: 50000 - name: cluster.local queryLogging: true
spec.googleAccess
字符串。如果您希望 Google 网域解析为专用访问 IP 地址,请将此设置为 "private"
。如果您希望 Google 网域解析为受限访问 IP 地址,请将此设置为 restricted
。如果您不希望对 Google 网域进行特殊处理,请将此值设置为 default
或将其移除。如需了解详情,请参阅配置适用于本地主机的专用 Google 访问通道。
例如:
spec: googleAccess: private