ACK Edge クラスターでは、エッジノードが隔離されたネットワークドメインにまたがり、IP アドレスが競合する可能性があるため、APIServer、MetricsServer、Prometheus などのクラウド側コンポーネントがエッジのワークロードに到達できません。Raven は、クラウドとエッジのゲートウェイノード間に暗号化トンネルを構築することでこの問題を解決し、既存のネットワークトポロジーを変更することなく、クロスドメインのモニタリングと運用を可能にします。
本トピックでは、Raven のアーキテクチャ、仕組み、および 2 つの通信モードの選択方法について説明します。
背景情報
ACK Edge クラスターは、クラウドエッジ連携アーキテクチャを採用しています。コントロールプレーンコンポーネントはクラウドで実行され、ワークロードはデータセンターやエッジデバイスなどのエッジ側で実行されます。エッジノードは、インターネットを介して ACK コントロールプレーンのパブリックエンドポイントに接続します。
エッジノードはノードプールにグループ化され、各ノードプールは個別のネットワークドメインを表します。異なるノードプール内のノードは直接通信できず、IP アドレスが重複する可能性があります。この隔離はエッジコンピューティングの設計によるものですが、クラウド側のコンポーネントがモニタリングと運用のためにエッジのワークロードに到達することを妨げます。
仕組み
Raven は 2 つのフェーズで動作します。まずゲートウェイノード間にトンネルを確立し、次にそのトンネルを介してクロスドメインのトラフィックを転送します。
フェーズ 1:初期化
-
各ノードプールで、1 つのノードがエッジゲートウェイノードとして選出されます。ノードプールに属さないノードは、それ自体がゲートウェイとして機能します。
-
raven-agent-dsDaemonSet は、ホストネットワークモードを使用してクラスター内のすべてのノードで実行されます。ゲートウェイノード上では、クラウドゲートウェイノードへの暗号化トンネルを確立します。 -
コントロールプレーンコンポーネントである
ack-edge-yurt-managerは、ノードプールのメンバーシップに基づいてノードをネットワークドメインに分割し、ドメインごとにgatewayカスタムリソースを作成してノードと構成情報を記録します。
フェーズ 2:リクエスト転送
-
クラウド側コンポーネントからのクロスドメインリクエストは、クラウドゲートウェイノードを介して適切なエッジゲートウェイノードにルーティングされます。
-
エッジゲートウェイノードは、リクエストを自身のネットワークドメイン内のターゲットホスト、コンテナ、またはサービスに転送します。
通信モードの選択
Raven は 2 つの通信モードを提供します。
| モード | トラフィックタイプ | IP 競合のサポート | 利用シーン |
|---|---|---|---|
| プロキシモード | ホストレベル (レイヤー 7) | はい | ノードプールに IP 競合がある場合、または kubectl logs/exec/attach/top |
| トンネルモード | コンテナレベル (レイヤー 3) | いいえ | ノードプールにノード間の接続性があり、IP 競合がない場合 |
プロキシモード
プロキシモードは、選出されたエッジゲートウェイノードとクラウドゲートウェイノードの間に暗号化されたリバースチャネルを作成します。クラウドゲートウェイノードは、レイヤー 7 でクロスドメインリクエストをエッジゲートウェイノードに転送し、NodeName+Port の組み合わせを使用してターゲットを識別します。ソロノードはゲートウェイノードであり、クラウドのゲートウェイノードと直接トンネルを作成できます。
プロキシモードは以下をサポートします:
-
APIServer、MetricsServer、および Prometheus のホストネットワーク通信
-
kubectl logs、kubectl exec、kubectl attach、およびkubectl top -
IP アドレス範囲が競合するノードプール
IP 競合のシナリオでは、プロキシモードを使用してください。トンネルモードは、ネットワークドメイン間で IP アドレスが重複する場合、ホストレベルのトラフィックをルーティングできません。
トンネルモード
トンネルモードは、選出されたエッジゲートウェイノードとクラウドゲートウェイノードの間に IPSec-VPN トンネルを作成します。各ネットワークドメイン内で、Raven は Flannel VXLAN を使用して仮想拡張可能 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) インスタンス (ACK Edge クラスターの作成時に必須)
-
エッジホストがインターネットを介して ACK Edge コントロールプレーンと通信する場合:Classic Load Balancer (CLB) インスタンス、Elastic IP アドレス (EIP)、および構成済みのネットワークアクセスコントロールリスト (ACL)。これらのリソースは、異なるノードプール内のゲートウェイノード間に暗号化トンネルを確立します。
次のステップ
-
通信モードの変更、ネットワーク ACL の構成、またはカスタムゲートウェイの設定については、「クロスリージョン O&M 通信コンポーネント Raven の使用」をご参照ください。
-
raven-agent-dsのリリースノートについては、「raven-agent-ds」をご参照ください。