我希望在我的k8s集群中运行一个动态的etcd
集群。我能想到的最好的动态方法(没有硬编码的地址,名称等)是使用内部k8s DNS(CoreDNS)进行DNS发现。
我找到了关于为k8s中的服务创建的SRV
记录的独立信息,以及关于etcd
DNS发现如何工作的一些解释,但没有完整的howto。
例如:
SRV
条目?etcd
能够找到它们吗?任何有关这方面的帮助将不胜感激。
引用:
k8如何命名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