如何使用DNS发现(SRV)在Kubernetes中设置ETCD群集?

如何使用DNS发现(SRV)在Kubernetes中设置ETCD群集?,kubernetes,dns,etcd,srv,Kubernetes,Dns,Etcd,Srv,我希望在我的k8s集群中运行一个动态etcd集群。我能想到的动态实现的最好方法(没有硬编码的地址、名称等)是使用DNS发现,使用内部k8s DNS(CoreDNS) 我找到了有关为k8s中的服务创建的SRV记录的独立信息,以及有关etcdDNS发现工作原理的一些解释,但没有完整的方法 例如: k8s如何命名SRV条目 是否应该用特定的方式命名它们,以便etcd能够找到它们 是否应设置任何特殊的CoreDNS设置 在此方面的任何帮助都将不胜感激 参考资料: k8s如何命名SRV条目 通

我希望在我的k8s集群中运行一个动态
etcd
集群。我能想到的动态实现的最好方法(没有硬编码的地址、名称等)是使用DNS发现,使用内部k8s DNS(CoreDNS)

我找到了有关为k8s中的服务创建的
SRV
记录的独立信息,以及有关
etcd
DNS发现工作原理的一些解释,但没有完整的方法

例如:

  • k8s如何命名
    SRV
    条目
  • 是否应该用特定的方式命名它们,以便
    etcd
    能够找到它们
  • 是否应设置任何特殊的CoreDNS设置
在此方面的任何帮助都将不胜感激

参考资料:

k8s如何命名SRV条目

通过
服务.port[].name
,这就是为什么kubernetes中的几乎所有内容都必须是DNS友好名称的原因:因为很多时候,它确实为您将它们放在DNS中

具有
dig
或足够新的
nslookup
的Pod将显示:

$ dig SRV kubernetes.default.svc.cluster.local.
您将看到
kubernetes
服务
正在宣传的端口名称

etcd是否应该用一种特定的方式来命名它们,以便找到它们

是的,正如您在链接到的页面中所看到的,它们需要被命名为以下四种之一:

  • \u etcd-client
  • \u etcd-client-ssl
  • \u etcd-server
  • \u etcd-server-ssl
所以在库伯内特斯这边是这样的:

ports:
- name: etcd-client
  port: 2379
  containerPort: whatever
- name: etcd-server
  port: 2380
  containerPort: whatever