Tasks

Step-by-step instructions for performing operations with Kubernetes.

Edit This Page

设置 CoreDNS 作为集群联邦的 DNS 提供商

本文展示了如何配置并部署 CoreDNS 作为集群联邦的 DNS 提供商。

Objectives

Before you begin

部署 CoreDNS 和 etcd charts

我们可以按照不同的配置部署 CoreDNS。 下面是一种参考,您可以对其进行调整,以适应平台和集群联邦的需求:

我们可以利用 helm charts 来部署 CoreDNS。 CoreDNS 部署时会以 etcd 作为后端,并且 etcd 应预先安装。 etcd 也可以利用 helm charts 进行部署。 下面展示了部署 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

注意:可以覆盖默认的部署配置,来适应 host 集群。

部署成功后,可以在 host 集群内通过 http://etcd-cluster.my-namespace:2379 端点访问 etcd。

您需要定制 CoreDNS 默认配置,以适应联邦。 下面展示的是 Values.yaml,它覆盖了 CoreDNS chart 的默认配置参数。

Values.yaml
isClusterService: false
serviceType: "LoadBalancer"
middleware:
  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>

注意:CoreDNS 配置中的 middleware.etcd.zones 与 kubefed init 的 –dns-zone-name 参数应匹配。

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

注意:以下章节只适应于 1.7 以前的版本,且如上面章节所描述的,如果在 coredns-provider.conf 中配置了 coredns-endpoints 参数,会自动将 CoreDNS 服务器配置到名称服务器 resolv.conf 链中。

由于这种自主的 CoreDNS 服务器不能够公开发现,一旦联邦控制平面部署完成,且要联合的集群加入了联邦, 您需要将 CoreDNS 服务器加入到所有联邦集群的 pod 名称服务器 resolv.conf 链中。 这可以通过将下面的内容加入到 kube-dns deployment 中的 dnsmasq 容器参数来实现。

--server=/example.com./<CoreDNS 端点>

用联邦的域替换上面的 example.com

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

Analytics

Create an Issue Edit this Page