Upgrade to Pro — share decks privately, control downloads, hide ads and more …

k8sのオートスケール(VPA)を抑えよう!/ VPA Deep Dive

k8sのオートスケール(VPA)を抑えよう!/ VPA Deep Dive

oracle4engineer
PRO

April 20, 2022
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. k8sのオートスケール(VPA)を抑えよう︕
    Kubernetes Novice Tokyo #18
    Takuya Niita
    Oracle Corporation Japan
    April 20, 2022

    View Slide

  2. ⾃⼰紹介
    • 仁井⽥ 拓也
    • ⽇本オラクル株式会社
    • OCHaCafeメンバー
    • k8s中⼼のセッション
    (Network/Autoscale/Operator…)
    • 前職は某SIer
    • Cloud Native歴︓3年
    • ジブリ⼤好き
    • OCHaCafeではジブリネタ(本編)で皆様をお待ちし
    ております︕︕
    @takuya_0301
    2 Copyright © 2022, Oracle and/or its affiliates.

    View Slide

  3. 登壇の経緯
    3 Copyright © 2022, Oracle and/or its affiliates.
    Copyright © 2022, Oracle and/or its affiliates.
    3

    View Slide

  4. 本⽇の内容はOCHaCafe Season4 #5の内容を⼀部改変してお届けします
    4
    https://speakerdeck.com/oracle4engineer/
    kubernetes-autoscale-deep-dive
    https://www.youtube.com/watch?v=NlUQEgHKL8o&t=294s&a
    b_channel=JapanOracleDevelopers
    Copyright © 2022, Oracle and/or its affiliates.

    View Slide

  5. 本題!!
    Copyright © 2022, Oracle and/or its affiliates.
    5

    View Slide

  6. 今⽇のトピック
    Podの⽔平スケール(Horizontal Pod Autoscaler)
    • Podの数を増やすことによって処理性能を向上させるスケール⼿法
    • CPUやメモリをはじめとして、ユーザ独⾃のメトリクスなども判断材料に利⽤可能
    Podの垂直スケール(Vertical Pod Autoscaler)
    • Podが利⽤可能なリソースを増強することによって処理性能を向上させるスケール⼿法
    • 主にCPUとメモリを判断材料に利⽤
    Nodeの⽔平スケール(Cluster Autoscaler)
    • Worker Nodeの台数を増やすことによって処理性能を向上させるスケール⼿法(k8s環境によって実装は異なる)
    • Podの⽔平スケールと連携することも
    Nodeの垂直スケール
    • Kubernetesの機能としては未実装
    • クラウドベンダーなどが提供するAPIなどを利⽤してNodeのリソース増強は可能・・・
    • 現時点(2022/3)時点では、各ベンダーでComputeのスペックをオンラインで変更する仕組みはない
    6 Copyright © 2022, Oracle and/or its affiliates.
    Copyright © 2022, Oracle and/or its affiliates.
    6

    View Slide

  7. VPAをDeep Dive!!
    Copyright © 2022, Oracle and/or its affiliates.
    7

    View Slide

  8. Vertical Pod Autoscaler(VPA)
    • コンテナアプリケーション環境(Pod)を垂直ス
    ケール(スケールアップ/ダウン)する仕組み
    • Podに要求されるCPU/メモリを推奨値を算
    出して調整(Resource Requestsを上書き)
    • スケール定義はVPA(VerticalPodAutoscaler)リ
    ソースとして定義
    • 複数のControllerの組み合わせで管理(HPAとは
    異なる)
    • 主にUpdater、Admission Controller、
    Recommenderが連携して動作
    • 原則としてスケール時にはPodの再起動が
    発⽣(Resource Requestsを適⽤させるため)
    • 起動中のままのスケールは未実装
    VPA(Vertical Pod Autoscaler)
    Copyright © 2022, Oracle and/or its affiliates.
    8
    CPU︓0.5 CPU
    Memory︓200Mi
    CPU︓1.0 CPU
    Memory︓750Mi
    Updater
    Admission
    Controller
    Recommender

    View Slide

  9. VPA(Vertical Pod Autoscaler) Manifest例
    Copyright © 2022, Oracle and/or its affiliates.
    9
    項番 項⽬ 内容
    1 スケール対象 スケール対象の
    apiVersion/kind/nameを指定。
    基本的にはapiVersion: apps/v1、
    kind: Deploymentを指定。
    2 アップデート
    ポリシー
    Auto、Recreate、Initial、Off
    • Auto(Default):再起動によるスケール
    アップ(将来的にはin-place?)
    • Recreate:再起動によるスケールアッ

    • Initial:Pod作成時にスケールアップ
    (evictしない)
    • Off:スケール値の算出だけ(スケール
    アップしない)

    View Slide

  10. VPA利⽤時のDeployment(Pod)側の定義
    Copyright © 2022, Oracle and/or its affiliates.
    10
    ここ部分を上書きすることで
    スケールアップ︕︕

    View Slide

  11. Recommender
    • metrics serverからPodのメトリクスを取得し、リソースの実績を判断
    • Resource Requestsの推奨値(下限/⽬標値/上限)を判断
    • 推奨値の算出アルゴリズムは少し複雑・・・
    • kubernetes/autoscaler/vertical-pod-autoscaler/pkg/recommender/logic/estimator.goにロジックが抽象化
    Updater
    • RecommenderがVPAリソースに書き込んだ推奨値と動作中のPodのResource Requestsの値を⽐較
    • 推奨値の範囲から外れている場合はそのPodを排除
    Admission Controller
    • Updaderにより排除されたPodを再作成する際にAPI ServerのPodリクエストに割り込み
    • Resource Requestの値を書き換え(上書き)
    VPAを実現するController群(updatePolicy:Recreateの場合)
    Copyright © 2022, Oracle and/or its affiliates.
    11

    View Slide

  12. VPAのスケールの仕組み(updateMode:Auto/Recreateの場合)
    Copyright © 2022, Oracle and/or its affiliates.
    12
    Updater
    Admission
    Controller
    Recommender
    ⑤Resource Requestsの推奨値と
    現在のResource Requestsの⽐較 ⑥Podのevict
    ③Resource Requestsの推奨値算出
    ④Resource Requestsの推奨値を登録
    ①VPAリソースを読み込み
    ② Podのメトリクス取得
    metrics
    server
    ⑦ Resource Requestsの
    推奨値取得 ⑧Podのspecを上書き
    VPAリソース

    View Slide

  13. 実は・・・
    CPU/メモリ使⽤率によるHPA/VPAでは・・・
    (参考) HPAとVPAの併⽤
    Copyright © 2022, Oracle and/or its affiliates.
    13
    CPUとメモリをスケール条件にしたHPAとVPAの併⽤は禁⽌︕︕
    VPA
    VPAによってスケールされたPodに対してHPAでのスケール
    を適⽤すると、Pod毎のResource Requestsが煩雑になり、想
    定通りのスケール挙動にならない可能性が⾼い
    ※HPAが実施された結果、オーバスケールだったり、ス
    ケール不⾜になることも…

    View Slide

  14. HPA(Podの数が増減するスケール⽅式)
    • Podが使⽤しているリソースとResource Requestsをもとに⽔平スケール
    • スケールの範囲や振る舞いをユーザ側で定義する必要性
    • アプリケーション(Pod)にかかる負荷の傾向を把握
    • コスト(経済/リソース)を考慮しながらスケール範囲の⾒極め
    • アプリケーションの特性や運⽤、サービス指標(SLA/SLOも含む)などを考慮し、スケールの振る舞
    いを定義
    VPA(Podのspec(Resource Requests)をスケール⽅式)
    • Podが使⽤しているリソース(CPU/メモリ)をもとに垂直スケール
    • 実際のリソース使⽤量を把握できていなくもよしなにスケール(実績値との乖離を防⽌)
    • 実際にスケールさせなくても、算出された推奨値を確認するだけという利⽤⽅法も
    • クラスタ全体のリソースを有効活⽤可能
    • 現時点では、原則としてはPodの再起動が必要(in-placeは未実装)
    ここまでのまとめ: HPAとVPA
    Copyright © 2022, Oracle and/or its affiliates.
    14

    View Slide

  15. シナリオ
    • VPAの各コンポーネント(Updater/Admission Controller/Recommender)をインストール
    • スケール対象のアプリケーションをデプロイ
    • アプリケーションのResource Requestsの初期値を確認
    • Recommenderによる推奨値算出の確認
    • アプリケーション(Pod)のResource Requestsが上書きされることを確認
    VPAデモ
    Copyright © 2021, Oracle and/or its affiliates.
    15
    HPAはDeploymentがスケール対象でした。
    VPAでは、Pod⾃体がスケール対象であることを意識してデモをご覧ください!

    View Slide

  16. • 開発者・エンジニアにお届けするテクニカル
    な勉強会です
    • クラウドネイティブな時代に⾝につけておくべ
    きテクノロジーを深堀りしていきます
    • テーマはオープン/デファクト・スタンダード を
    基準に選定し、Oracle固有な話題にはな
    らないように、且つ学んだ知識は広く応⽤が
    利くように、配慮しています
    Season 5
    • Kubernetes Operator 超⼊⾨
    • Kubernetesで並列分散処理
    • Kubernetes のセキュリティ
    • 挑戦 Typescript
    • 実験︕カオスエンジニアリング
    • MLOps を始めよう︕
    16

    View Slide

  17. #ochacafe History
    Season 1
    • コンテナを使ったCI/CD
    • Microservicesの運⽤・管理
    • MicroservicesなJavaアプリケーション
    • Hyperledger Fabricアプリケーション設計⼊⾨ガイド
    • 避けては通れない︕認証・認可
    • ⼈にもマシンにもやさしいAPIのエコシステム
    Season 2
    • これからはじめる︕Kubernetes基礎
    • ⼀体何モノなの︖GraalVM ⼊⾨
    • Serverlessな世界をのぞいてみよう︕
    • Cloud Native時代のモダンJavaの世界
    • 変幻⾃在♪ 広がるKubernetesのエコシステム
    • Cloud Native × Streaming はじめの⼀歩
    OCHaCafe Premium (Oracleフォーカス spin-off)
    • Oracle Cloudで考える⾼可⽤性アーキテクチャ
    • クラウド・アプリケーションのパフォーマンス
    • Oracle Cloud Infrastructure Cloud Native 2021
    • マイクロサービスとデータマネージメント
    • クラウドで実践するEnterprise Java
    Season 3
    • Cloud Native流のストレージ管理
    • サービス間通信のトレンド - gRPC & GraphQL⼊⾨
    • Kubernetesクラスタの管理術
    • 挑戦! JavaでReactiveプログラミング
    • 明解! NoSQLの勘所
    • コンテナ・ランタイムの未来
    Season 4
    • ⽣体認証のイロハ
    • Kubernetesのネットワーク
    • CI/CD 最新事情
    • マイクロサービスの認証・認可とJWT
    • Kubernetes のオートスケーリング
    • Observability 再⼊⾨
    Season 5
    • Kubernetes Operator 超⼊⾨
    • Kubernetesで並列分散処理
    • Kubernetes のセキュリティ
    • 挑戦 Typescript
    • 実験︕カオスエンジニアリング
    • MLOps を始めよう︕

    View Slide

  18. カオスエンジニアリングをテーマにお届けします。
    「カオスエンジニアリングって⾔葉くらいは聞いたことあるけど、何だか難しそうなイメージ」という⽅も最終的に
    「Kubernetes 上で運⽤するシステムにカオスエンジニアリングを導⼊するイメージがついた︕」というレベルに達することがゴールです。
    カオスエンジニアリングを補助するためのツールは数多くありますが、今回は Chaos Mesh を中⼼に取り扱います。
    実験︕カオスエンジニアリング
    https://ochacafe.connpass.com/event/243297
    n 2022年5⽉11⽇(⽔)
    n 19:00 – 21:00 *18:50 接続開始
    5⽉11⽇開催

    View Slide


  19. http://oracle.com/goto/emp-oradev
    Developer Days
    未来を創造する最新テクノロジーを今、あなたの⼿に。
    ITに携わるすべての開発者とエンジニアに オラクル テクノロジー最新情報を
    お届けするオンラインイベントを2⽇間開催︕
    ❃━━━…‥・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    DB Day : 2022年5⽉20⽇ (⾦) 13:00 ~
    Cloud Day : 2022年5⽉27⽇ (⾦) 13:00 ~
    オンライン開催
    参加費︓無料 (事前登録制)
    ハッシュタグ︓ #oradev22
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・‥…━━━❃

    View Slide


  20. http://oracle.com/goto/emp-oradev
    Developer Days
    ハッシュタグ︓ #oradev22
    ❃━…・・ Cloud Day 注⽬のセッション ・・…━❃
    【パネルディスカッション】 徹底討論︕マイクロサービス開発におけるJavaの最適解
    【スペシャルセッション】 データの⼀貫性を確保 :
    Oracle Transaction Manager for Microservices によるクラウド・ネイティブ・アプリケーションの実現
    Deepak Goel
    Software Development in the
    Database, Senior Director
    Todd Little
    Oracle Tuxedo Chief Architect
    Oracle Blockchain Platform and
    the Oracle Transaction Manager
    for Microservices.
    Brijesh Kumar Deo
    Blockchain and Distributed
    Transactions Technology Team
    Consulting Member of Technical Staff
    上⽥ 志雄 ⽒
    東京ガスiネット株式会社
    ロジ⼦ ⽒ 須江 信洋 ⽒
    レッドハット株式会社
    古⼿川 忠久
    DB Day : 2022年5⽉20⽇ (⾦) / Cloud Day : 2022年5⽉27⽇ (⾦)
    【Showcase】
    Kubernetes & Observability ⼊⾨

    View Slide

  21. Oracle Developer Days 2022 - Spring
    13:00 - 13:05 オープニング
    13:05 – 13:50
    Ensuring data consistency for Cloud native apps with Oracle Transaction Manager for Microservices
    データの⼀貫性を確保 : Oracle Transaction Manager for Microservices(TMM)によるクラウド・ネイティブ・アプリケーションの実現
    Deepak Goel / Todd Little / Brijesh Kumar Deo
    (Oracle Corporation)
    *⽇本語字幕付き 英語⾳声
    13:50 – 13:55 休憩 (5分)
    13:55 – 14:55
    【パネルディスカッション】 徹底討論︕マイクロサービス開発におけるJavaの最適解
    上⽥ 志雄 ⽒ (東京ガスiネット株式会社)
    ロジ⼦ ⽒ |須江 信洋 ⽒ (レッドハット株式会社) | 古⼿川 忠久 (⽇本オラクル株式会社)
    14:55 – 15:05 休憩 (10分)
    15:05 – 15:55
    Microservices アーキテクチャのトランザクション管理の現実
    ⼭成 慎吾 (⽇本オラクル株式会社)
    15:05 - 16:50
    【ハンズオン】
    次世代Java⾼速実⾏基盤
    GraalVM
    鈴⽊ 淳
    (Oracle Corporation)
    15:05 - 17:45
    【Showcase】
    OCI Cloud Native
    Observability Service
    市川 豊
    仁井⽥ 拓也
    (⽇本オラクル株式会社)
    15:55 – 16:00 休憩 (5分)
    16:00 – 16:50
    ブロックチェーンの本格利⽤を加速するOracleのソリューション
    中村 岳 (⽇本オラクル株式会社)
    16:50 – 16:55 休憩 (5分)
    16:55 – 17:45
    データベースとクラウドのセキュリティを網羅的に活⽤する⽅法
    ⻄村 克也 (⽇本オラクル株式会社)
    17:45 – 17:50 クロージング
    Cloud Day 2022年 5⽉27⽇ (⾦) | 13:00 – 18:35 *12:45接続開始 (Zoom) ◀ 詳細/お申し込み

    View Slide

  22. Thank you
    22 Copyright © 2022, Oracle and/or its affiliates.

    View Slide

  23. View Slide