ACK Edge クラスターにおいて、Raven は効率的なマルチリージョンのクラウド・エッジ間運用保守を実現するクロスネットワークドメイン通信を提供します。このトピックでは、Raven の概念、動作の仕組み、機能について説明します。
Raven は、プロキシモード (レイヤー 7、IP 競合に対応) とトンネルモード (レイヤー 3、コンテナレベルの接続性) をサポートしています。
背景
ACK Edge クラスターは、クラウド・エッジアーキテクチャを採用しています。コントロールプレーンコンポーネントはクラウド上で実行され、ワークロードはエッジデータセンターまたはデバイスで実行されます。エッジノードは、インターネット経由でコントロールプレーンのパブリックエンドポイントに接続します。
エッジノードはノードプールにグループ化され、各ノードプールは異なるネットワークドメインを表します。異なるノードプール内のノードは直接通信できず、IP アドレスが重複する可能性があります。この分離は設計上のものですが、クラウド側のコンポーネントが監視や運用のためにエッジワークロードに到達することを妨げます。
仕組み
Raven は 2 つのフェーズで動作します。まずゲートウェイノード間でトンネルを確立し、次にそれらのトンネルを介してクロスドメイントラフィックを転送します。
フェーズ 1:初期化
-
各ノードプールは、1 つのノードをエッジゲートウェイとして選出します。単独ノードは、自身のゲートウェイとして機能します。
-
raven-agent-ds DaemonSet は、ホストネットワークモードですべてのノードで実行されます。ゲートウェイノードでは、クラウドゲートウェイへの暗号化トンネルを確立します。
-
ack-edge-yurt-manager コントロールプレーンコンポーネントは、ノードプールのメンバーシップに基づいてノードをネットワークドメインに分割し、各ドメインに対して
gatewayカスタムクラスターリソースを作成します。
フェーズ 2:リクエスト転送
-
クラウド側のコンポーネントからのクロスドメインリクエストは、クラウドゲートウェイノードを経由して適切なエッジゲートウェイノードにルーティングされます。
-
エッジゲートウェイノードは、ネットワークドメイン内のターゲットホスト、コンテナ、またはサービスにリクエストを転送します。
通信モードの選択
ノードプールに IP アドレスの競合があるかどうかに基づいて選択します。
| モード | トラフィックタイプ | IP 競合のサポート | 使用するケース |
|---|---|---|---|
| プロキシモード | ホストレベル (レイヤー 7) | あり | kubectl logs/exec/attach/topノードプールに IP 競合がある場合、または が必要な場合 |
| トンネルモード | コンテナレベル (レイヤー 3) | なし | ノードプールにノード間接続があり、IP 競合がない場合 |
プロキシモード
プロキシモードでは、エッジゲートウェイノードとクラウドゲートウェイノードの間に暗号化されたリバースチャネルが作成されます。クラウドゲートウェイは、レイヤー 7 でクロスドメインリクエストをエッジゲートウェイに転送し、NodeName+Port でターゲットを識別します。ソロノードは自身のゲートウェイとして機能し、クラウドゲートウェイに直接トンネリングします。
プロキシモードは、以下をサポートします。
-
APIServer、MetricsServer、Prometheus のホストネットワーク通信
-
kubectl logs、kubectl exec、kubectl attach、およびkubectl top -
IP アドレス範囲が競合するノードプール
IP 競合のシナリオでは、プロキシモードを使用してください。トンネルモードは、ネットワークドメイン間で IP アドレスが重複している場合、ホストレベルのトラフィックをルーティングできません。
トンネルモード
トンネルモードは、エッジゲートウェイノードとクラウドゲートウェイノードの間に IPsec-VPN トンネルを作成します。各ネットワークドメイン内で、Raven は Flannel VXLAN を使用して Virtual Extensible LAN (VXLAN) オーバーレイを作成し、すべてのクロスドメインコンテナトラフィックは VXLAN を介して VPN トンネル経由でルーティングされます。
トンネルモードは、以下をサポートします。
-
ネットワークドメインをまたいだコンテナ間通信
-
Prometheus によるエッジコンテナからのメトリクス収集
トンネルモードでは、各ノードプール内でノード間の直接接続が必要です。
インターネット経由のクロスドメイン通信では、データ損失が発生する可能性があります。ビジネスクリティカルなデータの送信にトンネルモードを使用しないでください。問題や提案がある場合は、チケットを送信 して、ACK テクニカルチームにお問い合わせください。
コンポーネントアーキテクチャ
Raven は 2 つのコンポーネントで構成されます。
| コンポーネント | タイプ | 役割 |
|---|---|---|
| ack-edge-yurt-manager | コントロールプレーン | gatewayノードプールに基づいてノードをネットワークドメインに分割し、 カスタムクラスターリソースを作成します |
| raven-agent-ds | データプレーン (DaemonSet) | すべてのノードで実行され、ゲートウェイノード間のルートまたは VPN トンネルを設定します |
Raven には、各ネットワークドメインのノードと設定データを格納するために、gateway カスタムクラスターリソースが必要です。
前提条件
作業を開始する前に、次の前提条件を満たしていることを確認してください。
-
Kubernetes 1.26.3 以降を実行している ACK Edge クラスター
-
クラウドゲートウェイノードとして指定された少なくとも 1 つの Elastic Compute Service (ECS) インスタンス (クラスター作成時)
-
エッジホストがインターネット経由でコントロールプレーンに到達する場合:Classic Load Balancer (CLB) インスタンス、Elastic IP アドレス (EIP)、および設定されたネットワークアクセスコントロールリスト (ACL)
次のステップ
-
通信モードの変更、ネットワーク ACL の設定、またはカスタムゲートウェイのセットアップについては、クロスドメイン運用保守通信コンポーネント Raven の使用 をご参照ください。
-
raven-agent-dsのリリースノートについては、raven-agent-ds をご参照ください。