Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
k8sのオートスケール(HPA)を抑えよう!/ HPA Deep Dive
Search
oracle4engineer
PRO
March 23, 2022
Technology
4.7k
12
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
k8sのオートスケール(HPA)を抑えよう!/ HPA Deep Dive
Kubernetes Novice Tokyo #17の登壇資料
oracle4engineer
PRO
March 23, 2022
More Decks by oracle4engineer
See All by oracle4engineer
Oracle AI Databaseデータベース・サービスのメンテナンス(BaseDB/ExaDB-D/ExaDB-XS)
oracle4engineer
PRO
4
1.4k
CrossplaneによるCloud Native Control Plane
oracle4engineer
PRO
0
90
OCI Oracle AI Database Services新機能アップデート(2026/03-2026/05)
oracle4engineer
PRO
0
330
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/3 - 2026/5
oracle4engineer
PRO
1
240
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.8k
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
1.9k
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.9k
Oracle Database Gold Image
oracle4engineer
PRO
1
150
Other Decks in Technology
See All in Technology
「気づいたら仕事が終わっている」バクラクAIエージェント本番運用の裏側 / layerx-bakuraku-aie2026
yuya4
19
11k
運用を見据えたAIエージェント設計実践
amacbee
1
3.4k
EventBridge Connection
_kensh
5
680
Taking back control of your AI development
inesmontani
PRO
0
110
MIERUNE JCT 発表資料「宇宙から伊能忠敬ごっこ」
syuchimu
0
200
Rancherの紹介&Update情報(RancherJP Online Meetup #09)
yoshiyuki_kono
0
140
小さくはじめるSLI/SLO ~育てながら組織に定着させる実践知~ / Starting Small with SLI/SLOs: Building Adoption Through Continuous Growth
nari_ex
2
910
AI駆動開発が変える、大規模開発の前提 ーHuman in the Loop から Human on the Loop へ / AIE2026
visional_engineering_and_design
30
23k
Snowflakeと仲良くなる第一歩
coco_se
4
350
"何を作るか"を任される エンジニアは、どう育つのか
yutaokafuji
1
430
実装は速くなった、レビューはどうする? ― 自身のレビューをAIで再現させるサーヴァントエンジニアリングのすゝめ / Implementation got faster. So what about reviews? — An invitation to Servant Engineering: Recreating your own code reviews with AI
nrslib
8
4.4k
なぜ Platform Engineering の土台に Kubernetes を選ぶのか
r4ynode
1
450
Featured
See All Featured
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
55k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
380
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
460
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
23k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
190
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
180
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
830
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
170
Transcript
k8sのオートスケール(HPA)を抑えよう︕ Kubernetes Novice Tokyo #17 Takuya Niita Oracle Corporation Japan
Mar 23, 2022
⾃⼰紹介 • 仁井⽥ 拓也 • ⽇本オラクル株式会社 • OCHaCafeメンバー • k8s中⼼のセッション
(Network/Autoscale/Operator…) • 前職は某SIer • Cloud Native歴︓3年 • ジブリ⼤好き • OCHaCafeではジブリネタ(本編)で皆様をお待ちし ております︕︕ @takuya_0301 2 Copyright © 2022, Oracle and/or its affiliates.
登壇の経緯 3 Copyright © 2022, Oracle and/or its affiliates.
本⽇の内容は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.
本題!! 5 Copyright © 2022, Oracle and/or its affiliates.
K8sのオートスケールにはどんな種類がある︖ 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.
今⽇のトピック 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のスペックをオンラインで変更する仕組みはない 7 Copyright © 2022, Oracle and/or its affiliates.
HPAをDeep Dive!! 8 Copyright © 2022, Oracle and/or its affiliates.
HPA Horizontal Pod Autoscaler(HPA) • コンテナアプリケーション環境(Pod)を⽔平スケール(ス ケールアウト/イン)する仕組み • 正確にはDeployment(ReplicaSet)のレプリカ数を スケール
• HorizontalPodAutoscalerリソースに振る舞い(ス ケール範囲、スケール時の挙動)を定義 • Controller Managerのひとつである HorizontalPodAutoscalerControllerが管理を実施 • デフォルトでは15秒間隔で周期 • HPAリソースに定義したターゲット値に近づくように Podの数を調整 • 基本はPodの平均CPU/メモリ使⽤率を利⽤する が、カスタムメトリクスも利⽤可能 ・・・ Replica数を 変更 Replica数に応じ てスケール HorizontalPod AutoscalerController 9 Copyright © 2022, Oracle and/or its affiliates.
HPAのスケールの仕組み(CPU/メモリ使⽤率を利⽤する場合) ! ! ! HorizontalPod AutoscalerController metrics server ①HPAリソース取得 ③メトリクス取得
⑤スケール指⽰ ②メトリクス取得 ④スケール量算出 ⑥スケール 10 Copyright © 2022, Oracle and/or its affiliates.
(参考)mertircs server https://speakerdeck.com/bells17/metrics-server 前回Novice Tokyo#16でのbells17_さんのセッションを参考 11 Copyright © 2022, Oracle
and/or its affiliates.
HPAのスケールロジック(CPUを例に) 以下の計算式で必要レプリカ数を算出 具体例) • Pod(現レプリカ数:5)の平均CPU使⽤率の合計が90%、ターゲットのCPU使⽤率が70%の場合 • 必要なレプリカ数 = 5 *
(90(%) / 70(%)) = 6.42・・・ • 7個のレプリカが必要(2個のレプリカが追加) • Pod(現レプリカ数:5)の平均CPU使⽤率の合計が50%、ターゲットのCPU使⽤率が70%の場合 • 必要なレプリカ数 = 5 * (50 (%) / 70 (%)) = 3.57・・・ • 4個のレプリカが必要(1個のレプリカを削減) 考慮事項 • ⼩数点切り上げ • 「Podの平均CPU使⽤率」は、各Podの過去1分間のCPU使⽤率 必要なレプリカ数 = 現在のレプリカ数 * ( Podの平均CPU使⽤率 / ターゲットCPU使⽤率 ) CPU100%の基準は・・・?? 「ターゲットCPU使⽤率」・・・?? 12 Copyright © 2022, Oracle and/or its affiliates.
(参考)Resource RequestsとResource Limit https://speakerdeck.com/nao_saino/jie-ju-requeststolimitshadoushe-ding-surebaiifalseka 前回Novice Tokyo#16でのSainoさんのセッションを参考 13 Copyright © 2022,
Oracle and/or its affiliates.
HPA利⽤時のDeployment(Pod)側の定義 この部分の数値をCPU利⽤率100%と⾒る Resource RequestsとResource Limitsの書き⽅ • CPU 200m=0.2(core) • メモリ
100Mi ≒ 0.1Gi ≒ 104MB • CPU 1(core)=1000m • メモリ 1Gi = 1024Mi ≒ 1074MB 14 Copyright © 2022, Oracle and/or its affiliates.
HPA(Horizontal Pod Autoscaler) Manifest例(1) 項番 項⽬ 内容 1 スケール対象 スケール対象のapiVersion/kind/nameを
指定。 基本的にはapiVersion: apps/v1、 kind: Deploymentを指定。 2 スケール範囲 スケールする際のPodのレプリカ数の最⼩値、 最⼤値を指定。 この範囲内のスケールの振る舞いは behaviorフィールド(次スライド)によって決 定。 3 スケール条件とする メトリクス スケール条件に利⽤するメトリクスを指定。 CPU/メモリの他にカスタムメトリクスも指定 可能。 これが「ターゲットCPU利⽤率」 15 Copyright © 2022, Oracle and/or its affiliates.
HPA(Horizontal Pod Autoscaler) Manifest例(2) 項 番 項⽬ 種別 内容 4
スケール時 の振る舞い (デフォルト) スケール アウト 即時スケール(リードタイム無) 以下のうち、追加レプリカ数が 多い⽅を採⽤ • 15秒で稼働中のレプリカ数 分を追加 • 15秒で4つのPodを追加 スケール イン リードタイム300秒(5分) 15秒で必要レプリカ数まで削減 v1.18から追加になった機能 16 Copyright © 2022, Oracle and/or its affiliates.
HPA(Horizontal Pod Autoscaler)におけるスケール時の振る舞い(1) スケール時に指定可能な振る舞い(単⼀の場合) • Ex)現レプリカ数:3から必要レプリカ:10までスケールアウトする場合 • type: Percent •
type: Pods レプリカ数分、必要レプリカ数までスケールアウト レプリカ(Pod)を4個(value:4)ずつスケールアウト 15秒 15秒 periodSeconds 15秒 +3 +4 +3 +4 15秒 17 Copyright © 2022, Oracle and/or its affiliates.
HPA(Horizontal Pod Autoscaler)におけるスケール時の振る舞い(2) スケール時に指定可能な振る舞い(複数の場合) • Ex)現レプリカ数:80から必要レプリカ:10までスケールインする場合 指定したtypeのうち、 多い⽅(Max)を採⽤ 少ない⽅(Min)も指定可能 80個
72個 40個 ・・・ 36個 32個 10個 Percent Percent Percent Pods Pods 60秒 60秒 60秒 ・・・ スケールごとに再計算 を⾏い、”selectPolicy” に基づいてポリシーを 選択 18 Copyright © 2022, Oracle and/or its affiliates.
HPA Controllerが利⽤するメトリクス(HPA v2) 種別 メトリクス 収集元 スケールロジック PodResource PodのCPU使⽤率/メモリ 使⽤率
metrics serverがkubeletか ら取得した値 PodのCPU/メモリ使⽤率を利⽤して 評価 ContainerResource (alpha版) ContainerのCPU使⽤率 /メモリ使⽤率 metrics serverがkubeletか ら取得した値 ContainerのCPU/メモリ使⽤率を利 ⽤して評価 Pods Podに関する任意のメト リクス API Aggregation Layerから 取得した任意のエンドポイ ント ”率”ではなく、⽣値で評価を実施 Object 任意のメトリクス(Pod以 外のk8sオブジェクト) API Aggregation Layerから 取得した任意のエンドポイ ント 単⼀の値で、⽬標値と⽐較を⾏い、 評価を実施 External 任意のメトリクス(k8sオブ ジェクト以外) API Aggregation Layerから 取得した任意のエンドポイ ント 単⼀の値で、⽬標値と⽐較を⾏い、 評価を実施 カスタムメトリクス 19 Copyright © 2022, Oracle and/or its affiliates.
HPAのスケールの仕組み(カスタムメトリクスを利⽤する場合) ・・ ・ HorizontalPod AutoscalerController custom metrics (Pod) ①HPAリソース取得 ③メトリクス取得
⑤スケール指⽰ ②メトリクス取得 ④スケール量算出 ⑥スケール custom metrics (Object) custom metrics (External) metrics serverは利⽤しない 20 Copyright © 2022, Oracle and/or its affiliates.
カスタムメトリクス(type:Podsの場合) “type:Pods”を指定することで任意のPodメトリクスをス ケール条件に利⽤可能 “type:Pods”の場合は、target.typeは”AverageValue”固定 対象メトリクスは”packets-per-second” スケール条件には、平均CPU/メモリ”使⽤率”ではなく、 平均CPU/メモリ”使⽤値”(⽣の値)を利⽤ 21 Copyright ©
2022, Oracle and/or its affiliates.
複数メトリクスの設定 HPAは各条件の積(and条件)を維持 この場合は以下の条件 • 各PodのCPU使⽤率50% • 各Podが送信するパケットが1000パケット • main-route Ingressのバックエンドにある全てのPodが送信す
るパケットが2000リクエスト/秒 各メトリクスの必要レプリカ数を算出し、最も多い結果を採⽤ スケールイン/スケールアウトにより、算出した最も多い結果 に対してPod数を近づける 22 Copyright © 2022, Oracle and/or its affiliates.
HPAをDemo!! 23 Copyright © 2022, Oracle and/or its affiliates.
HPAデモ 環境 • Oracle Container Engine for Kubernetes(OKE)︓v1.22.5 • VM.Standard.E4.Flex(1oCPU/メモリ8GB)
× 3(Node) • metrics server︓v0.6.1 スケール対象のアプリケーション • アプリケーション • ベースイメージ︓busybox • command︓ʼdd if=/dev/zero of=/dev/null’ # CPUを100%にするため スケール条件 • ターゲットのCPU利⽤率︓50% • スケール範囲︓最⼩1/最⼤10 CRI-Oを使ってます!! 24 Copyright © 2022, Oracle and/or its affiliates.
• 開発者・エンジニアにお届けするテクニカル な勉強会です • クラウドネイティブな時代に⾝につけておくべ きテクノロジーを深堀りしていきます • テーマはオープン/デファクト・スタンダード を 基準に選定し、Oracle固有な話題にはな
らないように、且つ学んだ知識は広く応⽤が 利くように、配慮しています Season 5 • Kubernetes Operator 超⼊⾨ • Kubernetesで並列分散処理 • Kubernetes のセキュリティ • 挑戦 Typescript • 実験︕カオスエンジニアリング • MLOps を始めよう︕ 25
#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 を始めよう︕
今回はフロントエンド開発がテーマです。「“Typescript” って聞いたことはあるけど、Javascript とどう違うの? 何がメリットなの? どうやって開発すればいいの?」という初学者の⽅々に向けた Typescript の⼊⾨編をお届けします。 4⽉6⽇開催 挑戦︕Typescript https://ochacafe.connpass.com/event/241167/
n 2022年4⽉6⽇(⽔) n 19:00 – 21:00 *18:50 接続開始 27
Thank you 28 Copyright © 2022, Oracle and/or its affiliates.
None