Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
k8sのオートスケール(HPA)を抑えよう!/ HPA Deep Dive
Search
oracle4engineer
PRO
March 23, 2022
Technology
4.8k
13
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 SPOTLIGHT ウェビナー】分散した企業データをつなぎ、AIエージェントで業務に活かす
oracle4engineer
PRO
1
52
Deep Data Security 機能解説
oracle4engineer
PRO
3
1k
Autonomous AI Lakehouse - Live AI Hubから始めるセキュアなAIデータ活用 -
oracle4engineer
PRO
3
190
Oracle Database Security 詳細解説
oracle4engineer
PRO
1
250
【Oracle AI SPOTLIGHT ウェビナー】事例から見る!なぜOCIが選ばれたのか ― AI時代のクラウド戦略を紐解く ―
oracle4engineer
PRO
2
150
Oracle Cloud Infrastructure:2026年10月度サービス・アップデート
oracle4engineer
PRO
1
270
Kubernetesで作るLLM推論基盤(OCHaCafe Season 12 #1)
oracle4engineer
PRO
1
200
【Oracle AI Spotlight ウェビナー】AI活用を支えるデータ基盤とは ― いま押さえておきたい Oracle AI Database 26ai の注目機能
oracle4engineer
PRO
0
140
kagent で Kubernetes 運用を考える
oracle4engineer
PRO
1
510
Other Decks in Technology
See All in Technology
AI時代のエンジニアの情報発信〜個人の発信を組織の力に変える〜
ryo_kawamata
1
7.3k
Copilot Coworkで「みのるん式」やってみた
minorun365
PRO
2
1.5k
続・ソフトウェアアーキテクトのための意思決定術: Decision Readiness, Revisited — When AI Changes the Economics of Software Architecture
snoozer05
PRO
5
1.3k
200人の配信コメント、 全部Jevが仕分けます 〜 マサカリガードを作ってみた 〜
katayamatg
1
530
Jev の中身は50行で再現できる。でも本物との差はどこにあるのか
hisuzuya
0
300
【dbts2026】AIエージェントの 判断と探索を変える、 データベース エンジニアリング― 既存DBの処理と依存関係から作る、オペレーショナルオントロジー ―
shisyu_gaku
0
100
今から始めるAWS環境の暗号移行 - ポスト量子時代に備える
sato4mi
0
150
(swiftc) NonCopyableとライフタイム修飾子
teamhimeh
0
170
cdkd (CDK Direct)
gotok365
3
200
Active Directory と Entra ID のむむむな関係
murachiakira
PRO
2
920
デザインレビューは自動化できるのか?─ Flutter × Figma で UI 品質保証を考える
techiro
2
790
[General] 개발자로 해외 기업에서 일하기
skydoves
1
290
Featured
See All Featured
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
730
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
780
We Have a Design System, Now What?
morganepeng
55
8.4k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
670
Paper Plane
katiecoart
PRO
5
54k
Navigating Weather and Climate Data
rabernat
0
580
Rails Girls Zürich Keynote
gr2m
96
14k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Between Models and Reality
mayunak
4
550
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
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