Slide 1

Slide 1 text

© 2023 Wantedly, Inc. 取っていてよかった Kubernetes のバックアップ 3-shake SRE Tech Talk #7 LT Oct. 12 2023 - Atsushi Tanaka @bgpat

Slide 2

Slide 2 text

© 2023 Wantedly, Inc. 自己紹介 https://www.wantedly.com/id/bgpat

Slide 3

Slide 3 text

© 2023 Wantedly, Inc. Kubernetes の バックアップは取っていますか?

Slide 4

Slide 4 text

© 2023 Wantedly, Inc. Kubernetes Resource の バックアップは取っていますか?

Slide 5

Slide 5 text

© 2023 Wantedly, Inc. バックアップがあって 助かった話をします

Slide 6

Slide 6 text

© 2023 Wantedly, Inc. トラブルシューティングの実例

Slide 7

Slide 7 text

© 2023 Wantedly, Inc. 問題発生 Cluster Addon のアップグレードをしたら Pod が起動しなくなった

Slide 8

Slide 8 text

© 2023 Wantedly, Inc. 前提となる構成 ● Argo CD で k8s manifest を Apply ● Secret は直接手動で設定 ● Velero で30分毎にリソースのバックアップを取得 ○ 取得したバックアップは Amazon S3 にアップロード

Slide 9

Slide 9 text

© 2023 Wantedly, Inc. 問題発生 Cluster Addon のアップグレードをしたら Pod が起動しなくなった

Slide 10

Slide 10 text

© 2023 Wantedly, Inc. とりあえず変更を元に戻す アップデートが原因なら戻せば直るはず 結果は revert してもエラーのまま

Slide 11

Slide 11 text

© 2023 Wantedly, Inc. 状況確認 Pod のエラーメッセージ 「Secret に入っている環境変数がないよ」 アップデート内容に Secret を消す変更はない Pod に Secret の Delete 権限はない

Slide 12

Slide 12 text

© 2023 Wantedly, Inc. エラーの考察 「Secret に入れていたはずの環境変数がない」というエラー ● Pod の env に secretRef は設定されている? → ある ● Secret は存在する? → ある ● Secret の data は存在する? → ない

Slide 13

Slide 13 text

© 2023 Wantedly, Inc. バックアップからリストアする バックアップを取っていたことを思い出す リストアを実行して Secret が戻ったことを確認 Pod を rollout restart して復旧

Slide 14

Slide 14 text

© 2023 Wantedly, Inc. まとめ

Slide 15

Slide 15 text

© 2023 Wantedly, Inc. まとめ ● バックアップを取っておくと安心 ● Argo CD を利用しても壊れることはある

Slide 16

Slide 16 text

© 2023 Wantedly, Inc. リストア時に困ったこと/気をつけること ● 既存のリソースがリストアできない ○ デフォルト設定では既存リソースがあるとスキップする ○ --existing-resource-policy update をつければ上書きできる ● リストアしても Argo CD に戻されてしまう ○ Argo CD の管理対象リソースは source の状態に戻そうとする ○ リストアする前に syncPolicy を消しておく ● リストアコマンドが思い出せない ○ 普段使わないコマンドは忘れがち

Slide 17

Slide 17 text

© 2023 Wantedly, Inc. (参考) Velero のインストール方法 ● 公式が公開している Helm Chart を使う ○ https://vmware-tanzu.github.io/helm-charts/ ○ configuration.backupStorageLocation と schedules を指定するだけで 自動バックアップも簡単に設定できる ● 別途 provider のための設定が必要 ○ AWS の場合は S3 Bucket の作成とアクセスするための IAM 設定が必要

Slide 18

Slide 18 text

© 2023 Wantedly, Inc. (参考) Velero のバックアップ容量 Wantedly のバックアップ総量は1TBに満たない ● 2019年から30分毎に取る運用 ● 今のクラスタの状態 ○ 500 Namespaces ○ 8,000 Pods ● PersistentVolume のバックアップは含んでいない ● 全てフルバックアップで取得

Slide 19

Slide 19 text

© 2023 Wantedly, Inc. https://www.wantedly.com/projects/522096