GKE マルチクラスタ サービスによりクラスタ全体でサービスを検出して呼び出す
Google Cloud Japan Team
※この投稿は米国時間 2021 年 2 月 17 日に、Google Cloud blog に投稿されたものの抄訳です。
Kubernetes アプリケーションが複数のクラスタにまたがる必要はありますか?理由がプライバシー、スケーラビリティ、可用性、コスト管理、データ主権のいずれであっても、プラットフォーム チームがクラスタ境界を越えてアプリケーションを設計、実装、運用、維持することは困難な場合があります。Kubernetes Service プリミティブでは、Kubernetes の単一クラスタの範囲内でのみサービス ディスカバリが有効になるためです。
本日、マルチクラスタ サービス(MCS)の一般提供をお知らせします。MCS は Kubernetes ネイティブのクラスタ間サービス ディスカバリおよび呼び出しのメカニズムであり、高度にスケーラブルなマネージド Kubernetes サービスである Google Kubernetes Engine(GKE)を対象とします。また、クラスタ境界を超えて Kubernetes Service プリミティブの範囲を拡張するため、複数のクラスタにまたがる Kubernetes アプリケーションを簡単に構築できます。
これは、コンテナ化されたマイクロサービスを使用して構築されることが多いクラウドネイティブ アプリケーションにとって特に重要です。マイクロサービスの変更は常に発生します。マイクロサービスはアプリケーションのライフサイクル全体で絶えず更新、スケールアップ、スケールダウン、再デプロイされており、マイクロサービスが相互に検出する機能が欠かせません。GKE の新しいマルチクラスタ サービス機能により、クラスタ間のマイクロサービスベースのアプリの管理が簡単になります。
GKE MCS の仕組み
GKE MCS はデベロッパーとオペレーターがすでに慣れている既存のサービス プリミティブを活用して、複数のクラスタへの拡張を直感的で一貫性のあるものにします。この機能を有効にしたサービスは、仮想 IP を使用してクラスタ全体で検出とアクセスが可能になり、クラスタ内の ClusterIP サービスの動作と一致します。既存のサービスと同様に、MCS を使用するように構成されたサービスはコミュニティ主導のオープン API と互換性があり、ワークロードの移植性を維持できます。GKE MCS ソリューションは、Environ を活用してクラスタをグループ化し Traffic Director が提供するのと同じテクノロジーを利用しています。Traffic Director は Google Cloud のエンタープライズ クラスのフルマネージド プラットフォームで、グローバル アプリケーション ネットワーキング向けです。
MCS の一般的なユースケース
e コマース企業の大手で MCS のアーリー アドプターであるメルカリの担当者は、次のように述べています。「私たちはすべてのマイクロサービスを単一のマルチテナント GKE クラスタで実行してきました。次世代の Kubernetes インフラストラクチャでは、マルチリージョンの同種クラスタと異種クラスタを設計しています。シームレスな東西間のクラスタ内通信が前提条件であり、その提供をマルチクラスタ サービスが約束します。デベロッパーはサービスが実行されている場所を意識する必要がありません。私たちは今後の見通しにとても興奮しています。」- メルカリ プラットフォーム インフラ担当エンジニアリング マネージャー Vishal Banthia 氏
お客様が MCS を使用して複数のクラスタにまたがるサービスをデプロイし、ビジネスニーズに最適化されたソリューションをどう提供するか、楽しみにしています。GKE MCS で実現したお客様の一般的なユースケースを以下に示します。
- 高可用性 - 複数のリージョンのクラスタ間で同じサービスを実行することで、フォールト トレランスが向上します。あるクラスタ内のサービスが利用できない場合、リクエストをフェイルオーバーして、別のクラスタ(または複数のクラスタ)から提供できます。MCS では、クラスタ全体でサービス間の通信を管理し、アプリケーションの可用性と復元力を向上させて、サービスレベル目標を達成できるようになりました。
ステートフル サービスとステートレス サービス - ステートフル サービスとステートレス サービスでは、運用上の依存関係と複雑さが異なり、運用上のトレードオフも同じではありません。通常、ステートレス サービスはストレージの移行にあまり依存していないため、高可用性によってワークロードのスケール、アップグレード、移行が容易になります。MCS を使用すると、アプリケーションをステートフル ワークロードとステートレス ワークロード用に別々のクラスタに分割でき、管理しやすくなります。
共有サービス - お客様は可用性を高め、ステートフル サービスとステートレス サービスをより適切に管理し、データ主権の要件を遵守しやすくするために、個別の Kubernetes クラスタを起動することがますます増えています。ただし、ロギング、モニタリング(Prometheus)、シークレット管理(Vault)、DNS などの多くのサービスをクラスタ全体で共有することで、操作の簡素化とコスト削減が図られることが少なくありません。MCS では、各クラスタが独自のローカル サービス レプリカを必要とせずに、すべての機能クラスタで使用される個別のクラスタに共通の共有サービスを簡単に設定できます。
移行 - 既存のアプリケーションをマイクロサービス ベースのコンテナ化アーキテクチャにモダナイズするには、たいていサービスを複数の Kubernetes クラスタにデプロイする必要があります。MCS は、こうしたサービスの間の通信をブリッジできるメカニズムを提供することで、アプリケーションの移行を容易にします。特に、同じサービスを 2 つの異なるクラスタにデプロイでき、トラフィックのシフトが許可されている場合に役立ちます。
マルチクラスタ サービスとマルチクラスタ Ingress
また、MCS は東西と南北の両方のトラフィック フローにマルチクラスタ負荷分散を使用して、マルチクラスタ Ingress を補完します。トラフィックがインターネットからクラスタ全体に流れるか、クラスタ間の VPC 内に流れるか、またはその両方かを問わず、GKE には、Kubernetes と緊密に統合されネイティブなマルチクラスタ ネットワークが用意されています。
今すぐ GKE マルチクラスタ サービスを使ってみましょう
GKE でマルチクラスタ サービスの使用を開始すると、可用性を高め、共有サービスの管理を改善でき、アプリケーションのデータ主権要件を遵守しやすくなります。詳細については、使用方法に関するドキュメントをこちらでご覧ください。
このブログ投稿に協力してくれたプロダクト マネージャーの Maulin Patel に感謝します。
-GKE プロダクト マネージャー Emeka Nwafor
-GKE スタッフ ソフトウェア エンジニア Jeremy Olmsted-Thompson