1

GKEで3ノードのKubernetesクラスタを実行しています。 Kubernetesにbackendポッドの3つのレプリカを求めます。 3つのポッドは、高可用性サービスを提供するためにノード間でうまくディスパッチされません。通常、それらはすべて2つのノードにあります。 Kubernetesは各ノードにポッドをできるだけ多く入れておきますが、ノードよりポッドが多い場合は展開/スケールアップに失敗しないようにしたいと思います。ノード間でディスパッチレプリカを使用することをお勧めします。

preferredDuringSchedulingIgnoredDuringExecutionでこれを行うことはできますか?

答えて

1

はそうのような兼ね備えantiAffinityルールを設定してみてください。

affinity: 
    podAntiAffinity: 
     preferredDuringSchedulingIgnoredDuringExecution: 
     - labelSelector: 
      matchExpressions: 
       - key: "app" 
       operator: In 
       values: 
       - "my_app_name" 
      topologyKey: "kubernetes.io/hostname" 

これはすでにその上で実行されている同じラベルのポッドを持っていないノード上にポッドをスケジュールしようとします。その後、それはすべて無料です(したがって、少なくとも1つが各ノードで実行されていることを確認した後、それらを均等に分散させることはありません)。つまり、スケールアップすると、5つのポッドを持つノードと1つのポッドを持つ他のノードになります。

+1

ありがとうございました。 ' - weight:100 podAffinityTerm:labelSelector:'を追加しなければならなかった – Sony

関連する問題