猫でもわかる Vertical Pod Autoscaler #k8sjp / Kubernetes Meetup Tokyo 13th

332f89cc697355902a817506b6995f2b?s=47 y_taka_23
September 28, 2018

猫でもわかる Vertical Pod Autoscaler #k8sjp / Kubernetes Meetup Tokyo 13th

Kubernetes Meetup Tokyo #13 で使用したスライドです。

Kubernetes の Scheduler が Pod を配置する Node を決定する際、Pod に指定された Resource Request の値が使用されます。すなわち、Request の値が小さすぎると Node の機能が阻害される虞があり、逆に大きすぎるとリソースを無駄に確保することになるため、現実のリソース使用量をどうやって Request に反映させるかは重要な課題です。

この作業を自動化するため、Vertical Pod Autoscaler (VPA) が提案されています。VPA は Metrics Server を介して得た実データから Request のレンジを推定し、自動で Pod に適用してくれる仕組みです。スライド中ではこの VPA の動作原理を簡潔に解説しています。

内部のアルゴリズム実装まで含めた詳細に興味がある方は、下記ブログ記事も併せてご参照ください。

イベント概要:https://k8sjp.connpass.com/event/100842/
録画:https://www.youtube.com/watch?v=Y8PlL5pGe58 (2:32:43)
ブログ記事:http://ccvanishing.hateblo.jp/entry/2018/10/02/203205

332f89cc697355902a817506b6995f2b?s=128

y_taka_23

September 28, 2018
Tweet

Transcript

  1. 猫でもわかる Vertical Pod Autoscaler チェシャ猫 (@y_taka_23) Kubernetes Meetup Tokyo #13

    (2018/09/28) #k8sjp
  2. Pod の Resource Request #k8sjp

  3. P P P P P P P P P P

    P P P P P #k8sjp
  4. P P P P P P P P P P

    P P P P P #k8sjp
  5. どうやって値を決めるか? #k8sjp

  6. Vertical Pod Autoscaler #k8sjp

  7. Service AX Service BX Service CX P P P P

    P P P P P
  8. Service AX Service BX Service CX P P P P

    P P P P P P P P horizontal
  9. Service AX Service BX Service CX P P P P

    P P P P P vertical
  10. コンポーネント • Recommender ◦ 時系列データから Request の推奨値を算出 ◦ さらにマージンを加えて下限値と上限値も算出 •

    Updater ◦ Request が推奨範囲から外れている Pod を Evict • Admission Controller ◦ Webhook として Pod 作成リクエストを Mutate #k8sjp
  11. #k8sjp

  12. VPA object - target - upperBound - lowerBound API Server

    P #k8sjp
  13. VPA object - target - upperBound - lowerBound API Server

    P Recommender metrics estimate #k8sjp
  14. VPA object - target - upperBound - lowerBound API Server

    Updater evict #k8sjp
  15. VPA object - target - upperBound - lowerBound API Server

    #k8sjp create
  16. P VPA object - target - upperBound - lowerBound API

    Server Admision Controller mutate create #k8sjp
  17. Update Policy • Auto, Recreate ◦ 推奨範囲外になった Pod を Evict

    する ◦ 現状 In-Place な更新がないので両者同じ動作 • Initial ◦ 新規作成時のみ推奨値を設定、Evict は行わない • Off ◦ 推奨値を算出するのみで実際には何もしない #k8sjp
  18. まとめ • Resource Requests をどう決めるか問題 ◦ リソースの集積度、ひいてはコストに直結 • VPA で実データから算出し自動設定

    ◦ カスタムリソースで VPA 管理したい Pod を指定 ◦ Status として Request の推奨範囲が保持される • 推奨値の算出だけ行うことも可能 ◦ 算出と値の反映は独立したコンポーネント #k8sjp
  19. Let’s Think Vertically! Presented by チェシャ猫 (@y_taka_23) #k8sjp