以下に、手順を追った解説付きの解決策を示します。
Explanation:
解決策(ステップバイステップ):
ステップ1:ノードラベルの設定
各ノードには、対応するアベイラビリティゾーンをラベル付けしてください。
Node1およびNode2(「デフォルト」可用性ゾーン内)の場合:
kubectl label node availability-zone=default
ノード3(可用性ゾーン内)の場合:
kubectl label node availability-zone=us-east-Ia
ステップ2:ノードセレクターを使用する
デプロイメントまたはポッド定義で「nodeSelector」を使用して、目的のアベイラビリティゾーンを指定します。

これにより、「nginx-deployment」ラベルの付いたポッドはNode3にのみスケジュールされることが保証されます。 ステップ3:アフィニティの使用(オプション) よりきめ細かな制御を行うには、「アフィニティ」を使用することもできます。たとえば、ポッドが異なるアベイラビリティゾーンに分散されるようにするには、次のようにします。

この構成では、異なる可用性ゾーンにポッドをスケジュールすることを優先します。理由:ノードセレクタ:ラベルに基づいてポッドを特定のノードに指示するシンプルなメカニズムを提供します。アフィニティ:ノード(または可用性ゾーン)全体にポッドを分散させる「podAntiAffinity」や、ポッドが同じノードにスケジュールされるようにする「podAffinity」など、より高度なオプションを提供します。可用性ゾーン:1つのゾーンで障害が発生しても、他のゾーンにスケジュールされたポッドには影響しないため、高可用性を実現するためにポッドを異なるゾーンに分散します。