需求为在 docker swarm 或者 k8s 中,部署 etcd 集群或者 memberlist 集群。 我在网上找到一种解决方案: 先手动启动一个实例,获得第一个实例的 ip ,再让后面启动的实例通过该 ip 加入集群。 但我并不想让集群启动过程手动化。各个实例应该差不多是同时部署或者升级的。
![]() |
1
ysicing 72 天前
k8s 内部可以用 headless service 可以参考 https://github.com/bitnami/charts/blob/main/bitnami/etcd/templates/svc-headless.yaml
|
![]() |
2
xzysaber 72 天前
一般都是使用 headless service ,这个时候可以获取到 Pod IP 对应的域名。
像分布式系统的多实例之间在使用 StatefulSet 部署的时候,一般会在 Init containers 里面循环一直到其他 Pod ready 为止。 |
3
Cola98 72 天前
K8S 里面可以看下关于 service ,不过也要注意是什么类型。
|
4
qwwe01 72 天前
k8s service
{service name}.{service namespace}.svc.{domin} 这种么 |
6
wzcloud 72 天前
pod 内也可以调用 k8s 的 api ,通过获取 service 的信息(包含 endpoints 信息),应该可以知道所有实例的地址,可以试一下
|
8
julyclyde 72 天前
|
9
novolunt 71 天前
你说的是 endpoint ,kubectl get ep -A 可以获取全部实例的地址和端口。
同一集群走 svc ,跨集群使用 smart dns |