2015-09-21 5 views
7

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

ポッドレプリカは個別にアドレス指定できないため、これをどのように行うことができるかは不明です。私は理論的には、クラスタポートを公開する "etcd"サービスを作成することができましたが、すべての要求はすべてのレプリカにラウンドロビンされ、個々のetcdノードはお互いを見つけることができませんでした。

私はこの問題に正しい方法で近づいていますか?

答えて

0

私は誰かが答えを知っている場合、彼らはうまくいけばそこにそれを投稿しますkubernetes/kubernetes#5017

にあなたの質問を追加しました。

まだ実装されていない「名目サービス」機能(kubernetes/kubernetes#260)が必要な場合がありますが、わかりません。

2

オペレーター(extensions/v1beta1)とquay.io/coreos/etcd-operatorイメージを使用して、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" 

このプロジェクトのベータ状態ご注意ください。しかし、保守者によれば、オペレータはが現在安定していますです。私は正常に上記の設定を展開したが、私はこれを実際に運用しなかった。

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

+1

あなたは 'apiVersion:etcd.coreos.com/v1beta1'と' kind:Cluster'を使っていますが、etcd-operatorの例では 'apiVersion:etcd.database.coreos.com/v1beta2'と' kind:EtcdCluster'を使っています。違いは何ですか? https://github.com/coreos/etcd-operator/blob/master/example/example-etcd-cluster.yaml – akauppi

関連する問題