CSPによるストレージ(PV、PVC)の使用方法

Print

概要

PV(PersistentVolume)とPVC(PersistentVolumeClaim)を利用したストレージの使用方法を紹介します。

PV、PVCの紹介

PersistentVolume(PV)は、管理者がプロビジョニングしたか、StorageClassを使用して動的にプロビジョニングされたクラスターのストレージです。

PersistentVolumeClaim(PVC)は、ユーザーがストレージを要求するもので、PVをリソースとして使用します。

ストレージの種類

  • ブロックストレージ

    • Access Modesで「ReadWriteOne」が可能

    • ストレージの共有不可

  • ファイルストレージ

    • Access Modesで「ReadWriteMany」が可能

    • 複数のPodが起動する場合にストレージの共有が可能

persistentVolume Reclaim Policy

  • delete:PVCを削除すると、PVに定義された実ストレージも削除される

  • retain:PVCを削除しても、PVに定義された実ストレージは削除されない

PVC 作成例

Storage Classが「ebs-gp3-retain」の場合

Storage Classが「efs-zcp-retain」の場合

作成されたPVCをDeploymentにマウント

作成されたPVCをStatefulSetにマウント

AWSのStorage紹介

AWS CloudのStorage Classの種類

Storage Class Name

Description

gp2 (default)

General Purpose SSDで構成されており、99.8%~99.9%の耐久性(年間障害率0.1%~0.2%)があります。

ボリュームごとの最大スループットは250MiB/s * です。

PersistentVolumeClaimを使用するPodが作成されるまでPersistentVolumeのbindingおよびprovisioningを遅延させるモードが定義されています。

リクレイムポリシー(Reclaim Policy)はdeleteで、使用されたPVが削除されるとEBS(Elastic Block Store)も削除されます。

ebs-gp3

gp2と同じspecですが、違いはボリュームごとの最大スループットが1,000MiB/sである点です。

ebs-gp3-retain

ebs-gp3で、リクレイムポリシー(Reclaim Policy)がdeleteではなくretainであるため、PVが削除されてもEBSは削除されません。

efs-{PROJECT_NAME}

AWSリージョンで1つ以上のアベイラビリティゾーン(Availability Zone)が使用できない場合でも、データに継続的な可用性を提供するように設計されたregional storage classで、頻繁にアクセスされるファイルに使用されます。

リクレイムポリシー(Reclaim Policy)はdeleteで、使用されたPVが削除されるとEFS(Elastic File System)も削除されます。

efs-{PROJECT_NAME}-retain

efs-[project name]で、リクレイムポリシー(Reclaim Policy)がdeleteではなくretainであるため、PVが削除されてもEFSは削除されません。

gp2の * スループット制限はボリュームサイズにより128MiB/s ~ 250MiB/sです。170GiB以下のボリュームは最大128MiB/sを提供し、170GiB超~334GiB未満のボリュームはバーストクレジットが利用可能な場合、最大250MiB/sのスループットを提供します。334GiB以上のボリュームはバーストクレジットに関係なく250MiB/sを提供します。gp2は2018年12月3日以前に作成され、以後修正されていないボリューム修正しない限り最大パフォーマンスに達しない可能性があります。

projectで使用するEFSの作成方法

1. EFS provisionerのインストール

EFS ProvisionerをHelmでインストールします。

  • FILE_SYSTEM_ID : Create EFSで作成されたFileSystem ID

  • REGION : リージョン 例)ap-northeast-2

  • PROJECT_NAME : プロジェクト名 例)zcp

helm install stable/efs-provisioner \
--name zcp-efs-provisioner \
--namespace kube-system \
--set efsProvisioner.efsFileSystemId={FILE_SYSTEM_ID} \
--set efsProvisioner.awsRegion={REGION} \
--set efsProvisioner.path=/zcp \
--set efsProvisioner.provisionerName=cloudzcp.io/aws-efs \
--set efsProvisioner.storageClass.name=efs-{PROJECT_NAME}

2. retainストレージクラスの作成

kubectl patch sc efs-zcp -p'{"metadata":{"name":"efs-{PROJECT_NAME}-retain"},"reclaimPolicy": "Retain"}' --dry-run -o yaml | kubectl create -f -

3. 作成されたStorageClassの確認

kubectl get sc
NAME             PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
ebs-gp3          ebs.csi.aws.com         Delete          WaitForFirstConsumer   true                   162m
ebs-gp3-retain   ebs.csi.aws.com         Retain          WaitForFirstConsumer   true                   162m
efs-zcp          cloudzcp.io/aws-efs     Delete          Immediate              false                  3h10m
efs-zcp-retain   cloudzcp.io/aws-efs     Retain          Immediate              false                  3h7m
gp2 (default)    kubernetes.io/aws-ebs   Delete          WaitForFirstConsumer   false                  6h28m

参考ページ

https://docs.aws.amazon.com/eks/latest/userguide/storage-classes.html

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html?icmpid=docs_ec2_console

https://docs.aws.amazon.com/efs/latest/ug/storage-classes.html

https://aws.amazon.com/efs/when-to-choose-efs/?nc1=h_ls

https://aws.amazon.com/ko/premiumsupport/knowledge-center/eks-persistent-storage/

Azureのストレージ紹介

AzureのStorageClassの種類

Storage Class Name

説明

default

Azure StandardSSDストレージを使用してManaged Diskを作成します。

リクレームポリシー(Reclaim Policy)はdeleteで、使用されたPVが削除されるとAzureディスクも削除されます。

managed-premium

Azure Premiumストレージを使用してManaged Diskを作成します。

リクレームポリシー(Reclaim Policy)はdeleteで、使用されたPVが削除されるとAzureディスクも削除されます。

managed-premium-retain

managed-premiumで、リクレームポリシー(Reclaim Policy)をdeleteではなくretainに設定すると、PVが削除されてもAzureディスクは削除されません。

azurefile

Azure標準ストレージを使用してAzureファイル共有を作成します。

リクレームポリシー(Reclaim Policy)はdeleteで、使用されたPVが削除されるとAzureファイル共有も削除されます。

azurefile-premium

Azure Premiumストレージを使用してAzureファイル共有を作成します。

リクレームポリシー(Reclaim Policy)はdeleteで、使用されたPVが削除されるとAzureファイル共有も削除されます。

azurefile-premium-retain

azurefile-premiumで、リクレームポリシー(Reclaim Policy)をdeleteではなくretainに設定すると、PVが削除されてもAzureファイル共有は削除されません。

参考ページ

https://docs.microsoft.com/en-us/azure/aks/concepts-storage#storage-classes

IBMのストレージ紹介

IBMのStorageClassの種類

  • bronze ~ gold:固定IOPSでストレージサイズを選択

  • custom:ストレージサイズとそれに応じたIOPSを選択


bronze

silver

gold

custom

iopsPerGB

2

4

10


sizeRange

[20-12000]Gi

[20-12000]Gi

[20-4000]Gi


sizeIOPSRange




[20-39]Gi: [100-1000]
[40-79]Gi: [100-2000]
[80-99]Gi: [100-4000]
[100-499]Gi: [100-6000]
[500-999]Gi: [100-10000]
[1000-1999]Gi: [100-20000]
[2000-2999]Gi: [200-40000]
[3000-3999]Gi: [200-48000]
[4000-7999]Gi: [300-48000]
[8000-9999]Gi: [500-48000]
[10000-12000]Gi: [1000-48000]

ストレージ課金の種類(Billing type)

  • monthly:ストレージ使用料が月単位で課金される方式

    • 月単位で課金されるため、途中で削除しても残り日数に関係なく1ヶ月分の料金が発生

    • 長期間使用する場合に有利

  • hourly:ストレージ使用料が時間単位で課金される方式

    • 時間単位で課金されるため、途中で削除しても残り分数に関係なく1時間分の料金が発生

    • 料金はmonthlyより高いが、短期テストなど一時的な使用に適している

参考ページ

この回答は役に立ちましたか? はい いいえ

フィードバックを送信
お役に立てずに申し訳ございません。この記事を向上させるためにフィードバックをお願い致します。