$30 off During Our Annual Pro Sale. View Details »

取っていてよかった Kubernetes のバックアップ

取っていてよかった Kubernetes のバックアップ

3-shake SRE Tech Talk #7 https://3-shake.connpass.com/event/293432/ で発表した LT の資料です

Atsushi Tanaka

October 12, 2023
Tweet

More Decks by Atsushi Tanaka

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  14. © 2023 Wantedly, Inc.
    まとめ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide