Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 如何在pod副本之间运行etcd群集?_Kubernetes_Etcd - Fatal编程技术网

Kubernetes 如何在pod副本之间运行etcd群集?

Kubernetes 如何在pod副本之间运行etcd群集?,kubernetes,etcd,Kubernetes,Etcd,我有一个pod/服务运行一个将etcd用作同步系统和数据存储的应用程序。我希望在pod中运行etcd,以便所有副本形成一个一致的集群。换句话说,副本1中的应用程序可以将“foo”写入localhost:4001/v2/keys/my_key,然后副本2可以读取localhost:4001/v2/keys/my_key,并得到“foo” 目前尚不清楚如何做到这一点,因为pod副本无法单独寻址。理论上,我可以创建一个“etcd”服务来公开集群端口,但任何请求都会对所有副本进行循环,因此各个etcd节

我有一个pod/服务运行一个将etcd用作同步系统和数据存储的应用程序。我希望在pod中运行etcd,以便所有副本形成一个一致的集群。换句话说,副本1中的应用程序可以将“foo”写入
localhost:4001/v2/keys/my_key
,然后副本2可以读取
localhost:4001/v2/keys/my_key
,并得到“foo”

目前尚不清楚如何做到这一点,因为pod副本无法单独寻址。理论上,我可以创建一个“etcd”服务来公开集群端口,但任何请求都会对所有副本进行循环,因此各个etcd节点将无法找到彼此

我处理这个问题的方法正确吗?

我将您的问题添加到

如果有人知道答案,他们希望能把它贴在那里


我认为它可能需要尚未实现的“标称服务”功能(),但我不确定。

这里有一个非常好的三节点etcd集群示例:


它们为每个副本使用单独的rc和服务作为解决方法,直到添加了标称服务。

您可以使用操作员(来自
扩展/v1beta1
)和映像在kubernetes上部署etcd

集群大小为3的部署示例如下所示:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: etcd-operator
spec:
  replicas: 1
  template:
    metadata:
      name: etcd-operator
      labels:
        app: etcd
        component: operator
    spec:
      containers:
      - name: etcd-operator
        image: quay.io/coreos/etcd-operator:v0.3.0
        env:
        - name: MY_POD_NAMESPACE
          valueFrom: { fieldRef: { fieldPath: metadata.namespace } }
        - name: MY_POD_NAME
          valueFrom: { fieldRef: { fieldPath: metadata.name } }

---

apiVersion: etcd.coreos.com/v1beta1
kind: Cluster
metadata:
  name: etcd-cluster
  labels:
    app: etcd
    component: cluster
spec:
  size: 3
  version: "3.1.8"
请注意此项目的测试状态。然而,根据维修人员的说法,操作员现在是稳定的。我已成功部署了上述配置,但我没有在生产中运行任何配置


操作员代码可用。您可以在那里找到其他文档。

您使用的是
apiVersion:etcd.coreos.com/v1beta1
kind:Cluster
,而etcd操作符示例使用的是
apiVersion:etcd.database.coreos.com/v1beta2
kind:EtcdCluster
。有什么区别?警告:这种攻击完全不适合生产,因为您无法删除节点/副本,然后再添加一个。此设置中没有服务发现!