我有一个运行应用程序的pod / service,它将etcd作为同步系统和数据存储区使用 . 我想在pod中运行etcd,这样所有的副本就形成了一个连贯的集群 . 换句话说,副本#1中的应用程序可以将"foo"写入 localhost:4001/v2/keys/my_key
,然后副本#2可以读取 localhost:4001/v2/keys/my_key
并获得"foo" .
目前尚不清楚如何做到这一点,因为pod复制品不能单独寻址 . 理论上我可以创建一个暴露集群端口的“etcd”服务,但是任何请求都会循环到所有副本,因此各个etcd节点将无法找到彼此 .
我是否以正确的方式处理这个问题?
3 回答
您可以使用运算符(来自
extensions/v1beta1
)和quay.io/coreos/etcd-operator映像在kubernetes上部署etcd .群集大小为3的示例部署如下所示:
请注意该项目的 beta status . 但是根据维护者的说法,运营商是 now stable . 我已成功部署了上面的配置,但我没有在 生产环境 中运行任何此类配置 .
操作员代码可用on github . 您可以在那里找到其他文档 .
这里有一个三节点etcd集群的很好的例子:https://github.com/coreos/etcd/tree/master/hack/kubernetes-deploy
他们为每个副本使用单独的rc和服务作为解决方法,直到添加名义服务 .
我把你的问题添加到kubernetes/kubernetes#5017
如果有人知道答案,他们希望将其发布在那里 .
我认为它可能需要"nominal services"功能(kubernetes/kubernetes#260)尚未实现,但我不确定 .