我希望在我的k8s集群中运行一个动态etcd
集群。我可以想到的最好的动态处理方式(没有硬编码的地址,名称等)是通过内部k8s DNS(CoreDNS)使用DNS发现。
我发现有关为k8s中的服务创建的SRV
记录的分离信息,以及有关etcd
DNS发现如何工作的一些解释,但没有完整的方法。
例如:
SRV
条目?etcd
的特定名称来命名它们?任何帮助,将不胜感激。
参考:
答案 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