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
OpenShiftでスポットVMを使おう.pdf
Search
jpishikawa
January 27, 2023
Technology
980
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
OpenShiftでスポットVMを使おう.pdf
jpishikawa
January 27, 2023
More Decks by jpishikawa
See All by jpishikawa
vLLM Community Meetup Tokyo #3 オープニングトーク
jpishikawa
0
660
OpenShiftでllm-dを動かそう!
jpishikawa
0
350
vLLM meetup Tokyo
jpishikawa
1
680
OpenShift AIに含まれるOSSについて解説
jpishikawa
0
2k
CNDT2023 Community LT KubeVirtでVMが起動する仕組み
jpishikawa
0
370
Gitによるソースコード管理入門.pdf
jpishikawa
1
1.1k
Other Decks in Technology
See All in Technology
Bill One 開発エンジニア 紹介資料
sansan33
PRO
7
19k
AWS ネットワーク構築でハマった(ハマりかけた) 5選とそこから得た教訓
nagisa53
4
210
【AG-UI × A2UI × MCP Apps】Generative UIをやさしく解説する
nrinetcom
PRO
1
110
メルカリのグローバルアプリで挑んだ AlloyDB 運用と課題解決の実践記
hatappi
0
240
FPGAが実現する遠方宇宙の高空間分解能天体撮影 -大型地上望遠鏡の視力を補正する「補償光学」とは?-
komei_mt
0
220
【CEDEC2026】『GRANBLUE FANTASY: Relink - Endless Ragnarok』のバトル制作事例 ~最高のキャラゲーを目指して~
cygames
PRO
0
250
猫付きpingコマンドを自作
uyuki234
0
220
ハーレムエンジニアリング
kazuma777777
0
120
私がブラウザを自作したくなった理由
supurazako
1
210
【CEDEC2026】コードレビュー支援ツール開発から学ぶ:LLMを用いた業務システムの実践的な運用設計と誤出力対策
cygames
PRO
0
670
修正PRを食べてレビュースキルが賢くなる:Claude Codeによる自己改善サイクル
yuyaumetsu
6
1.5k
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.9k
Featured
See All Featured
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
56k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Designing for Performance
lara
611
70k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
890
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Designing for Timeless Needs
cassininazir
1
440
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
450
4 Signs Your Business is Dying
shpigford
187
22k
Being A Developer After 40
akosma
91
590k
Darren the Foodie - Storyboard
khoart
PRO
3
3.6k
Making the Leap to Tech Lead
cromwellryan
135
10k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Transcript
OpenShiftで スポットVMを使おう Junpei Ishikawa OpenShift.Run 2023
今日お伝えしたいこと クラウドでOpenShiftを使っていてコストを減らしたいなら スポットVMを使うといいよ
スポットVMについて 様々なクラウドで提供されている VMの利用形態の一つです。 VMの余剰リソースを使うことで 大幅な割引を受けながらインフラを利用することができます。 AWS Azure GCP 共通する要素 •
余剰リソースを使うことで非常に安くVMを利用す ることが出来る • クラウドのリソース利用量の増加に応じて、通知 のあとVMが停止されることがある • SLAが保証されない
*: 実際の割引額はクラウドごと、使用するリージョン、VMタイプ、等の要因が加味され変動します。 スポットVMについて 様々なクラウドで提供されている VMの利用形態の一つです。 VMの余剰リソースを使うことで 大幅な割引を受けながらインフラを利用することができます。 AWS Azure GCP
共通する要素 • 余剰リソースを使うことで非常に安くVMを利用す ることが出来る • クラウドのリソース利用量の増加に応じて、通知 のあとVMが停止されることがある • SLAが保証されない 異なる要素(抜粋) Spot Instances サービス名 Spot Virtual Machines Preemptible VMs Spot VMs 最大90% 割引額* 最大90% 60 - 91% 120秒 停止までの猶予 30秒 30秒
スポットVMに向いているワークロード 任意のタイミングでVMが停止される可能性があることからステートレスなアプリケーションや、短時間 で完了するジョブへの利用に向きます。また高可用性が必須でない開発環境のワークロードにも適用 できます。 スポットVMに向いている • ステートレスアプリケーション • ウェブアプリケーション •
APIサーバー • 短時間で完了するジョブ • 分散データ処理 • 開発/テスト環境 スポットVMに向かない • ステートフルアプリケーション • 長時間かかるジョブ • 高可用性が求められる本番環境
コンテナはスポットVMに向いている コンテナは内部にデータを保持しないため、スポット VMと相性が良いと言えます。 アプリデータ DB、PV、オブジェクト ストレージ等に保存 ログ等 エージェントが 収集して転送
OpenShiftでのスポットVM利用方法 クラスタに新たなVMを追加する際、MachineSetに記述を加えるか、コンソールからオプションを選択 することでスポットVMを利用できます。 apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: name: spot-worker-us-east-2a
namespace: openshift-machine-api spec: replicas: 1 … providerSpec: value: spotMarketOptions: {} スポットVMを使うための 記述を一行追加 ROSAやOSDの場合 MachinePool追加時に チェックを入れるだけで スポットVMを利用可能
VM停止通知にどのように対応するか スポットVMを安全に利用するためには、 VM停止通知を受け安全にコンテナを終了する必要がありま す。OpenShiftではスポットVM利用時に専用のPodが立ち上がりこの通知を受け取ります。 machine.openshift.i o/interruptible-ins tance: '' Label machine.openshift.i
o/interruptible-ins tance: '' Label machine.openshift.i o/interruptible-ins tance: '' Label machine-api- termination-handler machine-api- termination-handler machine-api- termination-handler 通常のノード スポットVM http://169.254.169.254/…/ (メタデータエンドポイント) 5秒おきにメタデータにアクセスし 自ノードが停止対象と なっていないかをチェック スポットVMには それを表すラベルが ノードに付与される 停止処理を行う machine-api-termination- handler Podが DaemonSetとして起動 "msg"="Instance not marked for termination" "namespace"="openshift-machine-api" "node"="ip-10-0-196-218.us-east-2.compute.internal" 1 2 3
1 スポットVMの停止処理 machine-api-termination-handlerはメタデータからVM停止の通知を受け取るとノードの ステータスを変更し、それを受け PodのDrainが実行されます。 machine-api- termination-handler status: conditions: -
type: Terminating status: 'True' lastHeartbeatTime: '2023-01-19T06:25:20Z' lastTransitionTime: '2023-01-19T06:25:20Z' reason: TerminationRequested message: The cloud provider has marked this instance for termination ノードの ステータスを 更新 machine-healthcheck- controller ステータスを チェック Drainの実施 新規VM作成 2 3 3
preStop設定がなければDrain直後か らSIGTERM処理を実行 デフォルトではServiceからの除外処理と PodのSIGTERMが同時に始まる ため、preStop処理を設定して安全に 停止できるようにする Podの停止処理 ノードのDrainが実行されるとPodの終了処理が行われます。クラウドごとにスポット VMが停止されるま での猶予が異なるため時間内に停止できるよう設定を行いましょう。
Running Terminating Drain preStop処理 SIGTERM処理 SIGKILL処理 terminationGracePeriodsSeconds Serviceからの除外処理 Podの終了プロセス Pod削除 クラウドのスポットVMの仕様によっては デフォルトのterminationGracePeriodsSeconds(30秒) より先にVMが停止する可能性がある。そのため スポットVMで動かすPoDのアプリは素早く終了処理を行うこと ができる必要がある。 AWS Azure GCP Termination Handler が通知を受 け取ってから停止までの猶予 約116 〜 120秒 約26 〜 30秒 約26 〜 30秒
デモ
スポットVM停止のテスト AWS Fault Injection Simulatorというサービスでは意図したタイミングでスポット VMの停止を起こすこと ができます。そのため VM停止の際にアプリが想定通りの挙動を示すか確認できます。 AWS FISで実行する
アクションを定義 対象のスポットVMを選 択 実験テンプレートの作成 実験の実施
まとめ:私がスポットVMを勧める理由 ❏ OpenShiftでは意外と簡単にスポットVMを 利用することができる。 ❏ スポットVM利用時に気を付ける必要がある VMの 停止をいい感じにハンドリングしてくれる。 ❏ 正しく使えばアプリの可用性を損なわず
コスト削減できる。
linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHat Red Hat is the world’s leading
provider of enterprise open source software solutions. Award-winning support, training, and consulting services make Red Hat a trusted adviser to the Fortune 500. Thank you