Slide 1

Slide 1 text

大規模コンピューティングを支える Kubernetes のネットワーク 第4回分散システム集会 @honahuku

Slide 2

Slide 2 text

自己紹介 Honahuku(ほなふく) 第4回分散システム集会 ● 7月からGKEを使った広告の部 署に異動に ● 梅雨で頭が痛いが頑張る ● 好きな色の折りたたみ傘を見つ けてうきうき ● オフィスの近くで食べた「食べる 豚汁」が美味しかった ● 次の土曜日は三重にセキュリ ティ・ミニキャンプのチューター として行ってきます 最近のトピック

Slide 3

Slide 3 text

分散システムとは(短縮版)

Slide 4

Slide 4 text

第4回分散システム集会 ● 複数ノードにおいて処理を分散して行うもの(ほなふくが勝手に 定義) ● ジョブ型とコンテナ型(ほなふくが勝手に定義) ● ユーザーからのリクエストを受け付けるか ● k8s は web リクエストを受け付けることが多い 分散システムとは [1] Slurm Workload Manager [2] Slurm Workload Manager

Slide 5

Slide 5 text

kubernetes のネットワーク

Slide 6

Slide 6 text

第4回分散システム集会 ● インターネットから Nodeにトラフィック が流れてくる ● どのマシンでも同じよ うにコンテナが動いて ほしい ● → Pod は Node と 独立したネットワーク を持ち、 Pod ごとに IP が振られる k8s でのユーザーリクエストの処理 [3] Pod へのトラフィック

Slide 7

Slide 7 text

外からのトラフィックは直接 Node に送信される?

Slide 8

Slide 8 text

第4回分散システム集会 ● Pod は揮発する ○ Node の調子が悪くなったときに別 の Node に退避したい ● Service は Pod に対するアクセスを 抽象化する ○ 外からのトラフィック以外にもクラス タ内の他のリソースから Pod にアク セスすることもある ● Pod とは独立したネットワークを持ち、 Service ごとに IP が振られる Service という概念 [3] Service と Pod

Slide 9

Slide 9 text

(Service は) Pod と独立した ネットワークを持つ??

Slide 10

Slide 10 text

第4回分散システム集会 Node と Service と Pod [4] k8s のネットワーク

Slide 11

Slide 11 text

k8s の中ではめちゃくちゃ ネットワークが分離されている (overlay network)

Slide 12

Slide 12 text

誰が提供するのこれ

Slide 13

Slide 13 text

\\ CNI // (Container Network Interface)

Slide 14

Slide 14 text

第4回分散システム集会 CNI [5] k8s と CNI

Slide 15

Slide 15 text

第4回分散システム集会 CNI

Slide 16

Slide 16 text

なるほどわからん

Slide 17

Slide 17 text

第4回分散システム集会 ● CNI は k8s 以外でも使える ○ Linux コンテナ向けのネットワークの仕様とライブ ラリ ● CNIの k8s 向け実装は Network Plugin と呼ばれ る[10] ● k8s では overlay network を提供する[11] ○ Pod へ IP を振ったり ○ Service へ IP を振ったりする ● VXLAN や IP-in-IP で動いてる [5] CNI

Slide 18

Slide 18 text

第4回分散システム集会 ● Service は実態として kube-proxy というやつがいい 感じにしている ○ ノードに流れてきた Pod 向けのトラフィックを Pod に流す ● kube-proxy はクラスタの外から CNI plugin までを 繋いでいる ● ネットワークを抽象化(≒仮想化)することによって k8s のコンポーネントがネットワークを k8s の API とかの仕 組み上でいじれるようになってる ○ 代わりにオーバーヘッドもある[4] CNI plugin と Service

Slide 19

Slide 19 text

まとめ

Slide 20

Slide 20 text

第4回分散システム集会 ● overlay network により Pod 間 や Service 間 で NAT をせずに疎通できる(他にも色々やってくれる) ● これは CNI Plugin により提供される ● overlay network までのトラフィックは kube-proxy が繋ぎこむ まとめ [7] [8]

Slide 21

Slide 21 text

参考文献

Slide 22

Slide 22 text

参考文献 第4回分散システム集会 ● [1] Slurm Workload Manager https://slurm.schedmd.com/ ● [2] Kubernetes https://kubernetes.io/ ● [3] ネットワークの概要 https://cloud.google.com/kubernetes-engine/docs/concepts/network-overview ● [4] コンテナネイティブロードバランシングの話 / A story about container native load balancing https://speakerdeck.com/inductor/a-story-about-container-native-load-balancing ● [5] Assessing Container Network Interface Plugins: Functionality, Performance, and Scalability https://doi.org/10.1109/TNSM.2020.3047545 ● [6]久々に社内勉強会で発表するので資料を公開します https://blog.inductor.me/entry/container-native-load-balancing ● [7]Kubernetes Components https://kubernetes.io/docs/concepts/overview/components/ ● [8]CNI - the Container Network Interface https://github.com/containernetworking/cni ● [9]ふくねっと Vol.1 https://booth.pm/ja/items/5399365 ● [10]Network Plugins https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/ne twork-plugins/ ● [11]The Kubernetes network model https://kubernetes.io/docs/concepts/services-networking/#the-kubernetes-netwo rk-model