LinuCレベル4 システムアーキテクト ネットワークとストレージの選定 問3
ネットワークとストレージの選定/拠点内のネットワーキング複数ノードのKubernetesクラスタのコンテナネットワークを選定する。ノードは自社のL3ネットワークに接続されており、ラック上位のルーターとBGPで経路を交換できる。カプセル化によるオーバーヘッドを避けてPod間を直接ルーティングしたく、Pod間の通信をNetworkPolicyで制限する必要もある。最も適した構成はどれか。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「ネットワークとストレージの選定」に対応。実際の試験問題ではありません)
- AflannelをVXLANバックエンドで使い、ノード間の通信をUDPでカプセル化して下位のネットワーク構成に依存せず接続する
- BDocker Swarmを構成してoverlayネットワークドライバを使い、VXLANでホストをまたぐコンテナ間を接続する
- C各ノードのdocker0ブリッジからNAPTで外部へ出し、他ノードのコンテナへは公開したポート経由で接続する
- DCalicoをBGPモードで使い、各ノードのPodアドレスの経路をルーターへ広告して、カプセル化せずに転送する
正解:D
解説
Calicoは、各ノードが担当するPodアドレスの経路をBGPで広告し、カプセル化せずにL3のルーティングでPod間の通信を転送できます。NetworkPolicyの実装も備えているため、この要件の両方を満たします。flannelはVXLANなどのオーバーレイで下位のネットワークに依存せず手軽に接続できるのが利点ですが、カプセル化のオーバーヘッドがあり、flannel自体はNetworkPolicyを実装しません。Docker SwarmのoverlayドライバもVXLANによるカプセル化で、Kubernetesのネットワークとは別の仕組みです。
選択肢ごとの解説
- A誤り。下位のネットワークに手を入れずに済む点では有力ですが、カプセル化のオーバーヘッドを避けたい要件に合わず、flannel単体ではNetworkPolicyも使えません。
- B誤り。Docker Swarmのoverlayドライバはホストをまたぐコンテナ間をVXLANで接続する仕組みで、Kubernetesのクラスタネットワークの選択肢ではなく、カプセル化も伴います。
- C誤り。ポートの公開による接続ではPodが固有のアドレスで直接通信できず、Kubernetesのネットワークモデルを満たしません。
- D正しい。BGPによる経路広告でカプセル化なしのルーティングができ、NetworkPolicyにも対応するCalicoが要件に合います。