各ホストが一意の 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 つ持つようにすることができます。
しかし、ポッドが実行されるホスト ラベルに基づいてポッドを選択する方法がわかりませんでした。
ホスト名は環境によって変わるため、ホスト名を使用することはできません。
ドキュメントを検索しましたが、このユース ケースに一致するものは見つかりませんでした。うまくいけば、ここの誰かがこれを解決する方法を知っています。