このブログでは、Volterra がどのようにしてユーザーがapplicationsとインフラストラクチャを艦隊のように運用できるように支援するかについて説明します。 当社のコントロール プレーンベースのアプローチが大規模なアプリ クラスター群の運用をどのように容易にするかを説明し、Google Anthos、Azure Arc、Rancher などの他のマルチ クラスター管理プレーン アプローチと比較します。
ここまで読んで、私たちが単にマーケティングの宣伝をしていて、マルチクラスター管理をフリート運用と呼んでいるのではないかと疑問に思われるかもしれません。 マルチクラスター管理とフリート運用のアプローチは、異なるユースケースに対応しており、アーキテクチャが根本的に異なります。 マルチクラスター アプローチは、クラスターの数が比較的少なく、ユーザーが一貫した運用モデルを使用してこれらのインフラストラクチャ クラスターを管理したいというシナリオに対応するように設計されています。 一方、フリート アプローチは、大規模なクラスター (ロボット、自動車、産業用ゲートウェイ、数十のパブリック クラウド リージョンなどの K8s クラスターなど) があり、ユーザーがこれらの大規模なクラスターに同じapplicationとネットワーク/セキュリティを展開したい場合のシナリオに対応するように設計されています。 次の 2 つのセクションでは、マルチクラスターとフリート運用アプローチについてさらに詳しく説明し、比較します。
マルチクラスター管理アプローチは、単一チームの運用下にあるクラスターの数が比較的少ない場合のユースケースに対応するように設計されています。 このようなシナリオの例としては、爆発半径を縮小するために、いくつかのアベイラビリティーゾーンにまたがる数十のクラスターが挙げられます。 同様に、ユーザーは規制上のニーズに対応するために、いくつかのリージョンにまたがる複数のクラスターを選択する場合があります。
次の 2 つの例は、マルチクラスター ソリューションがどのように機能するかを (高レベルで) 示しています。
図 1 に示すように、Rancher のマルチクラスター アプローチを使用したapplication展開の例を見てみましょう。 マルチクラスター アプローチでは、顧客はapplication展開のターゲット サイトを 1 つずつ選択します。 ターゲット サイトを 1 つずつ選択するこのアプローチは、クラスターがいくつかある場合に有効です。 ただし、このアプローチは、たとえば 1,000 個のクラスター向けには設計されていません。
図 2 は、Rancher を例に、マルチクラスター アプローチで可観測性がどのように機能するかを示しています。 マルチクラスター アプローチでは、展開されたポッドのステータス、CPU およびメモリ リソースの使用率を確認するには、顧客は各クラスターを 1 つずつダブルクリックする必要があります。 ターゲット サイトを 1 つずつ監視するこのアプローチは、少数のクラスターには適していますが、多数のクラスターを管理するには適していません。
クラスター 1:
クラスター 2:
最初の例で説明した問題を解決するための明らかなアプローチは、各クラスターに対してタスクを繰り返す何らかの形式の自動化を作成することです。 たとえば、新しいクラスターが追加されるたびに、スクリプトは次の操作を実行して新しいapplication(たとえば checkoutservice) をデプロイできます。
KUBECONFIG=~/Documents/kubeconfig/ce01-ashburn-aws-staging をエクスポートします。
kubectl を適用 -f checkoutservice.yaml
ただし、展開、アップグレード、ポリシー、リソース予約などの各操作ごとに自動化を構築する必要があります。 この自動化では、多数のクラスターにわたって個々の操作を実行するだけでなく、障害状態の処理も考慮する必要があります。 また、クラスターのサブセットでのベータ テストや、すべてのクラスターにわたるローリング アップグレードなどの複雑なシナリオがある場合、自動化はますます複雑になります。 私たちはプロセスの早い段階でこれを認識し、次に説明するフリート運用アプローチを使用して、これらすべての機能を提供する分散型コントロール プレーンを構築しました。
フリート運用とは、顧客がフリートに対して意図を一度宣言的に定義し、システムが影響を受けるサイトが定義された意図に沿っていることを確認する責任を引き継ぐことを意味します。 意図の例には、applicationソフトウェアのバージョン、インフラストラクチャ ソフトウェアのバージョン (オペレーティング システムのバージョンなど)、ネットワーク ポリシー、セキュリティ ポリシー、リソースの予約などがあります。
意図が有効になると、システムはユーザーが艦隊の状態と健全性を確認できるようにします。 つまり、ユーザーは、フリート内のすべてのサイトのインフラストラクチャとapplicationsの健全性を 1 つの画面で集約的に把握できるため、顧客の運用チームの運用の複雑さが軽減されます。 ユーザーは、健全性を判断するために各サイトまたはクラスターを 1 つずつクリックしたり、情報を集約するための自動化ツールを作成したりする必要がありません。
Volterra のフリート運用アプローチは、セグメンテーション、構成、および可観測性の 3 つの主要コンポーネントで構成されており、これらについては次のセクションで説明します。
多くの場合、ユーザーは開発、テスト、本番コンピューティング サイトなど、複数のサイトを混在させています。 開発ワークロードは開発サイトにのみ配置されるなどの組織ポリシーにより、さまざまなワークロードを特定のサイト セグメントに展開する必要があります。 ユーザーは、キーと値の 2 つの部分で構成されるラベルを使用して、サイトに柔軟にタグを付けることができます。 例:
サイトにタグが付けられると、ユーザーはラベルのキーと値の条件を使用して「仮想サイト」を定義できます。 マルチクラウドのシナリオでは、ユーザーは自分のサイトに dev、pre-prod、prod などのタグを付けることができます。 次の図 3 は、前述のラベル キー値を使用したロボットの使用例を示しています。
以下は、ユーザーが blend/go-sdk 構文を使用して仮想サイトを作成できる Volterra の構成スニペットです。 この例では、個々のサイトはラベルキー=ves.io/countryとラベル値ves-io-jpnでタグ付けされています。
ユーザーは、事前に艦隊のセグメントを定義し、プロビジョニング時に艦隊に含めるサイトにタグを付けるという運用モデルに慣れています。仮想サイトは、ユーザーの既存の運用モデルと完全に連携します。 新しいサイトが適切なタグを使用してプロビジョニングされると、追加の手動手順を必要とせずに、以前に定義された仮想サイトに自動的に含められます。 さらに、Volterra は、ハードウェアの製造元やパブリック クラウドの種類などの事前にプロビジョニングされた情報を検出し、システム タグを事前に入力します。 ユーザーはオプションで、これらの自動検出されたタグを使用して仮想サイトを定義することを選択できます。
フリート構成機能は、次の 3 つの例で最もよく説明できます。
適切なラベルが付いた新しいサイトがフリートに追加されると、新しいサイトは仮想サイト (この例では jpn-all-sites) に自動的に追加され、フリート構成 (この例では Kuard デプロイメント) が新しく追加されたサイトに自動的に適用されるため、運用チームの負担が軽減され、人的エラーが排除されます。
仮想サイトと仮想 Kubernetes (vK8s) は、構成に使用されるだけでなく、フリート内の分散サイト全体の健全性を集約するためにも使用されます。 これは、ユーザーが各サイトからステータスを 1 つずつ取得して情報を集約するためのツールを作成する必要がある他のソリューションと比較して、非常に強力なツールです。 このシステムは、すべてのサイトのヘルス ステータスを 1 つの画面に自動的に集約し、顧客の運用チームの運用の複雑さを軽減します。 収集されるヘルス ステータスには、applicationの展開ステータス、サイトのヘルス、applicationのヘルスなど、さまざまな側面が含まれます。
次のスクリーンショットに示すように、ユーザーは地図上ですべてのサイトの健全性の概要を簡単に把握できます。 色は、健康スコアが 75 より大きい場合は緑、40 ~ 75 の場合はオレンジ、40 未満の場合は赤で示されます。 ヘルススコアは、接続性、信頼性、セキュリティ、パフォーマンス (つまり、リソース消費) で構成される集計スコアです。
ユーザーは、サイトの健全性とともに、すべてのサイトにわたる接続性の集約ビューも表示できます。 図 10 に視覚化されているように、サイトを Volterra バックボーンに接続する各リンクの接続状態も表示されます。 ユーザーは、ヘルス ステータスに基づいてパフォーマンスが低いリンクをクリックして、リクエストとエラーに関する詳細な統計情報を表示し、図 11 に示すように接続の問題をトラブルシューティングできます。
次に、ユーザーは、サイト全体の CPU およびメモリ負荷分散を介して、すべてのサイトにわたる集計情報を表示できます。 この情報は、どのサイトが過度に使用されており、リソース不足の危険があるかを IT 管理者またはサイト管理者が特定するのに役立ちます。 サイト管理者は、リソース消費量がしきい値を超えたときに通知されるアラートを設定できます。 このスクリーンショットでは、サイトの半数が使用可能なメモリの 75% 以上を消費していることが分かります。 この情報を取得するために、個々のサイトをクリックしたり、追加のツールを作成したりする必要はありません。
フリート オブジェクトの継続的な検証機能により、POD 展開のステータス (展開された POD の数、進行中の POD の数、失敗した POD の数) が提供されます。 デプロイされると、ユーザーはポッドのヘルスステータス(実行中か、イメージを待機中か、メモリ不足かなど)も確認できるようになります。
さらに、ユーザーは、次のスクリーンショットに示すように、セキュリティ ポリシーの有効性の集計ビューを確認し、すべてのサイトにわたるヒットを取得できます。
Volterra のフリート運用アプローチが 3000 クラスターのフリートの管理にどのように使用されたかについて詳しくは、Kubernetes カンファレンスでのVolterra のプレゼンテーションをご覧になり、 Jakub Pavlik のブログをお読みください。
次のブログ「効果が出るまでの時間」では、Volterra の分散型コントロール プレーンとバックボーンが、非常に短い時間でグローバルに分散されたサイト間で構成の一貫性を伝播し、確保するのにどのように役立つかについて説明します。 乞うご期待!