2019-11-14

Want to do

  • None

Achievement

  • None

Diary

  • I can’t speak Engliiiiiiiiiiiiiiiiiiish

Note

Cluster Autoscaler が MultiAZ の ASG をサポートしていない話

Cluster Auto Scaling では、複数のアベイラビリティーゾーンにまたがる Auto Scaling グループをサポートしていません。代わりに、アベイラビリティーゾーンごとに Auto Scaling グループを使用します。後で –balance-similar-node-groups 機能を有効にして、アベイラビリティーゾーン間でクラスターのノード数を比較的均等に維持できます。

AWS のリバランシングで Kubernetes の知らないところで Pod がドレインされないまま Node が落ちたりするという話らしい。

特定のアクションが発生すると、Auto Scaling グループはアベイラビリティーゾーン間で不均衡になる可能性があります。Amazon EC2 Auto Scaling は、アベイラビリティーゾーン間のバランスを再度取って不均衡を補います。

じゃあ必ずしも AZ ごとに ASG 作るようにしなきゃいけないかというと必ずしもそうではなくて、AZRebalance をサスペンドをすることで AZ 間の不均衡によるリバランシングはされなくなるらしい。

特定のイベントが発生した後、Auto Scaling グループはインスタンスの再分散を試みません。ただし、スケールアウトまたはスケールインのイベントが発生した場合でも、スケーリングプロセスはアベイラビリティーゾーン間のバランスを調整します。たとえば、スケールアウト中に、インスタンスが最も少ないアベイラビリティーゾーンでインスタンスを起動します。AZRebalance が中断されている間にグループのバランスがとれなくなった場合、そのプロセスを再開しても、Amazon EC2 Auto Scaling はグループのバランスを再調整しようとしません。最初に Launch を呼び出してから Terminate を呼び出します。

AZRebalance をサスペンドした際にもスケールアウト時に新しくインスタンスが起動する際には AZ 間のバランスが考慮されるので基本問題がないように思えます。

他にも PVC とかを使用している場合, EBS が AZ を跨げないみたいな問題もあるので以下のワークロードを使用している際にはしっかりと AZ ごとに ASG を作ろうというのが eksctl のドキュメントに記載されています。

You won’t need a separate nodegroup for each AZ if your environment meets the following criteria:

  • No zone-specific storage requirements.
  • No required podAffinity with topology other than host.
  • No required nodeAffinity on zone label.
  • No nodeSelector on a zone label.
d-kuro
d-kuro
Software Engineer

I’m a software engineer interested in Kubernetes and other cloud-native technologies.