kopiaの挙動についての調査
Veleroを使ってk8sをCloudflare R2にバックアップしている。
k8sシステムのバックアップは、backups/
フォルダ内に日付フォルダが作成されて保存される。
私はバックアップを10日分と設定しており、それより前のフォルダはVeleroが勝手に消してくれる。
PVのバックアップにはVelero内部でkopiaが使われていて、差分バックアップしているらしい。
このバックアップのサイズが日に日に増えていっている。 Velero本体側は古いファイルは確実に消されているが、kopia側は内部がよくわかんない。 その原因を調査すべく、我々はアマゾンの奥地へと向かった。
まず、S3 Browser(https://s3browser.com/)を使用してバックアップサイズを確認する。 PV以外が原因の可能性もあるため(kopiaが原因でない可能性もあるため)、念のため
backups/
31.63 MB (33 166 071 bytes)
kopia/
730.84 MB (766 345 759 bytes)
この時点でkopiaが原因であることは確定だが、もう少し深堀してみる。 Veleroは、namespaceごとにkopiaのバックアップリポジトリを作るらしい。 リポジトリごとのサイズを見てみよう。
kopia/kube-system/
960.84 KB (983 897 bytes)
kopia/default/
149.79 MB (157 062 963 bytes)
kopia/commafeed-k8s/
580.12 MB (608 298 899 bytes)
commafeed-k8sのサイズが大きいので、原因が簡単にわからないか見てみよう。
まず、以下のコマンドでkopiaでリポジトリに接続する。
$ kopia repository connect s3 --bucket=velero-backup \
--access-key=MY_ACCESSS_KEY \
--secret-access-key=MY_SECRET_ACCESSS_KEY \
--endpoint=my_endpoint.r2.cloudflarestorage.com \
--prefix=kopia/commafeed-k8s/