はじめに
Kubernetesを利用しているプロジェクトでは、各種リソースのマニフェストファイルをIaCで管理していることがほとんどだと思います。
そんな中、裏技的な方法で既存のPersistent Volumeを削除することなく、新しいPersistent Volume Claimに紐付ける方法を知ったので共有したいと思います!(同一StorageClass間)
前提知識
Persistent Volume Claimの実体がPersistent Volumeという位置付けのリソースです。
詳細について、公式ドキュメントをご一読すると理解が捗ります。
https://kubernetes.io/ja/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims
付け替え前の事前準備
- 付け替えたいPVのマニフェストを編集し、persistentVolumeReclaimPolicyを「Retain」に設定(kubectl patchでも恐らく設定可能)
確認せずに作業を始めてしまうと大切なデータが消失します
付け替え手順
- PVCをマウントしているリソースがない状態にする
- PVCが削除されたタイミングで付け替え対象のPVは「Released」ステータスで残り続けます
- 付け替えPVのclaimRef(PVC参照)の設定値を編集すると、PVは「Avaiable」ステータスとなる
- 編集:
name
- 削除:
resourceVersion
、uid
- 編集:
- 付け替え先PVCのマニフェストを適用し、完了
終わりに
以上が簡単な付け替えの手順です。
私も付け替えを実際にやってみるまでは半信半疑だったのですが、問題なく付け替えられました!
大容量データの同期には結構な時間が掛かるため、単純な名前変更などで付け替えできる時には付け替えてしまうと手っ取り早い気がしました!
皆さんも是非お試しあれ!