ここでは、Swarm クラスターで使用されるアプリケーションの接続方法と Kubernetes クラスターで使用されるアプリケーションの接続方法を比較します。 特に、こうした方法はクラスター内のアプリケーション間の接続やクラスター外部のアプリケーションとクラスター内のアプリケーションとの接続に使用されます。

クラスター内のアプリケーションの接続

Container Service Swarm クラスター

Swarm クラスターで接続されるサービス名に関しては、links ラベルを使用してコンテナー環境変数のサービス名を設定できます。

たとえば、 アプリケーション作成に使用される YAML ファイルでは、WordPress アプリケーションの Web サービスが mysql と関連付けられます。 そのため、MySQL サービスはコンテナーの起動後に mysql サービス名によって接続されます。
links:            #---7
    - 'db:mysql'

Container Service Kubernetes クラスター

Kubernetes クラスターでは、アプリケーションはサービスクラスター IP アドレスまたはアプリケーションサービス名によって接続されます。 Kubernetes クラスター内のアプリケーション間の接続のためにサービス名を使用することを推奨します。

アプリケーション作成時、接続が要求されるサービス名を環境変数として指定することができます。

たとえば、 アプリケーション作成に使用される YAML ファイルでは、WordPress がアプリケーションの YAML ファイルで指定された環境変数を介して mysql サービスを呼び出します。
spec:     
      containers:    
      - image: wordpress:4   
        name: wordpress
        env:    
        - name: WORDPRESS_DB_HOST
          value: wordpress-mysql    #---7 Use the mysql service name to specify the MySQL that needs to be accessed.
        - name: WORDPRESS_DB_PASSWORD    

クラスター外部からのアプリケーションへの接続

Swarm クラスターアプリケーションはドメイン名によって接続されます。
  • クラシックネットワークまたは VPC のどちらかでネットワーク接続ステータスが正常であることを確認する必要があります。
  • DNS は負荷分散機能によりトラフィックを他のバックエンド IP へ転送します。
  • Swarm クラスターアプリケーションがドメイン名により接続された場合、アプリケーションサービスを Swarm クラスターから Kubernetes クラスターにダウンタイムなしで移行できます。

シンプルルーティング (デフォルトの Swarm クラスターの SLB にバインドされたドメイン名)

Kubernetes クラスターでアプリケーションを作成して、Swarm クラスターアプリケーションを Kubernetes クラスターに移行する前に、アプリケーションの可用性が利用可能であることを確認します。

移行方法

  • Kubernetes クラスターで次の手順に従いアプリケーションを作成します。
    • Kubernetes クラスターで、Swarm クラスターから移行するアプリケーションと同じタイプのアプリケーションを作成します。
    • Kubernetes クラスターで、アプリケーションに対する SLB サービスを作成します。
    • SLB サービスにより SLB インスタンスが作成されます。 この例では、SLB インスタンスの IP アドレスは "2.2.2.2" です。
    • "2.2.2.2" を、DNS のtest.com ドメイン名のバックエンド IP アドレスに追加します。
  • Kubernetes クラスターで作成したアプリケーションが利用できることを確認します。

    "2.2.2.2" によって作成したアプリケーションに接続し、Kubernetes クラスターで作成したアプリケーションが利用可能であることを確認します。

  • アプリケーションを移行します。

    DNS の test.com ドメイン名のバックエンド IP アドレスから "1.1.1.1" を削除します。

上記の手順が完了した後、Swarm クラスターでアプリケーションへ向かうすべてのトラフィックが、DNS によりすべて Kubernetes クラスターのアプリケーションに転送されます。

シンプルルーティング (アプリケーションに対して指定したドメイン名が Swarm クラスターのオンプレミス SLB にバインドされている)

Swarm クラスターで、アプリケーションドメイン名をデフォルトの SLB またはオンプレミス SLB にバインドできます。 これら 2 つの方法の違いは以下のようになります。
  • SLB はオンプレミスであり、デフォルトの SLB ではありません。
  • デフォルトでは、DNS は Alibaba Cloud DNS となります。 独自のドメイン名を使用する場合は、手動で名前解決する必要があります。

移行方法

ドメイン名が Swarm クラスターのデフォルトの SLB にバインドされたシナリオで使用された方法と同じ移行方法を利用できます。 つまり、Kubernetes クラスターでアプリケーションを作成してから、移行前にアプリケーションが利用可能であるかを確認します。

Swarm クラスターのアプリケーションは、<HostIP>:<port> を介して接続されます。

Swarm クラスターアプリケーションが <HostIP>:<port> を介して接続された場合、アプリケーションサービスの移行にダウンタイムが発生します。 そのため、アプリケーションが最小のアクセストラフィックのときにアプリケーションサービスを移行することを推奨します。

移行方法
  1. Kubernetes クラスターでアプリケーションを作成し、NodePort サービスを使用してクラスター外部のアプリケーションのアクセス方法を公開します。 詳しくは、ポートマッピングの設定をご参照ください。
  2. Swarm クラスターの <port> の値を Kubernetes クラスターに対して指定した <NodePort> の値に置き換えます。
    Swarm クラスターのアプリケーションを 1 つ 1 つ無効化および変更する必要があります。
  3. Kubernetes クラスター上のワーカーノードを Swarm クラスター上の SLB インスタンスにマウントします。
  4. Kubernetes クラスター上のアプリケーションが利用可能であることを確認した後、Swarm クラスターのノードを Kubernetes クラスター上の SLB インスタンスから削除します。 これにより、アプリケーションサービスが Swarm クラスターから Kubernetes クラスターへ移行されます。 この手順を実行する前に、Swarm クラスターのアプリケーションに向かう一部のトラフィックが Kubernetes クラスターのアプリケーションに転送されることに注意します。

SLB インスタンスによって接続されるアプリケーション

Swarm クラスターアプリケーションが SLB インスタンスにより接続される場合、アプリケーションサービスの移行にダウンタイムが発生します。 そのため、最小のサービストラフィックのときにアプリケーションを移行することを推奨します。

移行方法

Kubernetes クラスターにおいて、Swarm クラスターでの方法と同じ方法で SLB インスタンスを使用できます。 詳しくは、Server Load Balancer の設定をご参照ください。