によるコンセプトの革命以来 デッカー 2013年には、コンテナがアプリケーション開発の主力になりました。 それらの速度とリソース効率により、開発者はソフトウェアがどこにデプロイされていても、ソフトウェアをより高速かつ確実に実行できるため、DevOps環境に最適です。 コンテナ化により、クラウドやデータセンター間で複数のアプリケーションを移動および拡張できます。
ただし、このスケーラビリティは、最終的には運用上の課題になる可能性があります。 企業が複数のアプリケーションを実行する複数のコンテナを効率的に実行する必要があるシナリオでは、コンテナのオーケストレーションは単なるオプションではなく、必要なものになります。
内容
- コンテナオーケストレーションとは何ですか?
- コンテナオーケストレーションはどのように機能しますか?
- コンテナオーケストレーションはKubernetesとどのように連携しますか?
- コンテナオーケストレーションはDockerとどのように連携しますか?
- コンテナオーケストレーションは他のプラットフォームとどのように連携しますか?
- コンテナオーケストレーションに最適なツールは何ですか?
コンテナオーケストレーションとは何ですか?
コンテナー オーケストレーションは、コンテナー化されたアプリケーションを管理、スケーリング、および維持する自動化されたプロセスです。 コンテナーは、アプリケーション コード、ライブラリ、および依存関係を含むソフトウェアの実行可能な単位であるため、アプリケーションをどこでも実行できます。 コンテナ オーケストレーション ツールは、ソフトウェア チームがコンテナのライフサイクルで遭遇する次のようないくつかのタスクの管理を自動化します。
- 展開
- スケーリングと負荷分散/トラフィックルーティング
- ネットワーキング
- 分析
- プロビジョニング
- 構成とスケジューリング
- リソースの割り当て
- 物理ホストへの移動
- サービスの発見
- ヘルスモニタリング
- クラスター管理
コンテナオーケストレーションはどのように機能しますか?
選択したツールに応じて、コンテナオーケストレーションに適用できるさまざまな方法があります。 コンテナオーケストレーションツールは通常、アプリケーションの構成を説明するYAMLまたはJSONファイルと通信します。 構成ファイルは、コンテナーイメージを取得する方法と場所、コンテナー間のネットワークの作成、ログデータの保存、およびストレージボリュームのマウントに関するコンテナーオーケストレーションツールをガイドします。
コンテナーオーケストレーションツールは、クラスターへのコンテナーの展開をスケジュールし、コンテナーに最適なホストを自動的に決定します。 ホストが決定された後、コンテナーオーケストレーションツールは、コンテナーの定義ファイルで提供される事前定義された仕様を使用して、コンテナーのライフサイクルを管理します。
コンテナオーケストレーションツールは、コンテナを実行するすべての環境で使用できます。 いくつかのプラットフォームはコンテナオーケストレーションのサポートを提供し、それらには Kubernetes, DockerSwarm, Amazon Elastic Container Service(ECS), Apache Mesos.
コンテナオーケストレーションはKubernetesとどのように連携しますか?
Kubernetes は、業界標準と見なされているオープンソースのコンテナー オーケストレーション プラットフォームです。 Google が支援するソリューションにより、開発者と運用者は次のいずれかの方法でクラウド サービスを提供できます。 サービスとしてのプラットフォーム (PaaS)、またはサービスとしてのインフラストラクチャ (IaaS))。 これは非常に宣言的なソリューションであり、開発者は YAML ファイルを通じてコンテナー環境の望ましい状態を宣言できます。 その後、Kubernetes はその望ましい状態を確立して維持します。
以下は、Kubernetesの主なアーキテクチャコンポーネントです。
Nodes
ノードはKubernetesのワーカーマシンです。 クラスターに応じて、仮想または物理の場合があります。 ノードは、マスターノードから割り当てられたタスクを受信して実行します。 また、ポッドを実行するために必要なサービスも含まれています。 各ノードは、 キューブレット, コンテナランタイム, kube-proxy.
マスターノード
このノードはすべてのワーカーノードを制御し、割り当てられたすべてのタスクの起点です。 これは、コンテナーのライフサイクルを定義、デプロイ、および管理するためのAPIとインターフェースを公開するオーケストレーションレイヤーであるコントロールペインを介して行われます。
クラスタ
クラスターは、マスターノードと複数のワーカーノードを表します。 クラスターは、これらのマシンをXNUMXつのユニットに結合し、コンテナー化されたアプリケーションをデプロイします。 その後、ワークロードはさまざまなノードに分散され、ノードが追加または削除されるたびに調整が行われます。
ポッド
ポッド Kubernetesで作成および管理できるコンピューティングの最小のデプロイ可能なユニットです。 各ポッドは、一緒にパッケージ化されてノードにデプロイされたコンテナのコレクションを表します。
デプロイメント
A 展開 ポッドの宣言型更新を提供し、 レプリカセット。 これにより、ユーザーはポッドのレプリカをいくつ同時に実行するかを指定できます。
コンテナオーケストレーションはDockerとどのように連携しますか?
同じくオープンソース プラットフォームである Docker は、Docker Swarm として知られる完全に統合されたコンテナー オーケストレーション ツールを提供します。 アプリケーションをコンテナーとしてパッケージ化して実行し、他のホストからコンテナー イメージを見つけて、コンテナーをデプロイできます。 Kubernetes よりもシンプルで拡張性に欠けますが、Docker は、Kubernetes のより広範な機能にアクセスしたい組織のために、Kubernetes と統合するオプションを提供します。
DockerSwarmの主なアーキテクチャコンポーネントは次のとおりです。
スウォーム
群れは、で実行されるDockerホストのクラスターです。 スウォームモード 実行しながらメンバーシップと委任を管理します 群れサービス.
Node
ノードは、群れに含まれるDockerエンジンインスタンスです。 これは、マネージャーノードまたはワーカーノードのいずれかです。 マネージャーノードは、と呼ばれる作業単位をディスパッチします。 タスク ワーカーノードに。 また、クラスターの状態やサービスのスケジューリングの維持など、すべてのオーケストレーションおよびコンテナー管理タスクも担当します。 ワーカーノードはタスクを受信して実行します。
サービスとタスク
A サービス ノードで実行する必要のあるタスク定義です。 使用するコンテナイメージと、実行中のコンテナ内で実行するコマンドを定義します。
タスクは、コンテナ内で実行するコマンドと一緒にコンテナを運びます。 タスクがノードに割り当てられると、別のノードに移動することはできません。
コンテナオーケストレーションは他のプラットフォームとどのように連携しますか?
コンテナーオーケストレーションに関しては、DockerとKubernetesが先頭に立っていますが、他のプラットフォームはオープンソースソフトウェアを利用して競争を提供しています。
Red Hat OpenShift は、マネージドコンテナオーケストレーションを必要とする企業にKubernetes機能を提供するオープンソースのエンタープライズグレードのハイブリッドプラットフォームです。 そのフレームワークは、ユーザーがコンテナーのライフサイクルを自動化できるようにするLinuxOS上に構築されています。
Google Kubernetes エンジン はKubernetesを利用しており、ユーザーはGoogle CloudでDockerコンテナを簡単にデプロイ、管理、スケーリングできます。
ApacheMesosやAmazonECSなどの他のプラットフォームは、ユーザーがセキュリティと高いスケーラビリティを確保しながらコンテナを実行できるようにする独自のコンテナツールを開発しました。
コンテナ オーケストレーションの例
コンテナ オーケストレーションは組織に多くの利点をもたらしますが、実際の作業状況では、これらの利点はどのように見えるのでしょうか? 以下に、一般的なオーケストレーションの例をいくつか示します。
まず、ホリデー シーズンに大量のトラフィックが発生する大規模な e コマース プラットフォームについて考えてみましょう。 以前は、そのプラットフォームは、増加した休日の負荷を処理するために追加のサーバーを手動でプロビジョニングする必要がありました。これは、時間がかかり、エラーが発生しやすいプロセスです。 コンテナ オーケストレーションを使用すると、トラフィックが増加すると追加のコンテナを自動的にプロビジョニングし、トラフィックが減少するとスケールダウンする自動スケーリング機能をプラットフォームで使用できます。 そうすれば、ホリデーラッシュのトラフィックの増加は、誰もがアイテムを購入、返品、交換すると、XNUMX 月に落ち着く可能性があります。
次に、Web サイト、モバイル アプリ、およびバックエンド処理システムをすべて異なる環境の異なるサーバーで実行している企業を考えてみましょう。 以前は、これらのさまざまなアプリケーションと環境を管理するには、多くの手作業と調整が必要でした。 コンテナ オーケストレーションにより、同社は単一のプラットフォームを使用してすべてのコンテナと環境を管理できるため、さまざまな環境でアプリケーションを簡単に展開、管理、スケーリングできます。 これにより、同社は新しいテクノロジーをより簡単に採用し、開発プロセスを合理化することができます。
コンテナオーケストレーションに最適なツールは何ですか?
最高のものを選ぶとき コンテナオーケストレーションツール 組織の場合、いくつかの要因を考慮する必要があります。 これらの要因は、ツールによって異なります。 たとえば、Mesosのようなツールでは、Swarmのような単純なツールよりも複雑であるため、ソフトウェアチームの技術的経験を考慮する必要があります。 組織は、展開するコンテナーの数、アプリケーション開発の速度、スケーリング要件も考慮する必要があります。
適切なツールと適切なリソース管理があれば、コンテナのオーケストレーションは、生産性とスケーラビリティの向上を目指している組織にとって価値のあるアプローチになります。