11

各ホストが一意の ID ラベルを持つ 3 つのホストの kubernetes クラスターがあります。このクラスターには、3 つのインスタンス (レプリカ) を持つソフトウェアがあります。

各レプリカは、他のすべてのレプリカと通信する必要があります。さらに、このアプリケーションを永続的に利用できるように、すべてのポッドを含むサービスがあります。

ので、私は持っています:

Instance1 (with labels run: theTool,instanceid: 1)
Instance2 (with labels run: theTool,instanceid: 2)
Instance3 (with labels run: theTool,instanceid: 3)

Service1 (selecting pods with label instanceid=1)
Service2 (selecting pods with label instanceid=2)
Service3 (selecting pods with label instanceid=3)
Service (selecting pods with label run=theTool)

このアプローチは機能しますが、ローリング更新機能をスケーリングまたは使用することはできません。

各レプリケートが一意の汎用ラベル (たとえば、1/3、2/3 などのレプリカ ID) を取得する 3 つのレプリカを使用して展開を定義したいと考えています。

サービス内では、セレクターを使用して、更新後も存在するこのラベルを取得できます。

別の解決策は、実行されているホストに応じて、ポッド/デプロイメントを選択することです。DaemonSet またはアフィニティを備えたポッド/デプロイメントのみを使用して、各ホストがデプロイメントの正確なレプリカを 1 つ持つようにすることができます。

しかし、ポッドが実行されるホスト ラベルに基づいてポッドを選択する方法がわかりませんでした。

ホスト名は環境によって変わるため、ホスト名を使用することはできません。

ドキュメントを検索しましたが、このユース ケースに一致するものは見つかりませんでした。うまくいけば、ここの誰かがこれを解決する方法を知っています。

4

2 に答える 2