コンテナ オーケストレーションとは

単一のコンテナ化されたアプリケーションの管理は比較的簡単ですが、分散システムで数百や数千にスケールアップする場合、可用性、相互接続性、スケーラビリティを確保するうえで大きな課題が生じます。コンテナ オーケストレーションは、こうした複雑さに対処するものです。Kubernetes は、こうしたタスク向けの主要なオープンソース プラットフォームですが、Google Kubernetes Engine(GKE)などのフルマネージド コンテナ オーケストレーション ツールを使用することで、デプロイや継続的な管理が簡素化され、Kubernetes に関連する運用上の負担の多くが抽象化されます。

Google Cloud でのコンテナ オーケストレーションの概要

コンテナ オーケストレーションの定義

コンテナ オーケストレーションは、基盤となるインフラストラクチャを気にすることなく、コンテナ化されたアプリケーションを自動的にプロビジョニング、デプロイ、スケーリング、管理するシステムです。

デベロッパーはコンテナ オーケストレーションをコンテナがある任意の場所で実装でき、コンテナのライフサイクル管理を自動化できます。

企業の開発チームや運用チームにとって、これは、手動プロセスから宣言型の自動システムへの移行を意味します。新しいバージョンのデプロイ、トラフィックの急増に対応するためのスケーリング、ハードウェア障害からの復旧などのタスクの実行方法を指定する代わりに、アプリケーションの望ましい状態を宣言するだけで済みます。

Kubernetes オーケストレーションの主なコンセプト

Kubernetes オーケストレーションは、マシンのクラスタを管理し、必要なリソースとユーザーが定義した望ましい状態に基づいてコンテナをデプロイすることで機能します。このシステムは、連携して機能するいくつかの重要なコンセプトで構成されています。

  • コンテナ: アプリケーションとそのすべての依存関係を含む、軽量でポータブルな実行可能パッケージです。Kubernetes は、これらのコンテナのデプロイとライフサイクルをオーケストレートします。
  • クラスタ: アプリケーションを実行するために Kubernetes によってグループ化および管理される、ノードと呼ばれるすべてのマシンのセットです。
  • コントロール プレーン: Kubernetes クラスタの頭脳として機能します。クラスタに関するすべてのグローバルな決定(スケジューリングなど)を行い、クラスタ イベントを検出して対応し、ユーザーが望む状態を維持します。
  • ノード: クラスタ内の単一のワーカーマシンです。物理サーバーまたは仮想マシンのいずれかであり、コンテナが実際に実行される場所です。
  • Pod: Kubernetes において、Pod はデプロイ可能な最小のオブジェクトであり、実行中のプロセスの単一インスタンスを表します。1 つ以上のコンテナ、共有ストレージ、一意のネットワーク IP が含まれます。

コンテナ オーケストレーション ツールの種類

コンテナ オーケストレーション プラットフォームは、コンテナ オーケストレーションを自動化するためのツールを提供し、イベント ロギング、モニタリング、分析のための他のオープンソース テクノロジーをインストールする機能を備えています(Prometheus など)。

コンテナ オーケストレーション プラットフォームには、主に 2 つのタイプ(セルフマネージド、マネージド)があります。

  • セルフマネージド コンテナ オーケストレーター: 通常はゼロから構築するか、Kubernetes などのオープンソース プラットフォームを利用して構築します。このプラットフォームでは、カスタマイズを完全に制御できます。ただし、インストール、構成、更新、セキュリティ パッチ適用などのタスクを含む、プラットフォームの管理やメンテナンスの負担も発生します。
  • マネージド Kubernetes サービス: Google Kubernetes Engine(GKE)などのプラットフォームでは、基盤となるクラスタ インフラストラクチャの設定や運用に伴う複雑さに対処できるため、ユーザーはアプリケーションのデプロイと管理に集中できます。クラウド プロバイダがインストールと運用を管理します。その結果、ユーザーは、単にその機能を利用することを考えるだけでよく、コンテナ化されたアプリケーションの実行に集中できます。

Kubernetes 自体がコア オーケストレーションを提供しますが、さまざまなクラスタツールが連携して動作することで、セキュリティの強化、管理の簡素化、スケーリングを実現します。関連するツールを以下に示します。

  • モニタリングとロギングのソリューション: Google Cloud のオペレーション スイート(Cloud MonitoringCloud Logging)などのツールは、クラスタとそこで実行されるアプリケーションの健全性やパフォーマンスを監視するために不可欠です。
  • CI / CD ツール: Cloud Build などのシステムは Kubernetes と統合することで、コンテナ イメージのビルドやクラスタへのデプロイのプロセスを自動化できます。

コンテナ オーケストレーションの仕組み

Google Kubernetes Engine(GKE)などのコンテナ オーケストレーション ツールを使用すると、コンテナ化されたアプリケーションやマイクロサービスのデプロイや実行が簡単になります。通常、コンテナ オーケストレーターは独自の手法でさまざまな機能を提供しますが、どのツールでも、コンテナ化されたアプリケーションを自動的に調整、管理、モニタリングできます。

最終的な結果は同じ(実行中のマネージド コンテナ化アプリケーション)ですが、必要な手順と労力は Kubernetes と GKE で大きく異なります。

YouTube の画像

Kubernetes オーケストレーションの主な機能

Kubernetes は重要な機能を自動化し、手作業による多大な労力を削減します。以下に挙げる中核機能により、Kubernetes は非常に強力なオーケストレーション プラットフォームとなっています。

  • デプロイ: Kubernetes を使用すると、デプロイされたアプリケーションの望ましい状態を記述できます。オーケストレーション エンジンは、アプリケーションの新しいバージョンへのアップデートなど、変更のロールアウトを制御された方法で管理します。多くの場合、ダウンタイムはゼロです。
  • スケーリング: Kubernetes は、CPU 使用率やその他のカスタム指標に基づいて、実行中のコンテナ数を自動的にスケールアップまたはスケールダウンできます。これにより、アプリケーションが負荷を処理するために必要なリソースを確保しつつ、費用を最適化できます。
  • 自己回復: コンテナやノードに障害が発生した場合、Kubernetes オーケストレーションは障害を自動的に検出できます。その後、正常なノードでコンテナを再起動、置換、再スケジュールし、手動の介入なしでアプリケーションの可用性を維持できます。
  • サービス ディスカバリ、ロード バランシング: Kubernetes は、stable DNS 名を使用して、コンテナをインターネットやクラスタ内の他のコンテナに自動的に公開できます。また、同じサービスを提供する複数のコンテナ間でトラフィックをロード バランシングして、リクエストが効率的に分散されるようにもできます。
  • 構成管理: Kubernetes では、パスワードや API キーなどの機密情報を「シークレット」として保存および管理できます。また、アプリケーション構成データを「ConfigMap」として処理するため、コンテナ イメージを再ビルドせずに構成を更新できます。

Kubernetes コンテナ オーケストレーションのメリット

コンテナ オーケストレーションの最大の利点の一つは、オペレーションの簡素化です。タスクを自動化することで、コンテナ化されたアプリケーションを管理する労力と複雑さを最小限に抑えることができるだけでなく、他にも多くのメリットが得られます。

信頼性の高いアプリケーション開発

コンテナ オーケストレーション ツールは、迅速なアプリ開発を可能にし、再現性を高めます。デプロイの速度が向上するため、DevOps などのアジャイル開発アプローチのサポートに最適です。

スケーラビリティ

コンテナ オーケストレーションにより、ワークロード要件の変化に応じてコンテナのデプロイをスケールアップまたはスケールダウンできます。また、マネージド サービスを選択し、基盤となるインフラストラクチャをオンデマンドでスケーリングすることで、クラウドのスケーラビリティも得られます。

コスト削減

コンテナは、必要とされるリソースが仮想マシンよりも少ないため、インフラストラクチャとオーバーヘッドの費用を削減できます。また、コンテナ オーケストレーション プラットフォームは、必要な人材と時間を削減できるため、さらなる費用削減につながります。

強化されたセキュリティ

コンテナ オーケストレーションにより、プラットフォーム間でセキュリティ ポリシーを管理できるようになり、脆弱性につながる可能性がある人的エラーを減らすことができます。また、コンテナはアプリケーション プロセスを分離するため、攻撃対象領域が狭まり、全体的なセキュリティが向上します。

高可用性

コンテナ オーケストレーション ツールを使用すると、インフラストラクチャの障害の検出や修正が容易になります。コンテナに障害が発生すると、コンテナ オーケストレーション ツールが自動的に再起動や置換を行うため、可用性が維持され、アプリケーションの稼働時間も増加します。

生産性の向上

コンテナ オーケストレーションは、デベロッパーの生産性を高め、反復作業を減らし、コンテナのインストール、管理、メンテナンスの負担を軽減します。

Google Cloud でビジネスの課題を解決する

新規のお客様には、Google Cloud で使用できる無料クレジット $300 分を差し上げます。
お客様独自の課題については、Google Cloud のセールス スペシャリストまで詳しくご相談ください。

コンテナ オーケストレーションの例とユースケース

たとえば、50 個のコンテナを更新する必要があるとします。すべて手作業でアップグレードすることもできますが、チームはその作業にどれだけの時間と労力を費やす必要があるでしょうか。コンテナ オーケストレーションでは、構成ファイルを作成すれば、コンテナ オーケストレーション ツールがすべての処理を自動的に行います。これは、コンテナ オーケストレーションが運用ワークロードの削減にどのように役立つかを示す一例にすぎません。

次に、すべてが異なるオペレーティング システムと言語を使用して開発されている場合に、同じコンテナをデプロイ、スケーリング、保護するのにどれほど時間がかかるかについて考えてみましょう。これらを別の環境に移動する必要がある場合は、どうなるでしょうか。宣言型のアプローチでは、リソースの割り当て、レプリカ管理、ネットワーク構成など、コンテナをスムーズに実行するために必要となる反復的で予測可能な多数のタスクを簡素化できます。コンテナ オーケストレーションの一般的なユースケースを以下に示します。

  • デプロイの自動化: 各コンテナを手動でデプロイする代わりに、オーケストレーション ツールでプロセスを自動化し、一貫性のある再現可能なデプロイを実現します。
  • アプリケーションのスケーリング: トラフィックが急増すると、オーケストレーション ツールがコンテナの数を自動的にスケールして負荷の増加に対応し、アプリケーションの可用性を確保します。
  • アプリケーションの更新の管理: オーケストレーション ツールはローリング アップデートを容易にし、ダウンタイムなしでアプリケーションの新しいバージョンをデプロイできるようにします。
  • 高可用性の確保: コンテナが失敗した場合、オーケストレーション ツールは自動的に障害を検出し、コンテナを再起動または置換して、アプリケーションの復元力を確保します。
  • リソース使用率の最適化: オーケストレーション ツールは、利用可能なリソースにコンテナを効率的に配置し、使用率を最大化して費用を最小限に抑えます。

次のステップ

$300 分の無料クレジットと 20 以上の Always Free プロダクトを活用して、Google Cloud で構築を開始しましょう。

  • Google Cloud プロダクト
  • 100 種類を超えるプロダクトをご用意しています。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。また、すべてのお客様に 25 以上のプロダクトを無料でご利用いただけます(毎月の使用量上限があります)。
Google Cloud