開発者向け機能 - OpenShift Virtualization (Storage)

HOMEデベロッパー向け開発者向け機能OpenShift Virtualization (Storage)

OpenShiftの永続ストレージの仕組み

PVCではStorage ClassとPVの要件を指定します。指定されたStorage Classに対応するストレージシステムから論理ディスクを払い出します。論理ディスクをKubernetesリソースとして表現したものがPVです。

Persistent Volume / Persistent Volume Claim

Persistent Volume (PV)

  • OpenShift の Pod が利用できる永続ストレージ
  • 様々な形態のストレージを抽象化した姿です

Persistent Volume Claim (PVC)

  • セルフサービスで PV を取得するためのリクエスト
  • リクエスト内容に合致するPVがあれば割り当てます

Access Mode

  • PVへのアクセス制御のモード
  • バックエンドのストレージシステムによって、使用できるAccess Modeは異なります
    • 使用できないAccess Modeを指定した場合はPVCが失敗し、PVはBindされません

Read Write Once (RWO)

  • 1ノードからRead/Write可能
  • ほぼ全てのストレージで利用可能
  • 最も利用されることが多い基本のモード

Read Only Many (ROX)

  • 複数ノードから同時にRead-Onlyでアクセス可能
  • あまり使われることはなく、用途としては限定される

Read Write Many (RWX)

  • 複数ノードから同時にRead/Write可能
  • 基本的にはファイルストレージで利用可能

Storage Class

  • バックエンドのストレージシステムを抽象化したものになります
  • PVC では Storage Class を指定します
    • 指定しない場合は default Storage Class が使われます

仮想マシンのストレージ

  • PersistentVolume (PV) のパラダイムを使用
  • 利用できる PV バックエンド
    • OpenShift Data Foundation
    • 3rd party ストレージ
    • hostpath provisioner / LVM Operator
  • ライブマイグレーションには RWX アクセスモードが必須
  • VirtIO または SCSI コントローラでディスクに接続
    • VM定義に依存
  • Boot OrderはVMの定義で変更可能

VMディスク

  • VM が使用するディスクはブロックデバイスです
  • PVCのVolumeModeによってVM ディスクの実体は異なります
    • Filesystem Mode
      • ファイルシステム上に作られるThin-provisionedなrawイメージファイルがVMディスクとなります
    • Block Mode
      • PVそのものがVMディスクとなります
  • オーバーヘッドが少ないBlock Modeが好ましい
    • 多くのストレージパートナーのプロダクトは、RWXが可能なBlock modeに対応

VMスナップショット/クローン

  • VM はスナップショット / クローンを取得できます
    • スナップショットはVM無停止で取得できるが、クローンはVMが停止している必要がります
  • VM ディスクをスナップショット / クローンするが、実態は PVC のスナップショット / クローンで実現する
  • CSI ドライバによって、ストレージ側でのスナップショット / クローンにオフロードできます
    • スナップショット / クローンに対応していないバックエンドストレージを使う場合は利用不可

ヘルパーディスク

  • 副次的なディスクを使って、VM にデータを注入することができます
    • cloud-init
    • ConfigMap
    • Secrets
    • ServiceAccount
  • これらは読み取り専用のディスクで、OS が起動時にマウントして中のデータを利用するものになります
    • 起動後はアンマウントされており、取り外しも可能

選ぶなら業界をリードするコンテナプラットフォーム

OpenShiftならインフラ運用の効率化はもとよりアプリケーション開発者がソースコードの開発に専念できるように必要な機能までも提供してくれます