Category: 入門編
2024.03.25
目次
PV、PVC概要、特徴、関連性、利用事例についての解説
Kubernetes では Persistent Volume ( PV )、 Persistent Volume Claim ( PVC )の仕組みによりデータの永続性を提供しています。本記事では PV 、 PVC について概要、特徴、関連性、利用事例について解説します。
1. Persistent Volume(PV)とは
Persistent Volume( PV )は、 Kubernetes クラスタ内での永続的なデータストレージを定義する機能です。定義されたデータストレージは外部の永続ボリュームを提供するシステムと連携し、永続化領域として確保されます。
PV は後述する Persistent Volume Claim ( PVC )によって必要なストレージ要件やアクセスモードを指定し要求され、 PVC 経由で利用します。
特徴
PV は NFS 、 iSCSI などストレージタイプや、AWS EBS のようなプロバイダーが提供するストレージサービスなど、様々な種類の永続的なデータストレージを定義することができます。
容量、読み取り専用、読み取り/書き込みなど、リクエストされたストレージのポリシーや、アクセス要件に対応するアクセスモードなど詳細を定義することができます。
ライフサイクル
PV は手動または動的プロビジョニングを使用して生成されます。動的プロビジョニングは、後述する PVC が作成されると、自動的に PV が作成される仕組みになっています。ライフサイクルとしては、永続ボリュームが使用されなくなると解放されます。
2. Persistent Volume Claim(PVC)とは
PVC は、 Kubernetes クラスタ内での PV へアクセスを要求するリソースです。 PVC は、アプリケーションが必要とするストレージの要件を指定し、これに対応する PV を取得するために使用されます。要件には、容量、アクセスモード、ストレージのプロバイダーやタイプなどが含まれます。
特徴
PVC は手動で定義されることもありますが、通常は動的プロビジョニングと呼ばれる機能を使用して作成され、対応する PV も必要に応じて自動的に作成されます。
PVC は Pod 内でマウントされ、アプリケーションが永続データにアクセスする手段を提供します。さらに PVC は、 PV との組み合わせにより、アプリケーションがデータを永続的に保持し、クラスタ内で柔軟に移動させることができます。
ライフサイクル
PVC は Pod が終了した後も再利用可能です。同じ PVC を複数の Pod で共有することもできます。 PVC が不要になった場合は手動で削除します。
図版出典:NET ONE BLOG
3. Podとの関連性について
本セクションでは PV と PVC が Pod とどのように関連し、柔軟なデータ管理を実現しているのか、連携プロセスに順じて解説します。
PVの提供とPVCの要求
Pod が必要とするストレージ要件を PVC が定義し、これを満たす PV を要求します。
PVCと PV のバインド
Pod 内にデータを提供するための中継役として PVC が機能します。 PVC が PV を要求すると、 Kubernetes がこれに対して適切な PV を検索します。利用可能なものが見つかれば PVC と PV がバインドされます。
PodのPVとPVCのマウント
PV は PVC を通じてバインドされ、 PV はPodのデータ領域内にマウントされることで データにアクセスします。これは Pod のマニフェスト( YAML ファイル)内で、 volumes と volumeMounts セクションを使用して指定されます。
Podの永続性とデータの保持
Pod が永続ボリュームを介してデータにアクセスすることで、 Pod の再起動や削除後もデータを保持することができます。これにより、アプリケーションが永続的な状態を維持でき、データの損失や再生成の必要がなくなります。
PodとPVCのライフサイクル同期
Pod と PVC は同じ Namespace 内で作成され、同じライフサイクルを共有します。 Pod が終了すると、それに関連する PVC も不要になります。 PVC が削除されると、それにバインドされていた PV も解放されます。
4. PVとPVCの利用事例について
PV と PVC の実際の使用例について、アプリケーションにおける利用例、運用において重要なデータのバックアップ事例、セキュリティの考慮事項について紹介します。
アプリケーションにおける利用例
データベースのデータ永続化
データベースサーバー(例: MySQL 、 PostgreSQL )のデータディレクトリを永続ボリュームにマウントすることでデータベースのデータを永続的に保存することができます。
共有ストレージの利用
PV を共有ストレージとして使用することで、異なる Pod 間でデータを共有し、複数の Pod が同じデータを利用する場合でも相互に影響を与えずに作業することができます。
アプリケーションログの永続化
アプリケーションが生成するログデータを永続的に保存するために PV と PVC を使用することで、ログデータが Pod の再起動や削除後も保持され、トラブルシューティングや監視が容易になります。
バックアップの利用例
Kubernetes で動作するアプリケーションデータに対し、外部ストレージを何かしらの手段でバックアップを行ったとしても、バインドされた PV、PVC の整合性を保つ必要があります。この点におけるバックアップ運用について事例を紹介します。
スナップショット
一般的な方法として、クラウドプロバイダーが提供するストレージスナップショットを利用します。これにより、 PV の状態を取得し、必要な場合に元の状態に戻すことができます。
ストレージプロバイダーのツールを使用
Kubernetes 上の PV データをバックアップするため、一部のストレージプロバイダーは、専用ツールや API を提供しています。
バックアップ用のサイドカーコンテナを使用
PV のデータを定期的にバックアップするために、 Pod 内にバックアップ用のサイドカーコンテナをデプロイする方法です。このサイドカーコンテナは、データを取得し、外部リソースや別のストレージにバックアップを作成します。
環境に合わせ、バックアップポリシーを策定し、必要な頻度でバックアップを実行することが重要です。
セキュリティに関する考慮事項
運用において PV と PVC のセキュリティに関する考慮事項を紹介します。
ストレージアクセスの権限管理
Kubernetes クラスタ内で十分な権限を持たない Pod やユーザが PV や PVC を作成、変更できないように、 RBAC ( Role-Based Access Control )を使用してアクセス権限を制限する必要があります。
Audit Loggingの有効化
PV および PVC の作成、変更に関するイベントを記録するために、 Kubernetes の Audit Logging 機能を有効にすることで、異常なアクセスや変更があった場合にログでトラッキングできます。
ストレージのライフサイクル管理
PV および PVC のライフサイクルを慎重に管理し、不要なリソースが残らないように、適切なタイミングで PV や PVC を解放することで、不正アクセスやデータ漏洩のリスクを低減することができます。
5. まとめ
ここまで解説してきた通り、 PV と PVC を活用することで、アプリケーションがデータを永続的に保存でき、ビジネスの継続性、サービスの可用性が向上します。さらにセキュアなデータの管理を実現し、データ漏洩や不正アクセスのリスクが低減させることでビジネスにおける信頼性向上につながります。
柔軟なスケーラビリティとデプロイメントにより、ビジネスが需要の変化に柔軟かつ迅速に対応することで、データの効率的な利用と共有により協調作業が促進され、新しいビジネス機会が生まれる可能性が広がります。
Kubernetes の運用を相談したい
Contactお問い合わせ
お見積もり・ご相談など、お気軽にお問い合わせください。