我希望etcd在我的 k8s 集群中运行一个动态集群。我能想到的最好的动态方式(没有硬编码的地址、名称等)是使用 DNS 发现和内部 k8s DNS (CoreDNS)。
我发现有关在 k8s 中为服务创建的记录的分离信息SRV,以及有关 DNS 发现如何工作的一些解释etcd,但没有完整的操作方法。
例如:
- k8s是如何命名
SRV条目的? - 是否应该以特定方式命名
etcd以便能够找到它们? - 是否应该设置任何特殊的 CoreDNS 设置?
对此的任何帮助将不胜感激。
参考:
我希望etcd在我的 k8s 集群中运行一个动态集群。我能想到的最好的动态方式(没有硬编码的地址、名称等)是使用 DNS 发现和内部 k8s DNS (CoreDNS)。
我发现有关在 k8s 中为服务创建的记录的分离信息SRV,以及有关 DNS 发现如何工作的一些解释etcd,但没有完整的操作方法。
例如:
SRV条目的?etcd以便能够找到它们?对此的任何帮助将不胜感激。
参考:
k8s 是如何命名 SRV 条目的?
via Service.port[].name,这就是为什么 kubernetes 中的几乎所有内容都必须是 DNS 友好的名称:因为很多时候,它确实会为您将它们放入 DNS 中。
一个拥有dig或足够新的 Podnslookup将向您显示:
$ 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