2016-12-15 6 views
6

キューブネットができるだけポッドを配布する方法はありますか? 私は、HPAとして と同様に、すべての展開とグローバル要求で "要求"を持っています。すべてのノードは同じです。ノード間のKubernetesポッド配信

私のASGがノードを縮小し、すべての4つのポッドが縮小された同じノード上にあったため、1つのサービスが完全に利用できなくなったという状況がありました。

少なくとも2つのノードにコンテナを展開する必要がある状況を維持したいと思います。

答えて

3

好きなような音はInter-Pod Affinity and Pod Anti-affinityです。

インターポッド親和性および抗親和性は、Kubernetes 1.4に導入された。ポッドの親和性と反親和性により、ノード上のラベルに基づいてではなく、ノード上ですでに が実行されているポッドのラベルに基づいて、ポッドがスケジュール設定できるノードを制限できます。 ルールは、ルールYに一致する1つまたは複数のポッド が既に実行されている場合は、「このポッドは(または、 の場合には、アフィニティを実行するべきではありません) LabelSelector として、関連するネームスペース(または "すべて"のネームスペース)のリストを持ちます。 ノードとは異なり、ポッドは名前空間になっているため、ポッドのラベルは暗黙的に名前空間になります。ポッドラベルのラベルセレクタは、 セレクタに適用する必要がある名前空間を指定する必要があります。概念的には、X は、ノード、ラック、クラウドプロバイダゾーン、クラウド などのトポロジドメインです。トポロジを表すためにシステムが使用するノードラベルの キーであるtopologyKeyを使用して表現します。 ドメイン、例えばセクション に上記のラベルキーを参照してください「インタールードは:組み込みのノードラベル。」

アンチ親和性は、あなたが障害ドメインにまたがってポッドを広めていることを保証するために使用することができます。これらのルールは、環境設定またはハードルールとして指定できます。後者の場合、制約を満たすことができない場合、ポッドはスケジュールされません。

+0

私はこれがkubernetes問題の多くであると思います。スケジューラは、たとえノードダウンの場合でも、高可用性を提供するようにポッドを広げるのに十分なインテリジェントでなければならない。 (複数のノードがあれば)。親和性は機能しますが、SSDディスクスペースを持つノードでステートフルコンテナをスケジュールする場合は、より多くの用途があります。ちょうど私の考え、あなたたちはどう思いますか? –

+1

これは厳密には当てはまりません。好ましいアフィニティルールは、ラベルを使用するポッド間の関係を、それらがストレージを添付しているかどうかにかかわらず指定することができます。 –

+0

私はこれが適切なアプローチだとは思わない、私がポッドを広げたいという事実は、私が同じノードに2つを持たせたくないということを意味しない。この解決策は、デーモンセットを作成することです。それは私が探しているものではありません。配備に十分な空きがあるかどうかを判断し、同じノード上で同じポッドをもっと共有するようなインテリジェントなポッドアフィニティを作成する方法があります – Gleeb

関連する問題