Velero

kopiaの挙動についての調査

tasasei

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/