cloud-init 中的 etcd dns-discovery

etcd dns-discovery within cloud-init

我如何bootstrap CoreOS 集群通过 cloud-init 进行 etcd 对等 dns 发现?

我只找到了使用发现令牌服务的示例,但没有找到用于 dns 发现的示例。关于这个的文档真的很少,但有时会被提及。

更新:

我正在寻找启动集群和使用 etcd 的 DNS 发现的可能性,如下所述:https://github.com/coreos/etcd/blob/a4018f25c91fff8f4f15cd2cee9f026650c7e688/Documentation/clustering.md#dns-discovery

理论上我想用 "discover-srv:" 之类的东西替换 "discovery:",但我不知道现在使用 cloud-init 是否可行。到目前为止我已经尝试过但失败了。

查看源代码我认为您需要的设置命名为:

discovery_srv

在 etcd2 部分。我想它应该采用与您提供的 link 中描述的设置相同的设置。它被翻译成环境变量 ETCD_DISCOVERY_SRV

另外一个注意的设置是:

proxy
proxy_srv

例如猜测,像下面这样的东西可能会起作用。我也有一种感觉,如果你使用破折号,它们会变成下划线,所以 discovery-srv 和 discovery_srv 可能是等价的。不要引用我的话!

coreos:
  etcd2:
    name: <hostname matching srv record>
    discovery_srv: example.com
    initial_cluster_state: new
    # multi-region and multi-cloud deployments need to use $public_ipv4
    advertise_client_urls: http://$public_ipv4:2379
    initial_advertise_peer_urls: http://$private_ipv4:2380
    # listen on both the official ports and the legacy ports
    # legacy ports can be omitted if your application doesn't depend on them
    listen_client_urls: http://0.0.0.0:2379,http://0.0.0.0:4001
    listen_peer_urls: http://$private_ipv4:2380,http://$private_ipv4:7001

---编辑---

我可以确认需要代理的节点的以下工作。

# cloud-config

coreos:
  etcd2:
    discovery-srv: example.com
    proxy: on
  units:
    name: etcd2.service
    command: start