2017-03-01 7 views
4

kubernetesを使用した展開用のdockerイメージと対応するyamlファイルがあります。私たちが構築したアプリケーションはakka-httpのスカラーです。私たちはakka-clusterを使いました。 pod ipを使用するアプリケーションコードで使用される設定ファイルには、特定の変数(この場合はシードノード - akkaクラスタ)があります。しかし、展開が完了していない限り、ポッドは取得できません。問題にどのように取り組むべきでしょうか?環境変数は役立つでしょうか?Kubernetes - Akkaクラスタリング展開

具体的には、ドッカー画像がポッドのコンテナに展開され、コンテナが開始されると、ポッドipは既に割り当てられています。ですから、プログラムやその他の方法で、コードやコンフィグファイルでポッドを構成してから、プロセスをコンテナで開始することはできますか?

参考のために、これは私たちの設定ファイルである:上記のファイルで

akka { 
    actor { 
    provider = "akka.cluster.ClusterActorRefProvider" 
    }  
    remote { 
    log-remote-lifecycle-events = off 
    netty.tcp { 
     hostname = "127.0.0.1" 
     port = 0 
    } 
    } 
    cluster { 
    seed-nodes = [ 
     "akka.tcp://[email protected]:3000", 
     "akka.tcp://[email protected]:3001", 
    ], 
    metrics { 
     enabled = off 
    } 
    }  
} 
service { 
    validateTokenService { 
    ml.pubkey.path = "<filePath>" 
    } 
    ml_repository { 
    url = <url address> 
    } 
    replication.factor = 3 
    http.service.interface = "0.0.0.0" 
    http.service.port = 8080 
} 

、代わりに「127.0.0.1」とakka.remote.netty.tcp.hostnameを有するので、私たちはポッドを持っている必要があります-ip。

seed-nodes = [ 
      "akka.tcp://[email protected]:3000", 
      "akka.tcp://[email protected]:3001", 
     ], 

がどのように我々がそうすることができます: だから、我々としてシードノードでそれを使用することができますか? ありがとうございます。

+0

この素晴らしいblogpost http://paoloambrosio.net/2016/12/14/akka-location-transparency.htmlと関連するGitHubデモプロジェクトhttps://github.com/paoloambrosio/experiments/をご覧くださいツリー/ akka-location-transparency解決方法は、ディスカバリを実行し、ドッカーイメージの起動中にシードホスト名をエクスポートすることです。 –

答えて

3

私は非常に似たようなことを試みました。あなたができることはステートフルセットKubernetes-Stateful setsを使用することです。ステートフルセットには命名規則があり、ポッドにも名前が付けられます。そのリンクについては、その詳細を読むことができます。この方法では、シードノードの値をハードコードすることができます。これは、ポッドの名前付け方法を知っているからです。しかし、ステートフルセットはローリングアップデートをサポートしていません(主に、そのように設計されているため)。stateful set - akka clustering この記事ではすべてをまとめて説明しています。ここでステップをコピーします。これが役に立てば幸いです

+0

リンクのようなものが私が探していたものです。リンクでアプローチを試みます。 –

+1

これは2017年であり、akkaクラスタはこのような奇妙な方法で実装されています。基本的にkubernetesで動作させるためには、あなたのハッキングを基本的にしなければならないし、そうしても、特徴。これは私にとって間違って見えますか? – gerasalus

+0

@gerasalus - はい、変なようですが、ステートフルなセットが設計されているためです。同じことについていくつかの議論が行われているようです。https://github.com/kubernetes/kubernetes/issues/37566 – Tarun

関連する問題