ここでは、Swarm クラスターと Kubernetes クラスターの両方で使われる基本的な用語を比較します。

アプリケーション

Container Service Swarm クラスター

Container Service Swarm クラスターでは、アプリケーションはプロジェクトとして表示されます。 それぞれのアプリケーションに複数のサービスを含むことができます。 それぞれのサービスは特定の機能を提供する 1 つのインスタンスです。 サービスは水平拡張できます。

Container Service Kubernetes クラスター

Container Service Kubernetes クラスターでは、アプリケーションはデプロイとしても知られ、機能の提供に用いられます。 デプロイはポッドとコンテナーを含みます。 ポッドは最小のリソース単位で Kubernetes でスケジューリングされ、それぞれのポッドには複数のコンテナーを含むことができます。 ポッドは、ポッドが属するアプリケーションのインスタンスとして表示されます。 複数のポッドを異なるノードにスケジュールすることができます。 これは、ポッドが水平拡張できることを意味しています。
上の図は、それぞれのポッドが複数のコンテナーを備えており、ポッドの拡張機能を示しています。 しかし、それぞれのポッドに対して 1 つのコンテナーのみを設定することを推奨します。

サービス

Container Service Swarm クラスター

Container Service Swarm クラスターの各サービスは特定の機能を提供するインスタンスです。 Swarm クラスターでアプリケーションを作成する場合、サービスの接続方法はクラスター外部に直接公開されます。

Container Service Kubernetes クラスター

Container Service Kubernetes クラスターでのサービスという用語は抽象的な概念です。 サービスは、クラスター外部のサービスのアプリケーション (またはデプロイ) の接続方法を公開します。

アプリケーションの接続

Container Service Swarm クラスター

Container Service Swarm クラスターでアプリケーションをデプロイした場合、アプリケーションを直接公開できる3 つのタイプの接続方法から1つを選択できます。 3 つのタイプのアプリケーションの接続方法は次のとおりです。
  • <HostIP>:<port>
  • シンプルルーティング
  • SLB (Server Load Balancer)

Container Service Kubernetes クラスター

Container Service Kubernetes クラスターでアプリケーションを作成した後、アプリケーションの接続方法を公開するサービスを作成する必要があります。 それにより、アプリケーションは接続可能になります。 Container Service Kubernetes クラスター内のアプリケーションは、それらのサービス名を利用して相互に接続できます。 サービス名はクラスター内の接続にのみ適用できます。 クラスター外部からアプリケーションに接続するには、アプリケーションを公開するために NodePort タイプのサービスまたはロードバランサータイプのサービスを作成する必要があります。
  • ClusterIP (サービス名と同じ機能を持ちます。 つまり、クラスター内での接続に適用できます)
  • NodePort (Swarm クラスターの <HostIP>:<port> として表示されます)
  • ロードバランサー (Swarm クラスターの SLB として表示されます)
  • Ingress の作成により実装されたドメイン名 (Swarm クラスターのシンプルルーティングとして表示されます)