任务

Edit This Page

将 CoreDNS 设置为联邦集群的 DNS 提供者

Deprecated

强烈建议不要使用联邦 v1 版本联邦 v1 版本从未达到 GA 状态,且不再处于积极开发阶段。文档仅作为历史参考。

有关更多信息,请参阅预期的替代品 Kubernetes 联邦 v2 版本

此页面显示如何配置和部署 CoreDNS,将其用作联邦集群的 DNS 提供者

教程目标

准备开始

部署 CoreDNS 和 etcd 图表

CoreDNS 可以部署在各种配置中。下面解释的是一个参考,可以根据平台和联邦集群的需要进行调整。

为了部署 CoreDNS,我们将利用图表。 CoreDNS 将部署 etcd 作为后端,并且应该预先安装。etcd 也可以使用图表进行部署。下面显示了部署 etcd 的说明。

helm install --namespace my-namespace --name etcd-operator stable/etcd-operator
helm upgrade --namespace my-namespace --set cluster.enabled=true etcd-operator stable/etcd-operator

注意:etcd 默认部署配置可以被覆盖,适合主机集群。

部署成功后,可以使用主机集群中的 http://etcd-cluster.my-namespace:2379 端点访问 etcd。

应该定制 CoreDNS 默认配置适应联邦。 下面显示的是 Values.yaml,它覆盖了 CoreDNS 图表上的默认配置参数。

isClusterService: false
serviceType: "LoadBalancer"
plugins:
  kubernetes:
    enabled: false
  etcd:
    enabled: true
    zones:
    - "example.com."
    endpoint: "http://etcd-cluster.my-namespace:2379"

以上配置文件需要说明:

现在部署 CoreDNS 来运行

helm install --namespace my-namespace --name coredns -f Values.yaml stable/coredns

验证 etcd 和 CoreDNS,pod 都按预期运行。

使用 CoreDNS 作为 DNS 提供者部署联邦

可以使用 kubefed init 部署联邦控制平面。通过指定两个附加参数,可以选择 CoreDNS 作为 DNS 提供者。

--dns-provider=coredns
--dns-provider-config=coredns-provider.conf

coredns-provider.conf 的格式如下:

[Global]
etcd-endpoints = http://etcd-cluster.my-namespace:2379
zones = example.com.
coredns-endpoints = <coredns-server-ip>:<port>
Note:

CoreDNS 配置中的 plugins.etcd.zoneskubefed init--dns-zone-name 参数应该匹配。

在 nameserver resolv.conf 链中设置 CoreDNS 服务器

Note:

下面的部分只适用于 v1.7 之前的版本,如果 coredns-endpoint 参数是 在 coredns-provider.conf 中配置的,就会自动处理。

一旦部署了联邦控制平面并将联邦集群连接到联邦, 你需要将 CoreDNS 服务器添加到所有联邦集群中 pod 的 nameserver resolv.conf 链,因为这个自托管的 CoreDNS 服务器是不可公开发现的。 这可以通过在 kube-dns 部署中将下面的行添加到 dnsmasq 容器的参数中来实现。

--server=/example.com./<CoreDNS endpoint>

将上面的 example.com 替换为联邦域。

现在联邦集群已经为跨集群服务发现做好了准备!

反馈