Kubernetes

マルチクラスター まるちくらすたー

Kubernetesクラスターフェデレーションマルチクラウド可用性GitOps
マルチクラスターについて教えて

簡単に言うとこんな感じ!

Kubernetesクラスター(アプリを動かす「サーバー群のまとまり」)を1つじゃなく複数持って運用することだよ!「卵を1つのカゴに盛らない」作戦で、障害・地域・用途ごとに環境を分けることで、安全性や柔軟性がグッと上がるんだ!


マルチクラスターとは

マルチクラスターとは、Kubernetesのクラスターを複数同時に運用する構成・アーキテクチャのことです。1つのクラスターにすべてのワークロード(アプリやサービス)を集中させるのではなく、複数のクラスターに分散させて管理します。

なぜ複数に分けるのか、といえば理由はさまざまです。たとえば「本番環境・開発環境・テスト環境を完全に分離したい」「東京リージョンと大阪リージョンの両方で動かして災害対策をしたい」「AWSとGCPにまたがって運用したい(マルチクラウド)」といったニーズが典型例です。

ビジネス観点では、1つのクラスターに障害が起きても全サービスが止まらない規制や法律ごとにデータを保存する場所を分けられるチームや部門ごとに独立した環境を持てるという点が大きなメリットです。一方で「複数のクラスターをどうまとめて管理するか」という運用コストが増える点がトレードオフです。


マルチクラスターを使う理由とパターン

パターン目的具体例
環境分離開発・ステージング・本番を完全隔離dev用クラスター/prod用クラスター
地理的分散災害対策・レイテンシ低減東京クラスター+大阪クラスター
マルチクラウド特定クラウドへの依存回避AWS+GCPの並行運用
チーム分離組織・事業部ごとの独立管理A部門クラスター/B部門クラスター
規制対応データ保存場所の法令遵守日本国内データは国内クラスターのみ
スケール分散単一クラスターの限界を超えるノード数上限をクラスター追加で回避

覚え方:「EGGS(卵)を複数のカゴへ」

「卵を1つのカゴに盛るな(Don’t put all eggs in one basket)」という英語のことわざがそのまま当てはまります。クラスターが1つだと、その1つが壊れたときにすべてが止まります。マルチクラスターはリスクを分散する「複数のカゴ」作戦です。

シングルクラスターとの比較

観点シングルクラスターマルチクラスター
管理の手間★(少ない)★★★(増える)
障害の影響範囲全体に波及一部クラスターに限定
地理的分散難しい容易
コスト低め高め
セキュリティ境界論理的な分離のみ物理的に分離可能
チームの独立性制限あり高い

歴史と背景

  • 2014年 — Kubernetesがオープンソースとして公開。当初はシングルクラスター前提の設計
  • 2016年頃 — 大規模採用が進む中、「クラスターをまたいで管理したい」というニーズが顕在化。Kubernetes Federation(フェデレーション)v1 が登場
  • 2018年 — Federation v1の複雑さから利用が伸び悩み。コミュニティはシンプルなマルチクラスター管理の模索を開始
  • 2019年Federation v2(KubeFed) が登場。よりKubernetesネイティブな設計に
  • 2020年代前半GitOpsツール(Argo CDFlux)がマルチクラスター管理の事実上の標準的手段として普及
  • 現在 — CNCF(クラウドネイティブ技術の標準化団体)のプロジェクトとして Open Cluster ManagementLiqo などが登場し、マルチクラスターの管理手法が成熟期へ

マルチクラスターの主な管理ツール・アーキテクチャ

マルチクラスターの最大の課題は「複数クラスターをどう一元管理するか」です。代表的なアプローチを整理します。

マルチクラスター管理のアーキテクチャ 管理クラスター (コントロールプレーン) ワーカークラスターA 東京リージョン(AWS) ワーカークラスターB 大阪リージョン(AWS) ワーカークラスターC 東京リージョン(GCP) Pod / Service アプリA(本番) Pod / Service アプリA(DR待機) Pod / Service アプリB(別チーム) 管理ツール例 Argo CD / Flux(GitOps) KubeFed Open Cluster Management

主要な管理ツール

ツールアプローチ特徴
Argo CDGitOpsGitリポジトリを「正しい状態」として複数クラスターに自動反映
FluxGitOpsArgo CDと並ぶGitOpsの代表格。CNCFの卒業プロジェクト
KubeFedフェデレーション単一APIで複数クラスターに同じリソースを配布
Open Cluster Managementハブ&スポークRed Hatが主導。管理クラスター(ハブ)からワーカーを集中管理
RancherGUI管理UIでマルチクラスターを視覚的に操作できる商用/OSS製品
Cluster APIクラスター自体のライフサイクル管理クラスターの作成・削除・アップグレードを宣言的に管理

サービスメッシュとの組み合わせ

マルチクラスター構成では、クラスターをまたいだサービス間通信も課題になります。Istio(イスティオ)やLinkerd(リンカード)などのサービスメッシュと組み合わせることで、別々のクラスターにあるサービスを安全につなぐことができます。


関連する規格・RFC

規格・仕様内容
Kubernetes Federation v2(KubeFed)CNCFが定義するマルチクラスターリソース管理のAPI仕様
Open Cluster Management(OCM)CNCFサンドボックスプロジェクト。マルチクラスター管理の標準API
Cluster API(CAPI)クラスターのライフサイクルを宣言的に管理するKubernetes公式SIG
Multi-Cluster Services API(KEP-1645)クラスター間でKubernetes Serviceを共有するための提案仕様

関連用語

  • Kubernetes — コンテナを自動で管理・運用するオーケストレーションプラットフォーム
  • クラスター — Kubernetesを動かすサーバー群のまとまり
  • GitOps — Gitリポジトリを「正しい状態」として自動反映する運用手法
  • サービスメッシュマイクロサービス間の通信を制御・観測する基盤
  • [マルチクラウド](./