StorageClassと動的プロビジョニング
StorageClassによってKubernetesがPersistent Volumeを必要なときに自動プロビジョニングし、管理者による手作業を不要にする仕組みを学びます。
「StorageClassと動的プロビジョニング」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
手動ストレージ管理の問題
静的プロビジョニングでは、PersistentVolumeClaimをバインドする前に、管理者が各PersistentVolumeを手動で作成する必要があります。この方法は規模を拡大できません。
動的プロビジョニングでは、要求が作成されたときにボリュームが自動的に作成されます。
StorageClassとは
StorageClassは、クラスタが提供できるストレージの種類を記述します。使用するプロビジョナー、パラメータ、ボリュームの動作などを定義します。
必要に応じてPersistentVolumeを作成するためのテンプレートと考えるとよいでしょう。
StorageClassの定義
provisionerフィールドには、ボリュームを作成するプラグインの名前を指定します。多くの場合、クラウドディスクのドライバーを指定します。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast-ssd
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp3
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer動的ストレージを要求する
PVCでは、StorageClassを名前で参照するだけです。するとKubernetesが一致するPVを自動的にプロビジョニングします。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data
spec:
accessModes: ['ReadWriteOnce']
storageClassName: fast-ssd
resources:
requests:
storage: 10GiデフォルトのStorageClass
PVCでstorageClassNameを省略すると、KubernetesはクラスタのデフォルトStorageClass(アノテーションで示されます)を使用します。これにより、要求をすぐに利用できます。
kubectl get storageclass
# NAME PROVISIONER DEFAULT
# standard (default) ...再利用ポリシー
reclaimPolicyは、PVCが削除されたときの動作を決定します。
- Delete: 基盤となるボリュームも削除されます
- Retain: 手動で復旧できるよう、ボリュームが保持されます
ボリュームのバインドモード
WaitForFirstConsumerでは、PVCを使用するPodがスケジュールされるまでボリュームの作成を遅らせます。これにより、ディスクがPodと同じゾーンに配置されます。
Immediateではすぐにプロビジョニングするため、ゾーンが一致しない可能性があります。
プロビジョニングの進行を確認する
PVCを適用した後、ボリュームの作成に伴って状態がPendingからBoundへ変わる様子を確認します。
kubectl apply -f pvc.yaml
kubectl get pvc data -w
# data Pending
# data Bound pvc-8a3f... 10Gi複数のストレージ階層
クラスタでは、異なる要件に対応するために複数のStorageClassを定義することがよくあります。これにより、チームはワークロードごとに適切なトレードオフを選択できます。
# fast-ssd -> low latency, higher cost
# standard -> balanced default
# cold-hdd -> cheap, archivalボリュームを拡張する
StorageClassでallowVolumeExpansion: trueが設定されている場合、要求するサイズを編集してPVCを拡張できます。プロビジョナーが基盤となるディスクのサイズを変更します。
spec:
resources:
requests:
storage: 20Gi # increased from 10Gi静的と動的を使い分ける
- 動的: デフォルトの選択肢です。セルフサービスに対応し、規模を拡大しやすくなります
- 静的: 特定の既存ディスクやNFSエクスポートにバインドする必要がある場合に使用します
クイックチェック
動的プロビジョニングについての理解を確認します。
まとめ
StorageClassはストレージの作成方法をテンプレート化し、動的プロビジョニングを可能にすることを学びました。主なフィールドには、provisioner、reclaimPolicy、volumeBindingModeがあります。PVCはクラスを名前で参照し、クラスを指定しない要求はデフォルトクラスによって処理されます。
よくある質問
「StorageClassと動的プロビジョニング」レッスンは無料ですか?
はい。「StorageClassと動的プロビジョニング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「StorageClassと動的プロビジョニング」で何を学びますか?
StorageClassによってKubernetesがPersistent Volumeを必要なときに自動プロビジョニングし、管理者による手作業を不要にする仕組みを学びます。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「StorageClassと動的プロビジョニング」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 設定のためのConfigMaps
- 機密データのためのSecrets
- Persistent VolumeとClaim
- StorageClassと動的プロビジョニング