1. トピックス
  2. コンテナ
  3. コンテナ・オーケストレーションとは

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

CopiedFailedURL をコピー
  • コンテナ・オーケストレーションは、コンテナのライフサイクル全体を通じて、コンテナのデプロイメント、管理、スケーリング、ネットワーキングを自動化するプロセスです。
  • Kubernetes などのコンテナ・オーケストレーション・プラットフォームは、スムーズな自己管理型の運用を実現します。
  • オーケストレーションは、個々のコンテナ内のマイクロサービスを連携させます。
  • Kubernetes は、コンテナ化されたアプリケーションのデプロイとスケーリングに伴う多くの手動プロセスをなくします。
  • Red Hat は、コンテナ・インフラストラクチャの保護、単純化、自動更新に不可欠なツールを作成しています。

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

コンテナ・オーケストレーションは、コンテナのライフサイクル全体を通じて、コンテナのデプロイメント、管理、スケーリング、ネットワーキングを自動化するプロセスです。多数のさまざまな環境に大規模にソフトウェアを一貫してデプロイできるようにします。

コンテナはアプリケーションとそのランタイム環境を自己完結型ユニットにパッケージ化し、クラウドネイティブ・アプリケーション開発の基盤となります。コンテナ・オーケストレーションは、数百から数千におよぶコンテナやホストをデプロイし、管理する必要のあるエンタープライズにとって特に重要です。コンテナ・オーケストレーション・ソリューションのほとんどは、広く普及しているオープンソース・プラットフォームの Kubernetes をベースとしています。 

e ブック:Red Hat OpenShift を先進的なアプリケーション・プラットフォームとして使用する

Kubernetes などのコンテナ・オーケストレーション・プラットフォームは、コンテナのライフサイクル全体を自動化し、IT チームにとって絶え間ないメンテナンス作業を、スムーズで自己管理型の運用に変革します。

コンテナ・オーケストレーションは、開発手法、コスト、セキュリティの面で利点があります。

迅速な開発

コンテナは可搬性を備え、複数の環境間で一貫して動作するように設計されており、ソフトウェア開発を迅速化する機会をもたらします。コンテナ・オーケストレーションにより、継続的インテグレーション/継続的デプロイメント (CI/CD) パイプラインの構築が可能になり、自動化によってソフトウェア開発ライフサイクル全体を通じてソフトウェアの提供が向上します。コンテナ・オーケストレーションは、アイデアを開発からデプロイメントに持ち込むプロセスを加速することを目的とした DevOps アプローチにも関連しています。

コスト削減

コンテナ・オーケストレーションは、ニーズに基づいてコンテナを自動的にスケーリングし、アプリケーションに必要な容量を提供しながら、リソースを節約し、コストを削減します。コンテナ・オーケストレーション・プラットフォームは、マルチクラウド環境やハイブリッド環境を効率的に使用するために必要な柔軟性を提供できます。

セキュリティ

コンテナ内でソフトウェアを開発すると、実行中のアプリケーションを更新したりパッチを適用したりする必要がなく、ビルド段階でセキュリティの問題を修正できます。これにより、コンテナの挙動がより予測しやすくなり、異常な動作が検知できるようになります。また、コンテナ・オーケストレーションを使用することで、セキュリティとガバナンスのポリシーを適用し、Pod または Pod のグループごとにポリシーをセグメント化できます。コンテナ・オーケストレーション・プラットフォームは、ユーザーやサービスアカウントに特定の権限を割り当てるロールベースのアクセス制御 (RBAC) もサポートします。

Kubernetes ネイティブセキュリティの利点

コンテナ・オーケストレーションは、先進的なクラウドネイティブ・アプリケーションの運用における多大な要求を管理します。かつて、ソフトウェア・アプリケーションは単一の巨大なブロック、すなわち「モノリス」でした。今ではアプリケーションは、マイクロサービスと呼ばれる数十または数百の小さな独立したサービスに分割され、それぞれが独自のコンテナで実行されています。オーケストレーションはこれらの動的な要素を調整して、それらが通信し、独立してスケーリングし、異なる環境間で信頼性を持って実行できるようにします。

コンテナ・オーケストレーションを使用すると、次のようなタスクを自動化および管理できます。

  • プロビジョニングとデプロイメント:オーケストレーターが構成のブループリントを読み取り、必要なコンテナイメージをダウンロードして、インフラストラクチャ全体で自動的に初期化します。
  • 構成とスケジューリング:クラスタのサーバーを評価して各コンテナに最適なホストを選択し、起動時に、必要な環境変数とストレージ設定を注入します。
  • リソースの割り当て:オーケストレーターは、定義済みの CPU およびメモリー制限を使用してコンテナをサーバー上にインテリジェントにパッケージ化し、アプリケーションが互いにリソースを枯渇させずに、ハードウェアの効率を最大化します。
  • コンテナの可用性:クラスタを継続的に監視し、クラッシュしたコンテナや障害が発生したサーバーがあれば、即座に置き換えます。
  • スケーリングとワークロードバランシング:トラフィックが急増して定義されたリソースのしきい値に達した場合は、追加のコンテナレプリカを自動的にスピンアップし、需要が減少した場合はコンテナを削除してコストを削減します。
  • ロードバランシングとトラフィックルーティング:コンテナ IP アドレスの変化するプール全体にネットワークトラフィックを均等に分散させる、永続的な内部ルーティング・エンドポイントを提供します。
  • コンテナの状態の監視:自動化されたプローブが、コンテナが正常に実行されているかどうかを定期的にチェックし、フリーズしたアプリケーションを即座に再起動し、起動中のアプリケーションからのトラフィックを保持します。
  • コンテナごとのアプリケーションの構成:ランタイム時に一意の構成と秘密鍵をコンテナ環境に直接注入することで、アプリケーションコードと設定を分離します。
  • やり取りの安全性の維持:相互に通信できるコンテナを明示的に指示する、厳格な分離されたネットワーク・ファイアウォール・ポリシーを適用して、セキュリティリスクを最小限に抑えます。

コンテナ・オーケストレーション・ツールは、コンテナとマイクロサービス・アーキテクチャを大規模に管理するためのフレームワークを提供します。コンテナのライフサイクル管理に使用できるコンテナ・オーケストレーション・ツールは数多くあります。一般的なものとしては、Kubernetes、Docker Swarm、Apache Mesos などがあります。

Kubernetes はオープンソースのコンテナ・オーケストレーション・ツールであり、元々、Google のエンジニアによって開発および設計されました。 2015 年に Google は、新しく設立された Cloud Native Computing Foundation に Kubernetes プロジェクトを寄贈しました。

コンテナ・オーケストレーションをサポートする Kubernetes

Kubernetes オーケストレーションによって、複数のコンテナにまたがるアプリケーションサービスを構築し、コンテナをクラスタにスケジュールして、コンテナのスケーリングを行い、コンテナの正常性を継続的に管理できるようになります。

Kubernetes は、コンテナ化されたアプリケーションのデプロイとスケーリングに伴う多くの手動プロセスをなくします。物理マシンでも仮想マシンでも、Linux コンテナを実行しているホストをまとめてクラスタ化することができますが、Kubernetes はこれらのクラスタを容易かつ効率的に管理するプラットフォームを提供します。 

さらに、信頼性の高いコンテナベースのインフラストラクチャをプロダクション環境に完全に実装することができます。クラスタには、パブリック、プライベート、ハイブリッドクラウドにまたがるホストが含まれます。この理由で Kubernetes は、迅速なスケーリングが要求されるクラウドネイティブ・アプリケーションをホストするプラットフォームとして最適です。

Kubernetes ではアプリケーションを設計し直すことなく移行できることから、ワークロードの可搬性と負荷分散もサポートされます。 

Kubernetes の主なコンポーネント:

  • クラスタ:コントロールプレーンと 1 つ以上のコンピュートマシン (ノード)。
  • コントロールプレーン:Kubernetes ノードを制御する一連のプロセス。すべてのタスクの割り当てはここで発生します。
  • Kubelet:ノード上で実行されるサービスで、コンテナマニフェストを読み取り、定義されたコンテナが確実に開始し実行されるようにします。
  • Pod:1 つのノードにデプロイされた、1 つ以上のコンテナからなるグループ。Pod に入っているすべてのコンテナは、同じ IP アドレス、IPC、ホスト名、その他のリソースを共有します。

コンテナ・オーケストレーション・ツールは、常に実際の状態をユーザーの指示に一致させる継続的な調整ループ (コントロールループとも呼ばれる) を実行することで機能します。

ツールに段階的なコマンド (命令型の手法) を提供するのではなく、最終的にどうしたいのかを記述したブループリントをツールに提供します (宣言型の手法)。オーケストレーターの唯一の仕事は、インフラストラクチャの実際の状態が目標とするブループリントと、常時完全に一致するようにすることです。

Kubernetes などのコンテナ・オーケストレーション・ツールを使用する場合は、YAML あるいは JSON ファイルを使用してアプリケーションの設定を記述します。設定ファイルは、構成管理ツールに、コンテナイメージの場所、ネットワークの確立方法、ログの保存場所を指示します。

新しいコンテナをデプロイすると、コンテナ管理ツールは、定義された要件や制限を考慮して、クラスタへのデプロイメントを自動的にスケジュールし、適切なホストを見つけます。次に、オーケストレーション・ツールが、設定ファイルで決定された仕様に基づいてコンテナのライフサイクルを管理します。

Kubernetes パターンを使用して、コンテナベースのアプリケーションとサービスの構成、ライフサイクル、規模を管理できます。これらの反復可能なパターンは、Kubernetes 開発者が完全なシステムを構築するために必要とするツールです。 

コンテナ・オーケストレーションは、オンプレミスサーバー、パブリッククラウド環境、プライベートクラウド環境など、コンテナを実行する任意の環境で使用できます。

Kubernetes デプロイメントとは

Red Hat は、オープンソース・コンテナ・テクノロジーのリーダー企業であるとともに積極的に開発も行っており、コンテナ・インフラストラクチャの保護、単純化、自動更新に不可欠なツールを生み出しています。

Red Hat® OpenShift® を活用することで、開発者はコンテナ化された新しいアプリケーションを作成し、ホストし、クラウドでデプロイできるようになります。さらに、そのスケーラビリティ、制御性、オーケストレーションにより、優れたアイデアを迅速かつ簡単にビジネスにつなげることができます。Kubernetes ワークロードをマネージド・クラウドサービスにデプロイまたは移行することを検討しているなら、Amazon Web Services (AWS)、Microsoft Azure、Google Cloud、IBM Cloud、およびその他のプロバイダーで、OpenShift をクラウドネイティブ・サービスとして使用することもできます。

OpenShift を基盤として構築された Red Hat Advanced Cluster Management と Red Hat Ansible® Automation Platform を併用することで、パブリッククラウド、オンプレミス、エッジ環境など、複数のリージョンにまたがる複数の Kubernetes クラスタを効率的にデプロイし、管理できます。

すべての Red Hat 製品のトライアル

Red Hat の無料トライアルは、Red Hat 製品をハンズオンでお試しいただける無料体験版です。認定の取得に向けた準備をしたり、製品が組織に適しているかどうかを評価したりするのに役立ちます。

関連情報

Kubernetes アーキテクチャの概要

Kubernetes のコンポーネントと、それらがどのように相互作用するかについて簡単に説明します。

Kubernetes Operator とは

Kubernetes Operator は、Kubernetes API の機能を拡張することによって、アプリケーションをパッケージ化、デプロイ、管理する手段です。

Kubernetes とは

Kubernetes はコンテナ・オーケストレーション・プラットフォームであり、コンテナ化されたアプリケーションのデプロイとスケーリングに伴う多くの手動プロセスをなくします。

コンテナリソース

関連記事