概要
市場の状況によれば、Kubernetes (別名「K8s」) は、Docker Swarm や Mesos などの競合他社を上回り、コンテナ オーケストレーションの王者になりました。しかし、K8s (2014) と同時に、別のオーケストレーション プロジェクトである HashiCorp の Nomad (2015) がありました。
Google によって開発され、継続的なコミュニティ サポートを受けている Kubernetes は、実際にはコンテナ オーケストレーションには理想的ですが、すべてのユースケースに対応するソリューションではありません。多くの開発者は、実装の潜在的な障壁として、新機能の複雑さと構成ミスによるセキュリティ上の懸念を挙げています。これらの問題は克服できますが、ほとんどのユーザーは、Kubernetes に固有の複雑さにより、プラットフォームのオンボーディングとセキュリティがかなり混乱することを認めています。さらに多くのコンテナ オーケストレーション オプションを検討したい場合は、Nomad をチェックしてみる価値のあるオプションになる可能性があります。
ノマドとは一体何なのでしょうか?
Nomad はHashicorpのオーケストレーション ツールで、ユーザーは次のようなさまざまな種類のアプリケーションを展開および管理できます。
-
サポートコンテナ
-
従来のアプリケーション スタックのサポート。
-
マイクロサービス アプリケーションのサポート。
-
バッチアプリケーションをサポートします。
Nomadを上から見るとこんな感じ
Nomad を便利にしているのは、豊富な API セットです。
-
導入、アプリケーションのスケーリング、アップグレードの自動化にご協力ください。
-
開発者が展開を直接管理できるようにします。
-
障害を自動的に管理します。
-
ノード管理などの複雑な詳細を非表示にし、ユーザーがアプリケーションを起動して実行するために必要なものだけを選択できるようにします。
前述したように、Docker がサポートされていますが、必要なオペレーティング システムであればどのタイプのアプリケーションでも使用できます (Linux、Windows、BSD、OSX はすべてサポートされています)。クラスターを作成して、さまざまなデータセンターやさまざまなリージョンからノードを追加できます。
最後に、Nomad は、ユーザーが標準の拡張概念の制限を超えることができる拡張性の高いツールです。
なぜノマドなのか?
Nomad と Kubernetes の主な違いは、Nomad の方がより汎用的で軽量であることです。Nomad は、単純なタスク スケジューラとして機能することも、プロジェクトの仕様に応じてより重いオーケストレーションの役割を担うこともできます。Nomad は、HashiCorp が作成した一連の補完ツールの一部です。
-
Terraform、迅速なインフラストラクチャ開発用
-
Consul、サービス提供ネットワークを自動化する
-
Vault、Hashicorp の機密管理ツール
比較
Kubernetes は、疎結合されたさまざまなコンポーネントの動的なエコシステムに依存する、エンドツーエンドのコンテナ オーケストレーション プラットフォームです。
Nomad はアーキテクチャ的にははるかに単純ですが、強力なコーディネーターと同じ機能を提供します。これら 2 つのプラットフォームには類似点、類似点、相違点があります。詳細については以下をお読みください。
同じ点
Kubernetes と Nomad はどちらもコンテナ オーケストレーション用に構築されたオープン ソース ツールで、同様のユースケースをサポートします。したがって、両方には多くの共通の特徴があります。
相違点
どちらのプラットフォームもコンテナ オーケストレーションに適していますが、Nomad と Kubernetes には基本的な違いがいくつかあります。
長所と短所
どれを選びますか?
結論は
Kubernetes は、コンテナベースのアプリケーションを実行するために必要なすべての機能を提供する多くの組み込みサービスを備えたスタンドアロン オーケストレーション ツールです。大規模で応答性の高いコミュニティ サポートがあり、豊富なツールキットと多数のすぐに使用できるソリューションを提供します。ただし、手動セットアップは難しく、コンテナ化されたアプリケーション向けにのみ設計されています。
対照的に、Nomad はクラスター管理のみに焦点を当てているため、インストールと運用が簡単です。また、さまざまなタイプのワークロードもサポートしますが、提供される機能は限られており、Kubernetes がデフォルトで実装するタスクを解決するにはサードパーティ ツールのインストールが必要です。
アプリケーションに追加機能が必要で、ツールの学習に時間を費やしても構わない場合は、Kubernetes の方が良い選択肢になる可能性があります。ただし、追加機能のない、よりシンプルなワークフローを希望する場合は、Nomad が最適なアプリケーションかもしれません。最終的に、どのツールを選択するかは、ユースケースと、そのツールを実稼働サイクルに実装する能力によって決まります。すべてに適合する 1 つのツールは存在しないため、決定を下す際には上記の要素を必ず考慮してください。
参考文献
[1] 開発者: https://containerjournal.com/topics/container-management/ux-layers-for-kubernetes-the-next-cloud-native-abstraction/
[2] セキュリティの構成ミス: https://containerjournal.com/features/insecure-defaults-remain-a-threat-for-kubernetes/
[3] セキュリティ: https://containerjournal.com/topics/container-security/what-will-it-take-to-shift-kubernetes-security-left/