【Kubernetesリソースシリーズ第七弾】PersistentVolumeとPersistentVolumeClaimについて知る!

10月 11, 2023

どもです。やっと春服の出番が来そうで嬉しいsaisaiです。


本日はKubernetesリソースシリーズ第六弾ということでPersistentVolumeとPersistentVolumeClaimについて学んだことを記事にしていこうと思います。


ストレージ管理のキーとなるサービスですので、こちらもしっかり押さえていきたいと思います。

PersistentVolume・PersistentVolumeClaimとは

PersistentVolumeとはストレージへの接続情報を管理したり、ストレージそのものを抽象化するリソースです。
そしてPersistentVolumeClaimは、上記情報の要求を行います。


では、それぞれのマニフェストファイルはどのようになっているのでしょうか。


まずはPersistentVolumeのマニフェストファイルをみていきましょう。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: volume-01
  labels:
    env: study
spec:
  storageClassName: slow #ストレージの種類を定義
  accessModes:
  - ReadWriteOnce #読み書きの権限を設定
  capacity:
    storage: 1Gi #ストレージ容量を定義
  persistentVolumeReclaimPolicy: Retain #削除時の動作(RetainかDelete)
  hostPath: #保存先(今回はhost上)
    path: "/data/storage" #保存パス
    type: Directory

このようにストレージに関する情報を管理、定義し実際に作成します。

ではPersistentVolumeClaimはどのようになっているのでしょうか。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: volume-claim
  labels:
    env: study
spec:
  storageClassName: slow #ストレージの種類
  accessModes:
  - ReadWriteOnce #読み書きの権限
  resources: #容量を定義
    requests:
      storage: 1Gi

上記のように指定することでPersistentVolumeで作成された永続ストレージを要求し使用することができます。

リソースの作成

それでは下記のように一纏めにしたマニフェストファイルを作成し、リソースを作成してみましょう。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: volume-01
  labels:
    env: study
spec:
  storageClassName: slow
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 1Gi
  persistentVolumeReclaimPolicy: Retain
  hostPath:
    path: "/data/storage"
    type: Directory

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: volume-claim
  labels:
    env: study
spec:
  storageClassName: slow
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

それではリソースを作成してみます。まずはホスト側のディレクトリを作成しましょう。

$ mkdir -p /data/storage

実際にリソースを作成してみます。

$ kubectl apply -f storage.yml
persistentvolume/volume-01 created
persistentvolumeclaim/volume-claim created

作成できました。一応確認しておきましょう。

$ kubectl get pv,pvc
NAME                         CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                  STORAGECLASS   REASON   AGE
persistentvolume/volume-01   1Gi        RWO            Retain           Bound    default/volume-claim   slow                    3m17s

NAME                                 STATUS   VOLUME      CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/volume-claim   Bound    volume-01   1Gi        RWO            slow           3m17s

確認も取れましたね!無事にストレージの作成及び要求を行うことができました!

ひとこと

今回は永続ストレージを扱うリソースについて記事にしてみました。


元環境ではminikubeを使用している以上シングルノードのテスト向けである HostPath を使用したりと自由性に少し欠けましたが導入部分としては十分に機能を確認できたかと思います。


コンテナを管理する以上ストレージ管理は避けて通れない部分になってきますので、引き続きどんどん使用して柔軟に使いこなせるようになっていきたいと思います。


ここまで読んでいただきありがとうございました!


-saisai-


↓オススメ教材

kubernetes

Posted by CY