$30 off During Our Annual Pro Sale. View Details »

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

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

y_taka_23

September 28, 2018
Tweet

More Decks by y_taka_23

Other Decks in Technology

Transcript

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

    View Slide

  2. Pod の Resource Request
    #k8sjp

    View Slide

  3. P
    P
    P
    P
    P P
    P P P
    P
    P P P
    P
    P
    #k8sjp

    View Slide

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

    View Slide

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

    View Slide

  6. Vertical Pod Autoscaler
    #k8sjp

    View Slide

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

    View Slide

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

    View Slide

  9. Service AX
    Service BX
    Service CX
    P P P
    P P P
    P P P
    vertical

    View Slide

  10. コンポーネント
    ● Recommender
    ○ 時系列データから Request の推奨値を算出
    ○ さらにマージンを加えて下限値と上限値も算出
    ● Updater
    ○ Request が推奨範囲から外れている Pod を Evict
    ● Admission Controller
    ○ Webhook として Pod 作成リクエストを Mutate
    #k8sjp

    View Slide

  11. #k8sjp

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  16. P
    VPA object
    - target
    - upperBound
    - lowerBound
    API Server Admision Controller
    mutate
    create
    #k8sjp

    View Slide

  17. Update Policy
    ● Auto, Recreate
    ○ 推奨範囲外になった Pod を Evict する
    ○ 現状 In-Place な更新がないので両者同じ動作
    ● Initial
    ○ 新規作成時のみ推奨値を設定、Evict は行わない
    ● Off
    ○ 推奨値を算出するのみで実際には何もしない
    #k8sjp

    View Slide

  18. まとめ
    ● Resource Requests をどう決めるか問題
    ○ リソースの集積度、ひいてはコストに直結
    ● VPA で実データから算出し自動設定
    ○ カスタムリソースで VPA 管理したい Pod を指定
    ○ Status として Request の推奨範囲が保持される
    ● 推奨値の算出だけ行うことも可能
    ○ 算出と値の反映は独立したコンポーネント
    #k8sjp

    View Slide

  19. Let’s Think Vertically!
    Presented by チェシャ猫 (@y_taka_23)
    #k8sjp

    View Slide