Illustrated_guid_to_kubernetes_networking.pdf

akdenizerdem 5 views 41 slides Jun 08, 2024
Slide 1
Slide 1 of 41
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41

About This Presentation

kubernetes technology


Slide Content

Google Cloud Platform
An Illustrated Guide to
Kubernetes Networking
Tim Hockin <[email protected]>
Senior Staff Software Engineer
@thockin

Google Cloud Platform
Layer 2: ethernet

Google Cloud Platform
node-a
node-c
node-b
node-d
192.168.1.1/16
11:22:33:44:55:01



192.168.1.2/16
01:23:45:67:89:02


192.168.1.3/16
11:22:33:44:55:03


192.168.1.4/16
01:23:45:67:89:04


L2
switch

Google Cloud Platform
node-a
node-c
node-b
node-d
L2
to: 192.168.1.3
from: 192.168.1.1
GET / 192.168.1.1/16
11:22:33:44:55:01



192.168.1.2/16
01:23:45:67:89:02


192.168.1.3/16
11:22:33:44:55:03


192.168.1.4/16
01:23:45:67:89:04

Google Cloud Platform
node-d
node-bnode-a
node-c
L2
to: <broadcast>
from: 11:22:33:44:55:01
who has 192.168.1.3?
to: 192.168.1.3
from: 192.168.1.1
GET / 192.168.1.1/16
11:22:33:44:55:01



192.168.1.2/16
01:23:45:67:89:02


192.168.1.3/16
11:22:33:44:55:03


192.168.1.4/16
01:23:45:67:89:04


“ARP request”

Google Cloud Platform
node-a
node-c
node-b
node-d
L2
to: 192.168.1.3
from: 192.168.1.1
GET / 192.168.1.1/16
11:22:33:44:55:01



192.168.1.2/16
01:23:45:67:89:02


192.168.1.3/16
11:22:33:44:55:03


192.168.1.4/16
01:23:45:67:89:04


to: 11:22:33:44:55:01
from: 11:22:33:44:55:03
I have 192.168.1.3
“ARP response”

Google Cloud Platform
node-a
node-c
node-b
node-d
L2
to: 192.168.1.3
via: 11:22:33:44:55:03
from: 192.168.1.1
GET /

192.168.1.1/16
11:22:33:44:55:01



192.168.1.2/16
01:23:45:67:89:02


192.168.1.3/16
11:22:33:44:55:03


192.168.1.4/16
01:23:45:67:89:04

Google Cloud Platform
node-a
root netns
eth0: 192.168.1.1/16
11:22:33:44:55:01



L2 with containers
cbr0: 10.0.1.1/24




ctr-1
eth0: 10.0.1.2/24



ctr-2
eth0: 10.0.1.3/24



ctr-3
eth0: 10.0.1.4/24

Google Cloud Platform
node-a
192.168.1.1/16
11:22:33:44:55:01

node-c
node-b
node-d
192.168.1.2/16
01:23:45:67:89:02


192.168.1.3/16
11:22:33:44:55:03


192.168.1.4/16
01:23:45:67:89:04


L2
ctr-1 10.0.1.2
aa:bb:cc:dd:e1:01
ctr-2 10.0.3.2
aa:bb:cc:dd:e3:02

Google Cloud Platform
node-a
192.168.1.1/16
11:22:33:44:55:01

node-c
node-b
node-d
192.168.1.2/16
01:23:45:67:89:02


192.168.1.3/16
11:22:33:44:55:03


192.168.1.4/16
01:23:45:67:89:04


L2
ctr-1 10.0.1.2
aa:bb:cc:dd:e1:01
ctr-2 10.0.3.2
aa:bb:cc:dd:e3:02
to: 10.0.3.2
from: 10.0.1.2
GET /

Google Cloud Platform
node-a
192.168.1.1/16
11:22:33:44:55:01

node-c
node-b
node-d
192.168.1.2/16
01:23:45:67:89:02


192.168.1.3/16
11:22:33:44:55:03


192.168.1.4/16
01:23:45:67:89:04


L2
ctr-1 10.0.1.2
aa:bb:cc:dd:e1:01
ctr-2 10.0.3.2
aa:bb:cc:dd:e3:02
to: 10.0.3.2
from: 10.0.1.2
GET /
to: <broadcast>
from: aa:bb:cc:dd:e1:01
who has 10.0.3.2?
“ARP request”

Google Cloud Platform
node-a
192.168.1.1/16
11:22:33:44:55:01

node-c
node-b
node-d
192.168.1.2/16
01:23:45:67:89:02


192.168.1.3/16
11:22:33:44:55:03


192.168.1.4/16
01:23:45:67:89:04


L2
ctr-1 10.0.1.2
aa:bb:cc:dd:e1:01
ctr-2 10.0.3.2
aa:bb:cc:dd:e3:02
to: 10.0.3.2
from: 10.0.1.2
GET /
to: aa:bb:cc:dd:e1:01
from: 11:22:33:44:55:03
I have 10.0.3.2
“proxy ARP
response”

Google Cloud Platform
node-a
192.168.1.1/16
11:22:33:44:55:01

node-c
node-b
node-d
192.168.1.2/16
01:23:45:67:89:02


192.168.1.3/16
11:22:33:44:55:03


192.168.1.4/16
01:23:45:67:89:04


L2
ctr-1 10.0.1.2
aa:bb:cc:dd:e1:01
ctr-2 10.0.3.2
aa:bb:cc:dd:e3:02
to: 10.0.3.2
via: 11:22:33:44:55:03
from: 10.0.1.2
GET /

Google Cloud Platform
Layer 3 - IP

Google Cloud Platform
node-a
node-c
node-b
node-d
192.168.1.1/32


192.168.1.2/32
192.168.1.3/32 192.168.1.4/32
L3
gateway

Google Cloud Platform
node-a
node-c
node-b
node-d
192.168.1.1/32


192.168.1.2/32
192.168.1.3/32 192.168.1.4/32
L3
to: 192.168.1.3
from: 192.168.1.1
GET /

Google Cloud Platform
node-a
node-c
node-b
node-d
192.168.1.1/32


192.168.1.2/32
192.168.1.3/32 192.168.1.4/32
L3
to: 192.168.1.3
from: 192.168.1.1
GET /

Google Cloud Platform
node-a
node-c
node-b
node-d
192.168.1.1/32


192.168.1.2/32
192.168.1.3/32 192.168.1.4/32
L3
to: 192.168.1.3
from: 192.168.1.1
GET /
routing decision,
static or learned
(e.g. BGP)

Google Cloud Platform
node-a
192.168.1.1/32

node-c
node-b
node-d
192.168.1.2/32


192.168.1.3/32


192.168.1.4/32


L3
ctr-1 10.0.1.2
ctr-2 10.0.3.2

Google Cloud Platform
node-a
192.168.1.1/32

node-c
node-b
node-d
192.168.1.2/32


192.168.1.3/32


192.168.1.4/32


L3
ctr-1 10.0.1.2
ctr-2 10.0.3.2
to: 10.0.3.2
from: 10.0.1.2
GET /

Google Cloud Platform
node-a
192.168.1.1/32

node-c
node-b
node-d
192.168.1.2/32


192.168.1.3/32


192.168.1.4/32


L3
ctr-1 10.0.1.2
ctr-2 10.0.3.2
to: 10.0.3.2
from: 10.0.1.2
GET /

Google Cloud Platform
node-a
192.168.1.1/32

node-c
node-b
node-d
192.168.1.2/32


192.168.1.3/32


192.168.1.4/32


L3
ctr-1 10.0.1.2
ctr-2 10.0.3.2
to: 10.0.3.2
from: 10.0.1.2
GET /
routing decision,
static or learned
(e.g. BGP)

Google Cloud Platform
node-a
192.168.1.1/32

node-c
node-b
node-d
192.168.1.2/32


192.168.1.3/32


192.168.1.4/32


L3
ctr-1 10.0.1.2
ctr-2 10.0.3.2
to: 10.0.3.2
from: 10.0.1.2
GET /

Google Cloud Platform
Overlays


Q: When should I use an overlay?
A: When nothing else works, or when you have
specific reasons to want it (e.g. the added value
of management)

Google Cloud Platform
node-a
root netns
eth0: 192.168.1.1/16



Overlay (e.g. flannel, weave)

cbr0: 10.0.1.1/24




ctr-1
eth0: 10.0.1.2/24



ctr-2
eth0: 10.0.1.3/24



ctr-3
eth0: 10.0.1.4/24



flannel0: 10.0.1.254/16

Google Cloud Platform
node-a
root netns
eth0: 192.168.1.1/16



cbr0: 10.0.1.1/24




ctr-1
eth0: 10.0.1.2/24



ctr-2
eth0: 10.0.1.3/24



ctr-3
eth0: 10.0.1.4/24



flannel0: 10.0.1.254/16




to: 10.0.3.2
from: 10.0.1.2
GET /
Overlay (e.g. flannel, weave)

Google Cloud Platform
node-a
root netns
eth0: 192.168.1.1/16



cbr0: 10.0.1.1/24




ctr-1
eth0: 10.0.1.2/24



ctr-2
eth0: 10.0.1.3/24



ctr-3
eth0: 10.0.1.4/24



flannel0: 10.0.1.254/16




to: 10.0.3.2
from: 10.0.1.2
GET /
Overlay (e.g. flannel, weave)

Google Cloud Platform
node-a
root netns
eth0: 192.168.1.1/16



cbr0: 10.0.1.1/24




ctr-1
eth0: 10.0.1.2/24



ctr-2
eth0: 10.0.1.3/24



ctr-3
eth0: 10.0.1.4/24



flannel0: 10.0.1.254/16




to: 10.0.3.2
from: 10.0.1.2
GET /
Overlay (e.g. flannel, weave)

Google Cloud Platform
node-a
root netns
eth0: 192.168.1.1/16



cbr0: 10.0.1.1/24




ctr-1
eth0: 10.0.1.2/24



ctr-2
eth0: 10.0.1.3/24



ctr-3
eth0: 10.0.1.4/24



flannel0: 10.0.1.254/16




to: 192.168.1.3
from: 192.168.1.1
encap:
to: 10.0.3.2
from: 10.0.1.2
GET /
Overlay (e.g. flannel, weave)

Google Cloud Platform
node-a
192.168.1.1/16

node-c
node-b
node-d
192.168.1.2/16


192.168.1.3/16


192.168.1.4/16


ctr-1 10.0.1.2
ctr-2 10.0.3.2
Overlay (e.g. flannel, weave)

Google Cloud Platform
node-c
root netns
eth0: 192.168.1.3/16


cbr0: 10.0.3.1/24




ctr-4
eth0: 10.0.3.2/24



ctr-5
eth0: 10.0.3.3/24



ctr-6
eth0: 10.0.3.4/24



flannel0: 10.0.3.254/16




to: 192.168.1.3
from: 192.168.1.1
encap:
to: 10.0.3.2
from: 10.0.1.2
GET /
Overlay (e.g. flannel, weave)

Google Cloud Platform
node-c
root netns
eth0: 192.168.1.3/16


cbr0: 10.0.3.1/24




ctr-4
eth0: 10.0.3.2/24



ctr-5
eth0: 10.0.3.3/24



ctr-6
eth0: 10.0.3.4/24



flannel0: 10.0.3.254/16




to: 10.0.3.2
from: 10.0.1.2
GET /
Overlay (e.g. flannel, weave)

Google Cloud Platform
node-c
root netns
eth0: 192.168.1.3/16


cbr0: 10.0.3.1/24




ctr-4
eth0: 10.0.3.2/24



ctr-5
eth0: 10.0.3.3/24



ctr-6
eth0: 10.0.3.4/24



flannel0: 10.0.3.254/16




to: 10.0.3.2
from: 10.0.1.2
GET /
Overlay (e.g. flannel, weave)

Google Cloud Platform
Overlays - the hard part

Google Cloud Platform
node-a
192.168.1.1/16

node-c
non-node
node-d
192.168.1.2/16


192.168.1.3/16


192.168.1.4/16


ctr-1 10.0.1.2
ctr-2 10.0.3.2
Overlay (e.g. flannel, weave)

Google Cloud Platform
node-a
192.168.1.1/16

node-c
non-node
node-d
192.168.1.2/16


192.168.1.3/16


192.168.1.4/16


ctr-1 10.0.1.2
ctr-2 10.0.3.2
to: 10.0.3.2
from: 192.168.1.2
GET /
Overlay (e.g. flannel, weave)

Google Cloud Platform
node-a
192.168.1.1/16

node-c
non-node
node-d
192.168.1.2/16


192.168.1.3/16


192.168.1.4/16


ctr-1 10.0.1.2
ctr-2 10.0.3.2
to: 10.0.3.2
from: 192.168.1.2
GET /
Overlay (e.g. flannel, weave)

Google Cloud Platform
node-a
192.168.1.1/16

node-c
non-node
node-d
192.168.1.2/16


192.168.1.3/16


192.168.1.4/16


ctr-1 10.0.1.2
ctr-2 10.0.3.2
to: 10.0.3.2
from: 192.168.1.2
GET /
?!?!
Overlay (e.g. flannel, weave)

Google Cloud Platform
We need a bridge between the
physical and overlay networks...

Google Cloud Platform
We need a bridge between the
physical and overlay networks...
•could: route to nodes
•could: route to 1 or more bridge machines
•could: run flannel on client machines

Google Cloud Platform
We need a bridge between the
physical and overlay networks...
•could: route to nodes
•could: route to 1 or more bridge machines
•could: run flannel on client machines
•see “When should I use an overlay?”
Tags