機械翻訳について

1 ストレージの概要

重要:

このドキュメントで説明されているソフトウェアは、Extended SupportまたはSustaining Supportにあります。 詳細は、「Oracleオープン・ソース・サポート・ポリシー」を参照してください。

このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお勧めします。

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

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

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

永続記憶域の概念

永続ストレージは、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/

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

コンテナ・ストレージ・インタフェース(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 EnvironmentOracle Cloud Infrastructure Cloud Controller Managerモジュールを使用して、Oracle Cloud InfrastructureのCSIプラグインを設定できます。

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

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

Oracle Cloud Infrastructure Cloud Controller Managerモジュールの概要

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

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

Oracle Cloud Infrastructure Cloud Controller Managerモジュールは、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

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が削除されると自動的に破棄できます。