Alibaba Cloud Container Compute Service (ACS) は、Kubernetes ネットワークモデル、Virtual Private Cloud (VPC)、および Server Load Balancer (SLB) を統合することで、安定した高性能なコンテナネットワークを提供します。このトピックでは、コンテナネットワークインターフェース (CNI)、Service、Ingress、DNS サービスディスカバリなど、ACS クラスタネットワーキングと Alibaba Cloud ネットワークインフラストラクチャで使用される重要な用語について説明します。これらの用語を理解することで、アプリケーションデプロイメントモデルとネットワークアクセス方法を最適化できます。
ACS のネットワーキング機能
カテゴリ | ネットワーキング機能 | サポート | 参照 |
ネットワーク構成管理 | デュアルスタック (IPv4 と IPv6) | いいえ | なし |
個々のポッドのネットワーク構成を設定する | はい | ||
ポッドのセキュリティグループを設定する | はい | ||
南北トラフィック管理 | インターネットにアクセスするようにポッドを設定する | はい | |
ポッドをインターネットに公開する | はい | ||
LoadBalancer サービスを使用する | はい | ||
Ingress を使用する | はい |
Service
クラウドネイティブアプリケーションには、アジャイルなイテレーションと迅速なスケーリングが必要です。コンテナと関連するネットワークリソースはライフサイクルが短いです。ワークロードの迅速なスケーリングを実現するには、自動ロードバランシングを設定し、静的 IP アドレスを使用する必要があります。ACS では、ポッドのイングレスとロードバランサーとして Service を作成できます。Service のしくみ
Service を作成すると、ACS は Service に安定した IP アドレスを割り当てます。
selector
パラメータを設定してポッドを選択し、Service の IP アドレスとポートをロードバランシングのためにポッドの IP アドレスとポートにマッピングできます。
ACS は、さまざまなソースとクライアントからのリクエストを処理するために、次のタイプの Service を提供します。
ClusterIP
ClusterIP Service は、クラスタ内でのアクセスを処理するために使用されます。アプリケーションがクラスタ内でサービスを提供するようにするには、ClusterIP Service を作成します。
説明デフォルトでは、Service を作成するときに ClusterIP が選択されます。
LoadBalancer
LoadBalancer Service は、アプリケーションをインターネットに公開するために使用されます。LoadBalancer Service は、SLB インスタンスを使用してアプリケーションを公開します。そのため、LoadBalancer Service は NodePort Service よりも高い可用性とパフォーマンスを提供します。LoadBalancer Service を使用してアプリケーションを公開する方法の詳細については、既存の SLB インスタンスを使用してアプリケーションを公開する および 自動的に作成された SLB インスタンスを使用してアプリケーションを公開する を参照してください。
Headless Service
Headless Service は、Service 構成ファイルで
clusterIP
フィールドをNone
に設定することで定義されます。Headless Service には固定の仮想 IP アドレス (VIP) がありません。クライアントが Service のドメインにアクセスすると、DNS はすべてのバックエンドポッドの IP アドレスを返します。クライアントは DNS ロードバランシングを使用して、ポッド間の負荷を分散する必要があります。
ExternalName
ExternalName Service は、外部ドメイン名をクラスタ内の Service にマッピングするために使用されます。たとえば、外部データベースのドメイン名をクラスタ内の Service 名にマッピングできます。これにより、Service 名を使用してクラスタ内からデータベースにアクセスできます。
詳細については、LoadBalancer Service を構成する際の考慮事項 を参照してください。
Ingress
ACS クラスタでは、Service はレイヤー 4 ロードバランシングをサポートしています。ただし、Ingress はクラスタ内の Service への外部アクセスをレイヤー 7 で管理します。Ingress を使用して、さまざまなレイヤー 7 転送ルールを設定できます。たとえば、ドメイン名またはパスに基づいて、リクエストをさまざまな Service に転送できます。詳細については、ALB Ingress 管理 を参照してください。
例
フロントエンドとバックエンドを分離する一般的なアーキテクチャでは、フロントエンドとバックエンドを区別するために異なるアクセスパスが使用されます。この場合、Ingress を使用して、異なるアプリケーション間でレイヤー 7 ロードバランシングを実装できます。
DNS サービスディスカバリ
ACS はサービスディスカバリに DNS を使用します。たとえば、Service の名前は、クライアント上の Service のクラスタ IP アドレスに解決できます。ポッドの名前は、StatefulSet を使用してポッドの IP アドレスに解決できます。DNS ベースのサービスディスカバリにより、アプリケーションの IP アドレスを使用したり、アプリケーションがデプロイされている環境を気にすることなく、アプリケーションにアクセスできます。
CoreDNS は、Service の名前を Service の IP アドレスに自動的に変換します。これにより、同じ Service 名を使用して、異なる環境で Service にアクセスできます。DNS コンポーネントの使用方法と微調整の詳細については、DNS のしくみと DNS の構成 を参照してください。
ネットワークインフラストラクチャ
VPC
VPC は、Alibaba Cloud によって提供されるプライベートネットワークの一種です。VPC は論理的に相互に分離されています。VPC 内で、Elastic Compute Service (ECS) インスタンス、ApsaraDB RDS インスタンス、SLB インスタンスなどのクラウドサービスを作成および管理できます。
各 VPC は、1 つの vRouter、少なくとも 1 つのプライベート CIDR ブロック、および少なくとも 1 つの vSwitch で構成されます。
SLB
ECS インスタンスを SLB インスタンスに接続すると、SLB は VIP を使用して ECS インスタンスを仮想化し、ECS インスタンスをアプリケーションサービスプールに追加します。アプリケーションサービスプールは、高性能と高可用性を備えています。クライアントリクエストは、転送ルールに基づいて ECS インスタンスに分散されます。SLB の詳細については、SLB の概要 を参照してください。
SLB は ECS インスタンスのヘルスステータスをチェックし、異常な ECS インスタンスをプールから自動的に削除して、単一障害点を排除します。これにより、アプリケーションの可用性が向上します。SLB を使用して、DDoS 攻撃からアプリケーションを防御することもできます。
SLB は次のコンポーネントで構成されます。
SLB インスタンス
SLB インスタンスは、SLB サービスの実行エンティティです。SLB インスタンスはトラフィックを受信し、バックエンドサーバーに配信します。SLB を使い始めるには、SLB インスタンスを作成し、少なくとも 1 つのリスナーと 2 つの ECS インスタンスを SLB インスタンスに追加する必要があります。
リスナー
リスナーはクライアントリクエストをチェックし、バックエンドサーバーに転送します。リスナーはバックエンドサーバーのヘルスチェックも実行します。
バックエンドサーバー
ECS インスタンスはバックエンドサーバーとして SLB インスタンスに接続され、クライアントリクエストを受信して処理します。ECS インスタンスをサーバープールに追加したり、vServer グループまたはプライマリ/セカンダリサーバーグループを作成して、ECS インスタンスを一括管理したりできます。