为集群配置 DNS

本文档介绍了如何为 Anthos clusters on Bare Metal 配置域名系统 (DNS) 提供商选项。集群的 DNS 配置保存在名为 default 的 ClusterDNS 自定义资源中。此资源属于集群级资源;也就是说,它没有命名空间。ClusterDNS 自定义资源适用于所有集群类型。

创建 ClusterDNS 资源

为名为 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 ADMIN_KUBECONFIG apply -f my-dns.yaml

ADMIN_KUBECONFIG 替换为管理员集群 kubeconfig 文件的路径。

查看 ClusterDNS 资源

如需查看 ClusterDNS 资源,请运行以下命令:

kubectl --kubeconfig ADMIN_KUBECONFIG get clusterdns default --output yaml

ADMIN_KUBECONFIG 替换为管理员集群 kubeconfig 文件的路径。

ClusterDNS 规范

以下部分介绍了用于为集群配置 DNS 的 ClusterDNS 自定义资源定义的各个部分。您可以随时更新集群的 ClusterDNS 资源。

spec.upstreamNameservers

使用对象数组指定默认上游域名服务器,其中每个对象都具有服务器 IP 地址和(可选)服务器端口。服务器端口的默认值为 53。默认情况下,非集群网域请求会转发到此服务器地址数组。

以下是 upstreamNameservers 配置示例:

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

枚举(privaterestricteddefault)。指定如何处理 Google 网域。googleAccess 值指定以下行为:

  • default:对 Google 网域不进行任何特殊处理。移除 googleAccess 字段会产生相同的效果。

  • private:仅将 Google 网域解析为专用访问通道 IP 地址。

  • restricted:仅将 Google 网域解析为访问受限的 IP 地址。

以下设置示例仅将 Google 网域解析为专用访问通道 IP 地址:

spec:
  googleAccess: private

如需了解详情,请参阅配置适用于本地主机的专用 Google 访问通道