GKEでクラスタを削除してもDBのデータを保持したい
はじめに
GKEでクラスタを作成してDBを起動していましたが、クラスタを削除するとDBのデータも消えてしまうので困っていました。
クラスタ外にデータを置いておけば解決するだろうと考えて調べたところ、パッと見つけた方法で解決したのでそのメモです。
他にもいろいろとやり方はあるかと思いますが、ここでは一例を扱います。
どうやって対処したか
永続ディスクを使用した永続ボリューム には以下のように記述があり、
ほとんどの場合、PersistentVolume オブジェクトを直接構成したり Compute Engine 永続ディスクを作成したりする必要はありません。PersistentVolumeClaim を作成すると、Kubernetes が自動的に永続ディスクをプロビジョニングします。
~省略~
この要求を削除すると、対応する PersistentVolume オブジェクトとプロビジョニングされた Compute Engine の永続ディスクも削除されます。
GKEではPersistentVolumeClaimを使用して動的にPersistentVolumeが用意された場合、
クラスタを削除したタイミングでDBデータも削除されるようです。
DBデータを保持したい場合には、既存の永続ディスクを PersistentVolume として使用するで記述されている通りにCompute Engineに永続ディスクを用意してPersistentVolumeで使用します。
まずは、クラスタのゾーンを確認します。
注: 永続ディスクは、クラスタノードと同じゾーンに存在する必要があります。
$ gcloud container clusters list
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS
次に永続ディスクをクラスタノードと同じゾーンに用意します。
sizeやtypeは適宜置き換えます。
$ LOCATION=xxx #上記で確認したLOCATIONを設定する
$ gcloud compute disks create pd-name --type pd-standard --zone $LOCATION --size 10GB --quiet
あとは、既存の永続ディスクを PersistentVolume として使用するで記載されている通り、PersistentVolume
とPersistentVolumeClaim
のマニフェストファイルをapplyしてPodでマウントしてあげればOKです。
これでクラスタを削除しても永続ディスクは消えないのでデータが保持されました
追記
上記の方法だと複数nodeから書き込みできませんでした。
注: 複数のノードから永続ディスクに書き込みモードで同時接続することはできません。
しかし、対応方法は用意されています。
The steps you need to take for this installation are:
- Create a Google Disk instance with your desired capacity.
- Create the nfs-server deployment and service.
- Create your PV and the corresponding PVC with special specs.
こちらを参考にしました。
クラスタ内にnfs-serverを用意して永続ディスクとつなぎ、DBをnfs-serverとつなぐという感じです。
Cloud Filestore をつかう方法もあるようですが、容量が1TBからとなっているので費用が高くなるので選択肢としては厳しいなと思いました。
Author And Source
この問題について(GKEでクラスタを削除してもDBのデータを保持したい), 我々は、より多くの情報をここで見つけました https://qiita.com/hirokisan/items/c36ebcb83a87c8a33c94著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .