Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

本⽇の内容は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.

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

今⽇のトピック 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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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:スケール値の算出だけ(スケール アップしない)

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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リソース

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

#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 を始めよう︕

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

<詳細・お申し込み> 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 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・‥…━━━❃

Slide 20

Slide 20 text

<詳細・お申し込み> 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 ⼊⾨

Slide 21

Slide 21 text

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) ◀ 詳細/お申し込み

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

No content