8

etcd を同期システムおよびデータストアとして使用するアプリケーションを実行しているポッド/サービスがあります。すべてのレプリカが一貫したクラスターを形成するように、ポッド内で etcd を実行したいと考えています。つまり、レプリカ #1 のアプリケーションが "foo" を書き込むことができ、その結果localhost:4001/v2/keys/my_key、レプリカ #2 が "foo" を読み取っlocalhost:4001/v2/keys/my_keyて取得できます。

ポッドのレプリカは個別にアドレス指定できないため、これを行う方法は明確ではありません。理論的には、クラスター ポートを公開する「etcd」サービスを作成できますが、すべてのリクエストがすべてのレプリカにラウンドロビンされるため、個々の etcd ノードがお互いを見つけることができません。

この問題に正しい方法で取り組んでいますか?

4

3 に答える 3

3

extensions/v1beta1Operator ( から) とイメージを使用して、kubernetes に etcd をデプロイできますquay.io/coreos/etcd-operator

クラスター サイズが 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"

このプロジェクトはベータ版であることに注意してください。ただし、メンテナーによると、オペレーターは現在安定しています。上記の構成を正常に展開しましたが、実稼働環境では実行していません。

オペレーター コードはgithubで入手できます。そこに追加のドキュメントがあります。

于 2017-06-08T09:28:28.617 に答える
1

ここには、3 ノードの etcd クラスターのかなり良い例があります: https://github.com/coreos/etcd/tree/master/hack/kubernetes-deploy

彼らは、公称サービスが追加されるまでの回避策として、レプリカごとに個別の rc とサービスを使用します。

于 2016-02-18T01:58:26.113 に答える
0

あなたの質問をkubernetes/kubernetes#5017に追加しました

誰かが答えを知っていれば、うまくいけばそこに投稿するでしょう。

まだ実装されていない「公称サービス」機能 ( kubernetes/kubernetes#260 )が必要になる可能性があると思いますが、よくわかりません。

于 2015-10-04T00:27:27.240 に答える