ストレージのベスト・プラクティス
Kubernetes Engine (OKE)で作成したクラスタのストレージ・ベスト・プラクティスについてご確認ください。
この項では、ストレージおよびKubernetesエンジンのベスト・プラクティスについて説明します。
ベスト・プラクティス: 適切なストレージ・タイプの選択
ワークロードに適したストレージ・タイプを選択する前に、クラスタが実行するワークロードのタイプを検討することをお薦めします。
永続的でスケーラブルな分散エンタープライズグレードのネットワーク・ファイル・システムが必要な場合は、Oracle Cloud Infrastructure File Storageサービスを使用することをお薦めします。
永続的で耐久性のある高パフォーマンスのブロック・ストレージが必要な場合は、Oracle Cloud Infrastructure Block Volumeサービスを使用することをお薦めします。
ベスト・プラクティス: ストレージ・クラスを作成して使用し、アプリケーションのニーズを定義します。
Kubernetesストレージ・クラスを使用して必要なタイプのストレージを定義し、ポッドおよびデプロイメント仕様のストレージ・クラスを参照することをお薦めします。ストレージ・クラス定義は連携して適切なストレージを作成し、ポッドに接続します。
「Kubernetesクラスタのストレージの設定」を参照してください。
ベスト・プラクティス: 永続ストレージ用のボリュームの作成および使用
永続ボリューム(PV)を作成して使用し、コンテナの外部にデータを格納し、データの損失を防ぐことをお薦めします。
コンテナのルート・ファイル・システムを介したコンテナ・ストレージは一時的なものであり、コンテナの削除および作成時に消えることがあります。データが失われないように耐久性のある場所を提供するには、永続ボリュームを作成して使用し、コンテナの外部にデータを格納します。
永続ボリュームを作成する場合は、Kubernetesドキュメントで次のことをお薦めします:
- コンテナ構成に永続ボリューム要求(PVC)を常に含めます。
- クラスタのデフォルト・ストレージ・クラスを常に定義します。定義しない場合、特定のクラスを指定しないPVCは失敗します。
- ストレージクラスには常に意味のある名前を付けます。
「Kubernetesクラスタのストレージの設定」を参照してください。
ベスト・プラクティス: ボリュームの動的なプロビジョニング
ボリュームを静的に作成して割り当てるのではなく、Block Volumeサービスによって支えられた永続ボリューム(PV)を動的にプロビジョニングすることをお薦めします。ボリュームを動的にプロビジョニングすることで、管理のオーバーヘッドが軽減され、スケーリングが可能になります。
また、ポッドの削除時に不要なストレージ・コストを最小限に抑えるために、ストレージ・クラス定義に適切なリクレイム・ポリシーを含めることをお薦めします。
ファイル・ストレージ・サービスによってバックアップされたPVでは、動的プロビジョニングを使用できないことに注意してください。
CSIボリューム・プラグインを使用したブロック・ボリュームでのPVCの作成を参照してください。
ベスト・プラクティス: FlexVolumeボリューム・プラグインではなくCSIボリューム・プラグインを使用します
FlexVolumeボリューム・プラグインではなく、CSIボリューム・プラグインを使用して、ブロック・ボリューム・サービスで永続ボリューム・クレームをプロビジョニングすることをお薦めします。
次の理由から、CSIボリュームプラグインをお勧めします。
- 新機能はCSIボリューム・プラグインにのみ追加され、FlexVolumeボリューム・プラグインには追加されません(Kubernetes開発者によるFlexVolumeボリューム・プラグインの保守は続けられます)。
- CSIボリューム・プラグインは、ベースとなるオペレーティング・システムおよびルート・ファイル・システムの依存関係にアクセスする必要はありません。
PVCに指定されたStorageClassは、ブロック・ボリューム・サービス・ボリュームへの接続に使用するボリューム・プラグインを制御します。デフォルトでは、2つのストレージ・クラスが定義されています。CSIボリューム・プラグインの場合はoci-bv
、FlexVolumeプラグインの場合はoci
です。storageClassName
の値を、PVCを定義するYMLファイルで明示的に指定しない場合は、クラスタのデフォルトのストレージ・クラスが使用されます。
Kubernetes Engineは、クラスタの作成時に指定されたKubernetesバージョンに従って、最初にクラスタのデフォルト・ストレージ・クラスを設定します。Kubernetesエンジンによって作成され、Kubernetesバージョン1.24 (以降)を実行するために作成されたクラスタでは、oci-bv
ストレージ・クラスは最初はデフォルトとして設定されます。
CSIボリューム・プラグインを使用したブロック・ボリュームでのPVCの作成(およびKubernetesドキュメントのデフォルトのStorageClassの変更)を参照してください。
ベスト・プラクティス: ストレージ・リソースの消費を制限
コンテナによるストレージの使用、ローカル・データ・センターで実際に利用可能なストレージの量、またはOracle Cloudストレージ・リソースで使用可能な予算を反映するために、制限を設けることをお薦めします。
次のものを使用して、コンテナ・ストレージの消費を制限できます。
- リソース割当て: Kubernetesネームスペース内のすべてのコンテナが使用できるリソース(ストレージ、CPUおよびメモリーを含む)の量を制限します。
- StorageClasses: 永続ボリューム要求(PVC)に応じてコンテナにプロビジョニングされるストレージの量を制限します。
Kubernetesクラスタのストレージの設定(およびKubernetesドキュメントのリソース割当て)を参照してください。
ベスト・プラクティス: データの保護とバックアップ
適切なツールを使用して、データを保護およびバックアップすることをお薦めします。
-
ベスト・プラクティス: バックアップにはVeleroのようなツールを使用します。
記憶域タイプに適したVeleroなどのツールを使用して、データをバックアップすることをお薦めします。バックアップを作成したら、それらのバックアップの整合性とセキュリティを確認することをお薦めします。
Oracle Container Engine for KubernetesのVeleroバックアップを参照してください
-
ベスト・プラクティス: Longhornなどのツールを使用して、データを永続化およびレプリケートします。
Longhornなどのツールを使用して、データを永続化およびレプリケートすることをお薦めします。
Oracle CloudおよびKubernetesでLonghornを使用したリージョン間ファイル・レプリケーションを参照してください。
- ベスト・プラクティス: Rackware SWIFTなどのツールを使用して、バックアップおよびディザスタ・リカバリを有効にします。
Rackware SWIFTなどのツールを使用して、リージョン間のKubernetesクラスタ間のバックアップおよびディザスタ・リカバリを有効にすることをお薦めします。
Oracle CloudのDR-as-a-Service (DRaaS)によるOKEワークロードの保護を参照してください。
ベスト・プラクティス: ReadWriteManyユースケースに分散ファイル・システムを使用
ReadWriteManyユース・ケース用にPVCをプロビジョニングする場合は、分散ファイル・システム(NFSやOracle Cloud Infrastructure File Storageサービスなど)を使用することをお薦めします。
高パフォーマンス機能(Oracle Cloud Infrastructure Block Volumeサービスなど)を備えたブロック・ボリューム・ストレージは、単一の読取りおよび書込みユースケースにPVCをプロビジョニングする場合に適しています。
「Kubernetesクラスタのストレージの設定」を参照してください。