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

时间:2019-02-12 21:34:26

标签: kubernetes dns etcd srv

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

我发现有关为k8s中的服务创建的SRV记录的分离信息,以及有关etcd DNS发现如何工作的一些解释,但没有完整的方法。

例如:

  • k8s如何命名SRV条目?
  • 是否应使用etcd的特定名称来命名它们?
  • 是否应设置任何特殊的CoreDNS设置?

任何帮助,将不胜感激。

参考:

1 个答案:

答案 0 :(得分:1)

  

k8s如何命名SRV条目?

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

具有dig或足够新的nslookup的Pod会显示给您:

$ dig SRV kubernetes.default.svc.cluster.local.

,您将看到kubernetes Service正在宣传的端口的名称。

  

是否应该使用etcd的特定方式来命名它们?

是的,就像您在链接到的页面中所看到的那样,需要将其命名为以下四个名称之一:

  • _etcd-client
  • _etcd-client-ssl
  • _etcd-server
  • _etcd-server-ssl

在kubernetes方面是这样的:

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