2019-11-14
Want to do
- None
Achievement
- None
Diary
- I can’t speak Engliiiiiiiiiiiiiiiiiiish
Note
- 賢く「散らす」ための Topology Spread Constraints #k8sjp / Kubernetes Meetup Tokyo 25th
- https://speakerdeck.com/ytaka23/kubernetes-meetup-tokyo-25th
- Topology 知りたかったので最高だった
- Go.dev: a new hub for Go developers
- https://blog.golang.org/go.dev
- これから GoDoc 読むときには https://pkg.go.dev/ を使おう
- Frequently Asked Questions
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.