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

OpenShiftでスポットVMを使おう.pdf

jpishikawa
January 27, 2023

 OpenShiftでスポットVMを使おう.pdf

jpishikawa

January 27, 2023
Tweet

More Decks by jpishikawa

Other Decks in Technology

Transcript

  1. スポットVMについて 様々なクラウドで提供されている VMの利用形態の一つです。 VMの余剰リソースを使うことで 大幅な割引を受けながらインフラを利用することができます。 AWS Azure GCP 共通する要素 •

    余剰リソースを使うことで非常に安くVMを利用す ることが出来る • クラウドのリソース利用量の増加に応じて、通知 のあとVMが停止されることがある • SLAが保証されない
  2. *: 実際の割引額はクラウドごと、使用するリージョン、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秒
  3. 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を利用可能
  4. 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
  5. 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
  6. 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秒
  7. 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