25年2021月XNUMX日

コンテナオーケストレーションとは何ですか?

コンテナオーケストレーションとは何ですか?

によるコンセプトの革命以来 デッカー 2013年には、コンテナがアプリケーション開発の主力になりました。 それらの速度とリソース効率により、開発者はソフトウェアがどこにデプロイされていても、ソフトウェアをより高速かつ確実に実行できるため、DevOps環境に最適です。 コンテナ化により、クラウドやデータセンター間で複数のアプリケーションを移動および拡張できます。 

ただし、このスケーラビリティは、最終的には運用上の課題になる可能性があります。 企業が複数のアプリケーションを実行する複数のコンテナを効率的に実行する必要があるシナリオでは、コンテナのオーケストレーションは単なるオプションではなく、必要なものになります。 

Contents [show]

コンテナオーケストレーションとは何ですか?

コンテナオーケストレーションは、コンテナ化されたアプリケーションを管理、スケーリング、および保守する自動化されたプロセスです。 コンテナ アプリケーションをどこでも実行できるように、アプリケーションコード、ライブラリ、および依存関係を含むソフトウェアの実行可能ユニットです。 コンテナオーケストレーションツールは、ソフトウェアチームがコンテナのライフサイクルで遭遇するいくつかのタスクの管理を自動化します。これには次のものが含まれます。

  • 展開
  • スケーリングと負荷分散/トラフィックルーティング
  • ネットワーキング
  • インサイト
  • プロビジョニング
  • 構成とスケジューリング
  • リソースの割り当て
  • 物理ホストへの移動
  • サービスの発見
  • ヘルスモニタリング 
  • クラスター管理

コンテナオーケストレーションはどのように機能しますか?

選択したツールに応じて、コンテナオーケストレーションに適用できるさまざまな方法があります。 コンテナオーケストレーションツールは通常、アプリケーションの構成を説明するYAMLまたはJSONファイルと通信します。 構成ファイルは、コンテナーイメージを取得する方法と場所、コンテナー間のネットワークの作成、ログデータの保存、およびストレージボリュームのマウントに関するコンテナーオーケストレーションツールをガイドします。 

コンテナーオーケストレーションツールは、クラスターへのコンテナーの展開をスケジュールし、コンテナーに最適なホストを自動的に決定します。 ホストが決定された後、コンテナーオーケストレーションツールは、コンテナーの定義ファイルで提供される事前定義された仕様を使用して、コンテナーのライフサイクルを管理します。 

コンテナオーケストレーションツールは、コンテナを実行するすべての環境で使用できます。 いくつかのプラットフォームはコンテナオーケストレーションのサポートを提供し、それらには Kubernetes, DockerSwarm, Amazon Elastic Container Service(ECS), Apache Mesos

コンテナオーケストレーションはKubernetesとどのように連携しますか?

Kubernetesは、業界標準と見なされているオープンソースのコンテナオーケストレーションプラットフォームです。 Googleが支援するソリューションにより、開発者とオペレーターは、Platform-as-a-Service(PaaS)またはInfrastructure-as-a-Service(IaaS)のいずれかとしてクラウドサービスを提供できます。 これは非常に宣言的なソリューションであり、開発者はYAMLファイルを介してコンテナー環境の望ましい状態を宣言できます。 その後、Kubernetesはその望ましい状態を確立して維持します。

以下は、Kubernetesの主なアーキテクチャコンポーネントです。

Nodes

ノードはKubernetesのワーカーマシンです。 クラスターに応じて、仮想または物理の場合があります。 ノードは、マスターノードから割り当てられたタスクを受信して​​実行します。 また、ポッドを実行するために必要なサービスも含まれています。 各ノードは、 キューブレット, コンテナランタイム, kube-proxy.

マスターノード

このノードはすべてのワーカーノードを制御し、割り当てられたすべてのタスクの起点です。 これは、コンテナーのライフサイクルを定義、デプロイ、および管理するためのAPIとインターフェースを公開するオーケストレーションレイヤーであるコントロールペインを介して行われます。

クラスタ

クラスターは、マスターノードと複数のワーカーノードを表します。 クラスターは、これらのマシンをXNUMXつのユニットに結合し、コンテナー化されたアプリケーションをデプロイします。 その後、ワークロードはさまざまなノードに分散され、ノードが追加または削除されるたびに調整が行われます。

ポッド

ポッド Kubernetesで作成および管理できるコンピューティングの最小のデプロイ可能なユニットです。 各ポッドは、一緒にパッケージ化されてノードにデプロイされたコンテナのコレクションを表します。

デプロイメント

A 展開 ポッドの宣言型更新を提供し、 レプリカセット。 これにより、ユーザーはポッドのレプリカをいくつ同時に実行するかを指定できます。 

コンテナオーケストレーションはDockerとどのように連携しますか?

オープンソースプラットフォームでもあるDockerは、DockerSwarmと呼ばれる完全に統合されたコンテナオーケストレーションツールを提供します。 アプリケーションをコンテナーとしてパッケージ化して実行し、他のホストからコンテナーイメージを見つけ、コンテナーをデプロイできます。 Kubernetesよりもシンプルで拡張性が低いですが、Dockerは、Kubernetesのより広範な機能にアクセスしたい組織向けにKubernetesと統合するオプションを提供します。

DockerSwarmの主なアーキテクチャコンポーネントは次のとおりです。

スウォーム

群れは、で実行されるDockerホストのクラスターです。 スウォームモード 実行しながらメンバーシップと委任を管理します 群れサービス.    

ノード

ノードは、群れに含まれるDockerエンジンインスタンスです。 これは、マネージャーノードまたはワーカーノードのいずれかです。 マネージャーノードは、と呼ばれる作業単位をディスパッチします。 タスク ワーカーノードに。 また、クラスターの状態やサービスのスケジューリングの維持など、すべてのオーケストレーションおよびコンテナー管理タスクも担当します。 ワーカーノードはタスクを受信して​​実行します。

サービスとタスク

A サービス ノードで実行する必要のあるタスク定義です。 使用するコンテナイメージと、実行中のコンテナ内で実行するコマンドを定義します。

タスクは、コンテナ内で実行するコマンドと一緒にコンテナを運びます。 タスクがノードに割り当てられると、別のノードに移動することはできません。

コンテナオーケストレーションは他のプラットフォームとどのように連携しますか?

コンテナーオーケストレーションに関しては、DockerとKubernetesが先頭に立っていますが、他のプラットフォームはオープンソースソフトウェアを利用して競争を提供しています。

Red Hat OpenShift は、マネージドコンテナオーケストレーションを必要とする企業にKubernetes機能を提供するオープンソースのエンタープライズグレードのハイブリッドプラットフォームです。 そのフレームワークは、ユーザーがコンテナーのライフサイクルを自動化できるようにするLinuxOS上に構築されています。 

Google Kubernetes エンジン はKubernetesを利用しており、ユーザーはGoogle CloudでDockerコンテナを簡単にデプロイ、管理、スケーリングできます。

ApacheMesosやAmazonECSなどの他のプラットフォームは、ユーザーがセキュリティと高いスケーラビリティを確保しながらコンテナを実行できるようにする独自のコンテナツールを開発しました。

コンテナオーケストレーションに最適なツールは何ですか?

組織に最適なコンテナオーケストレーションツールを選択するときは、いくつかの要因を考慮する必要があります。 これらの要因は、ツールによって異なります。 たとえば、Mesosのようなツールでは、Swarmのような単純なツールよりも複雑であるため、ソフトウェアチームの技術的経験を考慮する必要があります。 組織は、展開するコンテナーの数、アプリケーション開発の速度、スケーリング要件も考慮する必要があります。 

適切なツールと適切なリソース管理があれば、コンテナのオーケストレーションは、生産性とスケーラビリティの向上を目指している組織にとって価値のあるアプローチになります。