CoreDNSを削除してしまったのでおうちクラスタをリセットした話

注意事項

この記事は、Notion AIに対して

  • 問題と解決策の概要
  • 例示用のコード

を渡して生成した実験的な記事になります。

はじめに

この記事では、おうちクラスタでの実体験をもとに、CoreDNSを削除してしまった際のリセット方法についてまとめます。

CoreDNSを削除してしまった

5月某日の深夜、筆者はおうちクラスタでの開発を行っていた際、CoreDNSをArgo CD管理下に置こうとし、「おうちクラスタやし壊れてもええやろ」という甘い考えで操作したことにより、CoreDNSが消えてしまったことに気づきました。

これにより、クラスタ内部の各Podから外部への通信や、サービス・Pod間の通信ができなくなってしまいました。
このクラスタで管理していた公開・非公開のいずれのサービスも操作できなくなってしまったので、クラスタをリセットすることにしました。

クラスタをリセットする

今回やった作業は、データを含めてバックアップを定期的にとるようにしていたこともあり、
以下の手順だけで復旧ができました。

  1. 全てのノードで kubeadm reset をする
  2. homeレポのAnsibleを再実行
  3. homeレポのセットアップに従って構築する
  4. 新しいSealed Secretsで各種データを暗号化し直してmainブランチにpush
  5. 各種サービスのデータをバックアップデータから復元

バックアップを取ってなかった、中々に厳しい戦いでしたね。

振り返り

軽く今回の振り返りをします。

運が良かったこと

  • クラウドストレージにバックアップがあったためリセットするハードルは低かった
    • また、NFSでもデータを管理しているため、NFSサーバも生きているのでデータの復旧は容易であった
  • セットアップ手順をある程度まとめていたため、クラスタの再構築もすぐに行えた
    • 自分のサイトは実験場であることが多く、今まで何度も壊してきたのでセットアップは比較的ちゃんと作りこむようにしていたので助かった
  • ダウンしていたので深夜だったこと
    • 自分以外の利用者があるサービスは、基本日本で昼にアクセスが多いのでまだマシだった

改善したい

  • 弊宅でも障害復旧訓練を検討
    • 所属会社でも障害復旧訓練ができるんですが、復旧訓練の大切さを仕事だけでなく 自宅でも実感
  • 自分以外の利用者もいるので慎重にやる
    • homeレポにも含めていない公開・非公開サービスがあり、他利用者もいるので慎重に進めような?
  • Sealed SecretのSecretをバックアップしていなかった
    • 再構築でSealed Secretを再導入したので、全てのSecretを新しい鍵で暗号化する必要があった
    • たまたま各種情報はバックアップとっておいたのでまだマシだった
    • Sealed Secretは起動時に既にSecretがあればそれを使ってくれるのでバックアップしておけば復旧時間がより短くできた
  • 平日夜に作業をしない
    • パートナーがね?ほら、あれよ

おわりに

本記事では、CoreDNSを削除してしまったおうちクラスタをリセットする方法についてまとめました。
今回のトラブルを通じて、おうちクラスタの改善すべき点があることに気づくことができました。
今後はより慎重に、おうちクラスタでもプロフェッショナルな姿勢を持って開発を進めていきたいと思います。