Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
大規模コンピューティングを支える Kubernetes のネットワーク
Search
Honahuku
July 05, 2024
0
40
大規模コンピューティングを支える Kubernetes のネットワーク
第4回分散システム集会で発表したときの資料です
https://distributed.connpass.com/event/321792/
Honahuku
July 05, 2024
Tweet
Share
More Decks by Honahuku
See All by Honahuku
エンジニアでも論文が読みたい!
honahuku
0
410
今から始める分散システム
honahuku
0
240
SecAd~Ad data drivin’ network security~
honahuku
0
130
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Bash Introduction
62gerente
608
210k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Designing for humans not robots
tammielis
250
25k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Navigating Team Friction
lara
183
14k
How STYLIGHT went responsive
nonsquared
95
5.2k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
4 Signs Your Business is Dying
shpigford
180
21k
Transcript
大規模コンピューティングを支える Kubernetes のネットワーク 第4回分散システム集会 @honahuku
自己紹介 Honahuku(ほなふく) 第4回分散システム集会 • 7月からGKEを使った広告の部 署に異動に • 梅雨で頭が痛いが頑張る • 好きな色の折りたたみ傘を見つ
けてうきうき • オフィスの近くで食べた「食べる 豚汁」が美味しかった • 次の土曜日は三重にセキュリ ティ・ミニキャンプのチューター として行ってきます 最近のトピック
分散システムとは(短縮版)
第4回分散システム集会 • 複数ノードにおいて処理を分散して行うもの(ほなふくが勝手に 定義) • ジョブ型とコンテナ型(ほなふくが勝手に定義) • ユーザーからのリクエストを受け付けるか • k8s
は web リクエストを受け付けることが多い 分散システムとは [1] Slurm Workload Manager [2] Slurm Workload Manager
kubernetes のネットワーク
第4回分散システム集会 • インターネットから Nodeにトラフィック が流れてくる • どのマシンでも同じよ うにコンテナが動いて ほしい •
→ Pod は Node と 独立したネットワーク を持ち、 Pod ごとに IP が振られる k8s でのユーザーリクエストの処理 [3] Pod へのトラフィック
外からのトラフィックは直接 Node に送信される?
第4回分散システム集会 • Pod は揮発する ◦ Node の調子が悪くなったときに別 の Node に退避したい
• Service は Pod に対するアクセスを 抽象化する ◦ 外からのトラフィック以外にもクラス タ内の他のリソースから Pod にアク セスすることもある • Pod とは独立したネットワークを持ち、 Service ごとに IP が振られる Service という概念 [3] Service と Pod
(Service は) Pod と独立した ネットワークを持つ??
第4回分散システム集会 Node と Service と Pod [4] k8s のネットワーク
k8s の中ではめちゃくちゃ ネットワークが分離されている (overlay network)
誰が提供するのこれ
\\ CNI // (Container Network Interface)
第4回分散システム集会 CNI [5] k8s と CNI
第4回分散システム集会 CNI
なるほどわからん
第4回分散システム集会 • CNI は k8s 以外でも使える ◦ Linux コンテナ向けのネットワークの仕様とライブ ラリ
• CNIの k8s 向け実装は Network Plugin と呼ばれ る[10] • k8s では overlay network を提供する[11] ◦ Pod へ IP を振ったり ◦ Service へ IP を振ったりする • VXLAN や IP-in-IP で動いてる [5] CNI
第4回分散システム集会 • Service は実態として kube-proxy というやつがいい 感じにしている ◦ ノードに流れてきた Pod
向けのトラフィックを Pod に流す • kube-proxy はクラスタの外から CNI plugin までを 繋いでいる • ネットワークを抽象化(≒仮想化)することによって k8s のコンポーネントがネットワークを k8s の API とかの仕 組み上でいじれるようになってる ◦ 代わりにオーバーヘッドもある[4] CNI plugin と Service
まとめ
第4回分散システム集会 • overlay network により Pod 間 や Service 間
で NAT をせずに疎通できる(他にも色々やってくれる) • これは CNI Plugin により提供される • overlay network までのトラフィックは kube-proxy が繋ぎこむ まとめ [7] [8]
参考文献
参考文献 第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