2017-10-12 4 views
1

私のシナリオは現在、自分のアプリケーションをデーモンセットとして実行しており、Datadogをインフラストラクチャに統合したいと考えています。 デーモンが目的を設定することは、各セットの1つのポッドが各ノードで実行されていることを確認することです。Kubernetes DaemonsetsとNodeports

ここでは、データドッグエージェントで自分のアプリケーションを指していたので、データドッグエージェントにデータを送り込んでいました。 ServiceNodeportタイプを定義して、エージェントのポートを公開しました。 私は自分のアプリケーション定義にサービス名を提供しました。 1つのノード。 ノードが増えるとどうなりますか? k8sは、同じノード上のエージェントにルーティングするのに十分なほど賢明なのでしょうか?または、自分のアプリケーションを持つポッドが別のノード上のエージェントを呼び出すかもしれない状況がありますか?これは正しいセットアップですか?

答えて

0

DaemonSetsを使用してアプリケーションを実行するよりも、デプロイメントを使用してアプリケーションをクラスタ内のノードの数に結びつけない方がよいでしょう。

次に、アプリケーションのポッドを持つノードを選択するセットspec.template.spec.affinityを持つDaemonSetとして、データドッグエージェントイメージをデプロイできます。これにより、アプリケーションが実行されているすべてのノードにdatadogエージェントがあることが確認されます。

もう1つの方法は、データパッドエージェントコンテナをアプリケーションコンテナと同じポッドに配置することです。この場合、ローカルホストからエージェントに到達し、一緒にスケールアップすることができますが、ノードごとに複数のエージェントが必要になる可能性があります。したがって、親和性のあるDaemonSetを優先します。

0

私のチームは、ノードメトリックを収集する目的でデーモンセットとして実行しましたが、クラスタ内の他のアプリケーションからデータをプログラムで送信するために、通常のクラスタIPサービスとして公開していました。クラスタの外部からアクセスする必要がなく、入力コントローラのようなサービス対応のロードバランサを持たない場合を除き、ノードポートに公開する必要はありません。 (これはかなり奇妙なユースケースなので、ノードポートに公開する必要はありません)