Kubernetesインフラを確実にバックアップするための5つのポイント何を考慮すればいいのか?

Kubernetesが普及するにつれ、バックアップの重要性が増している。だが、「何を」「どのように」バックアップすればいいのか。

2021年03月25日 08時00分 公開
[Stephen PritchardComputer Weekly]

 コンテナの普及により、コンテナをどのように管理・保護するか、コンテナのデータをどのようにバックアップするかといった疑問が浮き彫りになった。

 コンテナは本来マイクロサービスと関連付けられていたが、今でははるかに広範囲のプロセスを運用するように拡張され、本格的なアプリケーションさえ運用するようになっている。

 初期のコンテナはステートレスな設計だった。デプロイが迅速、移動が容易、廃棄が簡単だからだ。だがコンテナの使い方が進化するにつれ、ステートフルなコンテナが増えてきた。ステートフルなコンテナには永続ストレージが必要だ。そして永続ストレージにはバックアップが不可欠だ。

 ミッションクリティカルなアプリケーションを実行するコンテナのクラスタは復元も可能でなければならない。つまりコンテナの状態、コンテナのデータ、コンテナのオーケストレーション方法を復元できる必要がある。

バックアップのギャップ

 コンテナは、バックアップにとってかなり問題になり得る存在だ。DevOpsチームがコンテナを管理していると、バックアップとリカバリーを担当するITチームには見えないことがある。

 コンテナはローカルやクラウドなどさまざまな場所で運用されるため、仮想マシン(VM)をバックアップする従来のツールはコンテナには適さない。VMをバックアップするツールは依然としてドライブやボリュームをバックアップするよう設計されている。

 ESGのアナリスト、クリストフ・ベルトラン氏は次のように話す。「コンテナで実行されるアプリケーションが極めて重要なデータを生成する可能性がある。この事実が、バックアップとリカバリーの必要性を強く示している」

 本稿では、Kubernetesインフラを保護するに当たって最も重要な5つの事項を解説する。

1.常にバックアップする必要があるか

 現時点での答えは、ほぼ常に「必要がある」だ。初期のステートレスなコンテナは、コンテナに与えられたタスク(データセットの処理など)が終わると破棄されていた。こうしたユースケースもまだ存在するが、企業はコンテナやクラスタが停止した後、それを作り直し、そのデータにアクセスできるようにしたいと考える傾向が強くなっている。

 ベルトラン氏によると、開発中のコンテナと運用中のコンテナをサポートする強力なバックアップポリシーが必要だという。データ保護ツールはKubernetesインフラを認識する必要がある。例えばコンテナやクラスタが開発段階から運用段階へと昇格する際にポリシーの調整が必要だ。

2.Kubernetesインフラで保護すべきもの

 コンテナのユーザーは、オーケストレーションしているクラスタを保護する必要がある。これにはオンプレミスの操作、「Linux」や「Windows」での操作、クラウドでの操作、さらにはKubernetes PaaSのマネージドインスタンス(「Google Cloud Platform」「Amazon Web Services」「Microsoft Azure」など)を利用した操作が含まれる。オーケストレーションを保護できないと、ビジネスプロセスやアプリケーションを再構築できなくなるというリスクが生じる。

 ステートフルコンポーネントはキー/バリューデータベース「etcd」に保持される。そのため、コンテナに永続ストレージがリンクされている場合や環境の状態を記録している場合は、etcdコントロールプレーンが最も重要な部分になる。

 その後、ポッド、デプロイメント、ステートフルセット、ワークロードを含めてアプリケーションを保護する必要がある。

 永続ボリュームは、PVC(Persistent Volume Claim)と共に保護する必要がある。最後に、Kubernetes内部で運用されるカスタムリソース定義、名前空間定義、コンテナイメージレジストリのバックアップも必要だ。

 ワーカーノードは容易にスピンアップするように設計されている。特にローカルハードウェアでコンテナを実行している場合は、停止後にこれが運用環境でも動作することを確認する必要がある。

3.Kubernetesインフラを保護する主な手法

 ローレベルな方法としては、開発者が「cron」(訳注:UNIX系OSの実行スケジュール管理コマンド)を使ってetcdのスナップショットを作成し、構成とデータをキャプチャーすることができる。Kubernetesデプロイメントはgitリポジトリから再作成することも可能だ。

 オープンソースツールの「kube-backup」はKubernetesの構成済みのリソースをgitリポジトリにエクスポートする。ただしこのアプローチは拡張性がほとんどなく、永続ボリュームもサポートしない。

 スナップショットは運用環境のKubernetesをバックアップする主なツールになる。ただし、コンテナのバックアップ要件が他と異なるのはその頻度だ。Commvault Ventureの「Metallic」は完全バックアップと増分バックアップを提供する。Commvault Ventureはこのアプローチを「永久増分バックアップ」と説明している。これを完全バックアップの構築に使うことができる。

 重要なデータをノードのローカルドライブ外に確実に保存することで、リカバリーの信頼性も高くなる。

4.Kubernetesの主要バックアップツール

 大手ストレージサプライヤーの大半が、何らかの形式でコンテナの保護をサポートしている。だがKubernetesインフラ全体のバックアップにはより特殊なツールが必要だ。

 Commvault VentureはSaaSの「Metallic VM & Kubernetes Backup」を通じてKubernetesをサポートする。このサービスは「AKS」(Azure Kubernetes Service)、「Amazon EKS」(Elastic Kubernetes Service)、「Red Hat OpenShift」「VMware Tanzu」と連携する。

 Kasten(Veeam Software傘下)は、Kubernetesデータ管理サプライヤーだ。同社の「K10」はクラウドとオンプレミスで動作する。

 Portworx(Pure Storage傘下)の「PX-Backup」はコンテナ、クラスタ、Kubernetes名前空間全体をバックアップできる。

 Trilioの「TrilioVault」はクラウドネイティブのデータ保護アプリケーションで、OpenShiftおよびKubernetesと連携する。このアプリケーションはクラウドプラットフォームに依存しない。

 オープンソースツールの「Velero」(旧「Heptio ARK」)は、オンプレミスでもクラウドでもKubernetesクラスタと永続ストレージのバックアップとリカバリーを可能にする。

5.既存の災害復旧およびバックアッププロセスにどう組み込むか

 Kubernetes用のバックアップ&リカバリーインフラを全く新たに構築するとリソースが大量に必要になり、保護にギャップが残る恐れがある。

 ESGのベルトラン氏は次のように助言する。「現在付き合いのあるバックアップベンダーがソリューションを保有しているならプロセスが簡略化されるため、それをチェックする価値はある。だが、大規模に機能することを確認する必要がある。ネイティブコンテナバックアップを既存の災害復旧に統合できれば役に立つ」

 Kubernetesが主流になるにつれ、運用環境での保護も容易になるだろう。

ITmedia マーケティング新着記事

news047.png

【Googleが公式見解を発表】中古ドメインを絶対に使ってはいけない理由とは?
Googleが中古ドメインの不正利用を禁止を公式に発表しました。その理由や今後の対応につ...

news115.jpg

「TikTok禁止法案」に米大統領が署名 気になるこれからにまつわる5つの疑問
米連邦上院が、安全保障上の理由からTikTokの米国事業の売却を要求する法案を可決し、バ...

news077.jpg

「気候危機」に対する理解 日本は米国の3分の1
SDGsプロジェクトはTBWA HAKUHODOのマーケティング戦略組織である65dB TOKYOと共同で、「...