Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Fabric Controller連携やってみた

Fabric Controller連携やってみた

KubernetesのBridge CNIを使った場合、Pod2Pod Connectivityを提供するためには、外部RTにルーティングの設定が必要。
今回はExabgpを使って、外部ルーターにルーティングを注入することで実現

その他実現可能なユースケースについて検討を行った。

Cd6f9aa17da41e53601364d85c178eb6?s=128

Kazushige TAKEUCHI

July 27, 2021
Tweet

Transcript

  1. (いまさら) exabgpでFabric Controller連携やってみた Kazushige Takeuchi (@kaz_tech_ )

  2. k8sjpと私 l (時期は忘れました・・・まぁNW関連やら、DevOps やら) l Kindを使った開発環境の構築 l OpenStack + IPv6で起こったこんな問題

    l マルチクラスタネットワーク l
  3. 背景 l 前回マルチクラスタに関する発表をしたが、クラウドプロバイダ の各種実装の詳細は追えていなかった。 l テレコムの関心事である以下への拡張を検証したい(検証した、とは言っていない) • Network Isolation •

    Service Function Chanining (SFC)の実現性を確認
  4. 基本検証 Kubenet?(bridge)の基礎と exabgpによる経路注入

  5. 本日のアーキテクチャ1 K8s master K8s worker Pod network Pod network /31

    /31 /31 NIC NIC NIC NIC NIC bridge bridge SDN Controller NIC exabgp BGP Peering bgp frrouting 今回はCalicoは適用していない 手動でbridge を設定 /etc/cni/net.d/ に設定ファイルを配置 Route injection CLI NIC ※クラウドでは、NW管理機能と連携される模様 同じ環境が用意できないため、Bridgeを利用
  6. アンダーレイNW設計 K8s master K8s worker Pod network Pod network /31

    /31 /31 NIC NIC NIC NIC NIC bridge bridge SDN Controller NIC exabgp bgp frrouting アンダーレイの通信は、 frroutingに向けてあり、 インターネット通信が可能 Route injection CLI Default route NIC
  7. オーバーレイNW設計1 K8s master K8s worker Pod network Pod network /31

    /31 /31 NIC NIC NIC NIC NIC bridge bridge SDN Controller NIC exabgp bgp frrouting Route injection CLI NIC Pod networkは知ら れていないため、 到達できない
  8. オーバーレイNW設計2 K8s master K8s worker Pod network Pod network /31

    /31 /31 NIC NIC NIC NIC NIC bridge bridge SDN Controller NIC exabgp bgp frrouting Route injection CLI NIC pod podがk8sw1にあることを通知 announce route x.x.x.x next-hop y.y.y.y x.x.x.xは、Pod IP y.y.y.y は、k8sw1のホストのIP ここにx.x.x.x宛のパケットが到達すれば、 y.y.y.yに転送すればいいことが伝わる
  9. オーバーレイNW設計3 K8s master K8s worker Pod network Pod network /31

    /31 /31 NIC NIC NIC NIC NIC bridge bridge SDN Controller NIC exabgp bgp frrouting Route injection CLI NIC pod 結果的に、外部からもpodに到達が可能
  10. cni設定 l /etc/cni/net.d/10-mynet.conf { "cniVersion": "0.4.0", "name": "mynet", "type": "bridge",

    "bridge": "mybridge", "isDefaultGateway": true, "ipam": { "type": "host-local", "subnet": "192.168.100.0/24" } } IPAMのカスタマイズができれば もっと柔軟な設定ができそう
  11. exabgp設定 process announce-routes { run /usr/bin/socat stdout pipe:/var/run/exabgp.cmd; encoder json;

    } neighbor 192.168.0.0 { # Remote neighbor to peer with router-id 192.168.0.1; # Our local router-id local-address 192.168.0.1; # Our local update-source local-as 64512; # Our local AS peer-as 64512; # Peer's AS family { ipv4 unicast; ipv4 flow; } api { processes [ announce-routes ]; } }
  12. 応用検証 次回に向けて?(時間があればじっくりと)

  13. 以下の応用検証を実施(しようか悩み中, 調査の方優先したい) • マルチNW対応(Network Isolation) • Service Function Chanining •

    Multi Cluster Migration
  14. マルチNW(Network Isolation) K8s master K8s worker Pod network Pod network

    /31 /31 /31 NIC NIC NIC NIC NIC bridge bridge SDN Controller NIC exabgp bgp frrouting Route injection CLI NIC pod Pod network bridge 2.外部NWもIsolationに追従し、 1. この場合に 3.どういうアーキテクチャにすべきか? (すくなくとも再起動をしないと、 新しいBGPインスタンスに対応できない?) 4.対応できたとして、ユーザーが好き勝手に 他人のNWに接続できるのも問題
  15. Service Function Chaining K8s master K8s worker Pod network Pod

    network /31 /31 /31 NIC NIC NIC NIC NIC bridge bridge SDN Controller NIC exabgp bgp frrouting Route injection CLI NIC pod Pod network bridge destination network 宛先はこっち 透過プロキシのように 自分の宛先以外のパケットを処理 SR –IOVならL2で ダイレクトに外部NWに接続可能だが この場合は、未検証
  16. Multi Cluster Migration Pod network Pod network pod pod

  17. まとめ • exabgpを利用したアーキテクチャの一検討を行った。 – シンプルなユースケースで1NWであればCalicoを利用したほ うが楽 – Kubernetes標準ではサポートされてない、IPAMなどの拡張を 考慮した際に、本方向性が生きる(かもしれない)。 何か皆様でご存知のOSSや活用事例などがあればお伺いしたい

    • マルチNWや、RBAC, SR-IOVなどのNWを考えたとき、 Fabricのコントロールやクラスタ間の接続を考慮し、連 携する際には更なる検討が必要
  18. さらなる拡張に必要な仕組み l OpenContrail CNIやSONA CNIは既に同仕組みを持っているように見える(が、私自身は未 検証) l Service/ClusterIP への対応。Calicoだと、不要なノードへは転送されない l

    外部のNWを管理する仕組み l 外部NWにおいて、VRFを管理する仕組み l K8SのノードにBridge向けの設定を動的に配布 l 複数NW対応に向けて l Multus との連携やRBACとの紐付け l 今回はCLIから経路注入したが、K8Sのコントローラーと連携して管理 l Admission Webhookと連携? l 固定IPを割り振りたい。IPAMと連携すればよい