機械翻訳について

このドキュメントで説明されているソフトウェアは、サポートされなくなったか、拡張サポートされています。
Oracleでは、現在サポートされているリリースにアップグレードすることをお勧めします。

第1章 ストレージの概要

コンピューティング業界で意味のあるワークロードごとに、ある種類のデータ・ストレージが必要です。 データベースなどのステートフル・アプリケーションを操作する場合、永続ストレージは、コンテナのライフサイクルを超えるか、ポッド自体のデータを保持することが重要であるため、不可欠です。

Kubernetesの永続ストレージは、PersistentVolumeオブジェクトの形式で処理され、PersistentVolumeClaimを使用してポッドにバインドされます。 PersistentVolumeは、ローカルまたはネットワーク・ストレージ・デバイスまたはサービス上でホストできます。

一般的なKubernetes環境には、複数のホストが含まれ、通常は一部のタイプのネットワーク・ストレージが含まれます。 ネットワーク・ストレージを使用すると、自己回復性を保証し、クラスタ環境を最大限に活用できます。 ポッドが実行されているノードに障害が発生した場合は、代替ノードで新しいポッドを開始でき、ストレージ・アクセスを再開できます。 これは、レプリカ設定が正しく構成されているデータベース環境に特に重要です。

1.1 永続ストレージの概念

永続ストレージは、PersistentVolumeサブシステムを使用してKubernetesで提供されます。 永続ストレージを構成するには、次の用語を理解しておく必要があります:

  • PersistentVolume. PersistentVolumeは、使用されているストレージのタイプと、それに接続するために使用されるメソッドを定義します。 これは、データの格納に使用される実際のディスクまたはネットワーク・ストレージ・サービスです。

  • PersistentVolumeClaim. PersistentVolumeClaimは、コンシューマ(ポッドなど)がPersistentVolumeのバインドに使用するパラメータを定義します。 この要求では、コンシューマのリソースに適用される割当ておよびアクセス・モードを指定できます。 ポッドは、PersistentVolumeClaimを使用してボリュームにアクセスし、マウントできます。

  • StorageClass. StorageClassは、プロビジョニング担当者と呼ばれるボリューム・プラグインを指定するオブジェクトであり、ユーザーはPersistentVolumeのストレージを事前構成しなくてもPersistentVolumeClaimsを定義できます。 これを使用すると、PersistentVolumeClaimのライフサイクルに対して動的にプロビジョニングできるプール済リソースとして、類似したボリューム・タイプへのアクセスを提供できます。

PersistentVolumesは、静的に、または動的にプロビジョニングできます。

静的PersistentVolumesは手動で作成され、実際のストレージへのアクセスに必要な詳細を含み、関連するPersistentVolumeClaimを持つ任意のポッドによって直接使用できます。

動的PersistentVolumesは、PersistentVolumeClaimが既存の静的PersistentVolumeと一致せず、既存のStorageClassが要求でリクエストされた場合に自動的に生成されます。 StorageClassは、動的にアクセス可能なストレージ・プールをホストするように定義できます。 StorageClassの作成はオプション・ステップであり、動的プロビジョニングを使用する場合にのみ必要です。

永続ストレージをプロビジョニングするプロセスは次のとおりです:

  1. PersistentVolumeまたはStorageClassを作成します。

  2. PersistentVolumeClaimsを作成します。

  3. PersistentVolumeClaimを使用するようにポッドを構成します。

NFSおよびiSCSIボリュームを追加および構成するプロセスについては、次のアップストリームのドキュメントで詳しく説明します:

https://kubernetes.io/docs/concepts/storage/persistent-volumes/

1.2 コンテナ・ストレージ・インタフェース・プラグイン

コンテナ・ストレージ・インタフェース(CSI)は、コンテナ・エンジンからストレージ・ワークロードを制御するためのOpen Container Initiative標準です。 Kubernetesは、このインタフェースを実装して、Kubernetesクラスタ内のストレージ・ワークロードに対して自動制御を提供します。 Kubernetesストレージ・プロビジョナのリストについては、次の場所にあるアップストリームのドキュメントを参照してください:

https://kubernetes.io/docs/concepts/storage/storage-classes/

CSIプラグインは、Oracle Cloud Native EnvironmentのKubernetesクラスタにインストールできます。 CSIプラグインのインストールを簡単に実行できるように、Oracleには多数のストレージ関連モジュールが用意されています。

Oracle Cloud Native EnvironmentのOracle Cloud Infrastructureコンテナ・ストレージ・インタフェース・モジュールを使用して、Oracle Cloud InfrastructureのCSIプラグインを設定できます。

Oracle Cloud Native EnvironmentのGluster Container Storage Interfaceモジュールは、GlusterfsのCSIプラグインの設定に使用できます。

これらのモジュールの詳細は、このガイドに記載されています。

1.3 Oracle Cloud Infrastructureコンテナ・ストレージ・インタフェース・モジュールの概要

Oracle Cloud Infrastructureブロック・ボリュームは、様々な仮想マシンおよびベア・メタル・インスタンスを操作するように設計された、信頼性の高い高パフォーマンスのブロック・ストレージを提供します。 組込みの冗長性によって、ブロック・ボリュームは仮想マシンの存続期間を超えて永続的で耐久性が高く、コンピュート・インスタンス当たり1 PBまでスケーリングできます。

Oracle Cloud Infrastructureコンテナ・ストレージ・インタフェース・モジュールは、Oracle Cloud Infrastructureブロック・ボリュームを使用して動的にプロビジョニングされた永続ストレージを設定するために使用します。 Oracle Cloud Infrastructure Container Storage Interfaceモジュールは、HelmモジュールによってKubernetesクラスタにデプロイされます。

Oracle Cloud Infrastructure Container Storage Interfaceモジュールは、Oracle Cloud Infrastructureブロック・ボリューム上のストレージにアクセスするためのKubernetes StorageClassプロビジョナを作成します。 Kubernetes Cloud Controller Manager (oci-cloud-controller-manager)は、Oracle Cloud Infrastructureで実行されているKubernetesクラスタのCSIプラグインです。 Kubernetes Cloud Controller Managerは、Kubernetes PersistentVolumesとして使用するOracle Cloud Infrastructureボリュームを動的にプロビジョニングするために使用されます。 プラットフォームAPIサーバーは、Oracle Cloud Infrastructure APIと通信して、PersistentVolumeClaimsを使用してOracle Cloud Infrastructureボリュームをプロビジョニングおよび管理します。 Oracle Cloud Infrastructureボリュームは、PersistentVolumeClaimsが削除されると自動的に破棄できます。

Kubernetes Cloud Controller Managerの詳細は、次にあるアップストリームのドキュメントを参照してください:

https://github.com/oracle/oci-cloud-controller-manager

1.4 Glusterコンテナ・ストレージ・インタフェース・モジュールの概要

Glusterは、複数のサーバーのディスク・ストレージ・リソースを単一のグローバル・ネームスペースに集約する、スケーラブルな分散ファイル・システムです。 Heketiは、Glusterクラスタ内のボリュームを作成および管理するために使用されます。

Gluster Container Storage Interfaceモジュールは、Gluster Storage for Oracle Linuxを使用して動的にプロビジョニングされた永続ストレージを設定するために使用します。 Gluster Container Storage Interfaceモジュールは、HelmモジュールによってKubernetesクラスタにデプロイされます。

Oracle Cloud Native Environmentは、GlusterまたはHeketiをデプロイしません。 Gluster Storage for Oracle LinuxおよびHeketi APIは、Oracle Cloud Native Environmentに追加する前に、個別にインストールおよび構成する必要があります。

Gluster Container Storage Interfaceモジュールは、Glusterfs上の既存のストレージにアクセスするためのKubernetes StorageClassプロビジョナを作成します。 Kubernetesは、Glusterfsプラグインを使用して、Kubernetes PersistentVolumesとして使用するGlusterボリュームを動的にプロビジョニングします。 Platform APIサーバーは、PersistentVolumeClaimsを使用してGlusterボリュームをプロビジョニングおよび管理するために、Heketi APIと通信します。 Glusterボリュームは、PersistentVolumeClaimsが削除されると自動的に破棄できます。