SlideShare a Scribd company logo
1 of 79
Download to read offline
Our Experiences deploying
Kubernetes with IPv6
André Martins (@aanm__)
Software Engineer
Covalent IO
What to expect from this talk?
• Quick history of IPv6
• IPv6 in kubernetes
– Can I run it?
• Step by step tutorial + Demo
IPv6 history
IPv4 is not enough?
IETF - ROAD
November 1991
IPv6 in Linux 2.6.12
(Stable)
~2005
No more IPv4 available!
Let’s do NAT over NAT over NAT!
>2008
Containers!
Let’s do IPv4, what could go wrong?
2014
20 Years of IPv6
The year of IPv6?
December 2018
IPv6 in Linux 2.1.8
(Alpha)
~1996
IPv6 was (re)born
RFC 2460
December 1998
IPng was born
RFC 1883
December 1995
IPv6 - Standard 86!
RFC 8200
July 2017
A Kubernetes
cluster
on IPv6
● Is it really worth it?
● Infrastructure?
● Kubernetes itself
○ Does it run?
○ Pods, Services and
Ingress?
● Does my app / service work?
Kubernetes cluster Is it really worth it? Infrastructure
Kubernetes cluster Is it really worth it? Infrastructure
Kubernetes cluster Is it really worth it? Infrastructure
Kubernetes cluster Is it really worth it? Infrastructure
Kubernetes cluster Is it really worth it? Infrastructure
Your house is not
a datacenter*
*unless it’s a start up
Kubernetes cluster Is it really worth it? Infrastructure
Your house is not
a datacenter*
*unless it’s a start up
Kubernetes cluster Is it really worth it? Infrastructure
Your house is not
a datacenter*
*unless it’s a start up
Kubernetes cluster Is it really worth it? Infrastructure
Pets vs Cattle (again…)
Your house has pets
● Frog - 192.168.0.1/24
● Turtle - 192.168.0.2/24
● Scared Rabbit - 192.168.0.3/24
● Happy Dog - 192.168.0.4/24
● Apathetic Cat - 192.168.0.5/24
● Serious hamster - 192.168.0.6/24
● Hypnotoad - 192.168.0.7/24
Kubernetes cluster Is it really worth it? Infrastructure
Pets vs Cattle (again…)
Your house has pets
● Frog - 192.168.0.1/24
● Turtle - 192.168.0.2/24
● Scared Rabbit - 192.168.0.3/24
● Happy Dog - 192.168.0.4/24
● Apathetic Cat - 192.168.0.5/24
● Serious hamster - 192.168.0.6/24
● Hypnotoad - 192.168.0.7/24
Your datacenter has cattle
● Cows - 10.0.0.0/8
○ Black cows - 10.1.0.0/16
○ Brown cows - 10.2.0.0/16
○ White cows - 10.3.0.0/16
● Sheeps - 172.16.0.0/12
○ Excited Sheeps - 172.16.0.0/16
○ Sleepy Sheeps - 172.17.0.0/16
Kubernetes cluster Is it really worth it? Infrastructure
Pets vs Cattle (again…)
Your house has pets
● Frog - 192.168.0.1/24
● Turtle - 192.168.0.2/24
● Scared Rabbit - 192.168.0.3/24
● Happy Dog - 192.168.0.4/24
● Apathetic Cat - 192.168.0.5/24
● Serious hamster - 192.168.0.6/24
● Hypnotoad - 192.168.0.7/24
Your datacenter has cattle containers
● Containers - 10.0.0.0/8
○ Yellow - 10.1.0.0/16
○ Orange - 10.2.0.0/16
○ Red - 10.3.0.0/16
○ Bordeaux - 10.4.0.0/16
Kubernetes cluster Is it really worth it? Infrastructure
Pets vs Cattle (again…)
Your house has pets
● Frog - 192.168.0.1/24
● Turtle - 192.168.0.2/24
● Scared Rabbit - 192.168.0.3/24
● Happy Dog - 192.168.0.4/24
● Apathetic Cat - 192.168.0.5/24
● Serious hamster - 192.168.0.6/24
● Hypnotoad - 192.168.0.7/24
Your datacenter has cattle lots of containers
● Containers - 10.0.0.0/8
○ Yellow - 10.1.0.0/16
○ Orange - 10.2.0.0/16
○ Red - 10.3.0.0/16
○ Bordeaux - 10.4.0.0/16
○ Yellow 2 - 10.5.0.0/16
Kubernetes cluster Is it really worth it? Infrastructure
Pets vs Cattle (again…)
Your house has pets
● Frog - 192.168.0.1/24
● Turtle - 192.168.0.2/24
● Scared Rabbit - 192.168.0.3/24
● Happy Dog - 192.168.0.4/24
● Apathetic Cat - 192.168.0.5/24
● Serious hamster - 192.168.0.6/24
● Hypnotoad - 192.168.0.7/24
Your datacenter has cattle lots of more containers
● Containers - 10.0.0.0/8
○ Yellow - 10.1.0.0/16
○ Orange - 10.2.0.0/16
○ Red - 10.3.0.0/16
○ Bordeaux - 10.4.0.0/16
○ Yellow 2 - 10.5.0.0/16
○ Orange 2 - 10.6.0.0/16
○ Blue 16 - 10.20.0.0/16
Kubernetes cluster Is it really worth it? Infrastructure
Pets vs Cattle (again…)
Your house has pets
● Frog - 192.168.0.1/24
● Turtle - 192.168.0.2/24
● Scared Rabbit - 192.168.0.3/24
● Happy Dog - 192.168.0.4/24
● Apathetic Cat - 192.168.0.5/24
● Serious hamster - 192.168.0.6/24
● Hypnotoad - 192.168.0.7/24
Your datacenter has cattle lots of more and more containers
● Containers - 10.0.0.0/8
○ Yellow - 10.1.0.0/16
○ Orange - 10.2.0.0/16
○ Red - 10.3.0.0/16
○ Bordeaux - 10.4.0.0/16
○ Yellow 2 - 10.5.0.0/16
○ Orange 2 - 10.6.0.0/16
○ Blue 16 - 10.20.0.0/16
ErrNoIPv4
Please help
Kubernetes cluster Is it really worth it? Infrastructure
Pets vs Cattle (again…)
Your house has pets
● Frog - 192.168.0.1/24
● Turtle - 192.168.0.2/24
● Scared Rabbit - 192.168.0.3/24
● Happy Dog - 192.168.0.4/24
● Apathetic Cat - 192.168.0.5/24
● Serious hamster - 192.168.0.6/24
● Hypnotoad - 192.168.0.7/24
Your datacenter has cattle lots of more and more containers
● Containers - 10.0.0.0/8
○ Yellow - 10.1.0.0/16
○ Orange - 10.2.0.0/16
○ Red - 10.3.0.0/16
○ Bordeaux - 10.4.0.0/16
○ Yellow 2 - 10.5.0.0/16
○ Orange 2 - 10.6.0.0/16
○ Blue 16 - 10.20.0.0/16
ErrNoIPv4
Please help
No more IPv4s?! Let’s do NAT!
Kubernetes cluster Is it really worth it? Infrastructure
Pets vs Cattle (again…)
Your house has pets
● Frog - 192.168.0.1/24
● Turtle - 192.168.0.2/24
● Scared Rabbit - 192.168.0.3/24
● Happy Dog - 192.168.0.4/24
● Apathetic Cat - 192.168.0.5/24
● Serious hamster - 192.168.0.6/24
● Hypnotoad - 192.168.0.7/24
Your datacenter has cattle lots of more and more containers
● Containers - 10.0.0.0/8
○ Yellow - 10.1.0.0/16
○ Orange - 10.2.0.0/16
○ Red - 10.3.0.0/16
○ Bordeaux - 10.4.0.0/16
○ Yellow 2 - 10.5.0.0/16
○ Orange 2 - 10.6.0.0/16
○ Blue 16 - 10.20.0.0/16
ErrNoIPv4
Please help
No more IPv4s?! Let’s do NAT!
NAT
ISP
Is it really worth it? Infrastructure Kubernetes - Does it run?
Let’s assemble our cluster
Cloud
1. Does my OS support IPv6?...
On premises
Is it really worth it? Infrastructure Kubernetes - Does it run?
Let’s assemble our cluster
Cloud
1. Does my OS support IPv6?...
2. Do my servers support IPv6?... 2. Do cloud providers support IPv6?
○ AWS
○ GCE
On premises
Is it really worth it? Infrastructure Kubernetes - Does it run?
Let’s assemble our cluster
Cloud
1. Does my OS support IPv6?...
2. Do my servers support IPv6?...
3. Can and will my users use IPv6?
2. Do cloud providers support IPv6?
○ AWS
○ GCE
On premises
Is it really worth it? Infrastructure Kubernetes - Does it run?
Let’s assemble our cluster
Cloud
1. Does my OS support IPv6?...
2. Do my servers support IPv6?...
3. Can and will my users use IPv6?
2. Do cloud providers support IPv6?
○ AWS
○ GCE
On premises
Is it really worth it? Infrastructure Kubernetes - Does it run?
Let’s assemble our cluster
Cloud
1. Does my OS support IPv6?...
2. Do my servers support IPv6?...
3. Can and will my users use IPv6?
2. Do cloud providers support IPv6?
○ AWS
○ GCE
On premises
1 in 5!
Is it really worth it? Infrastructure Kubernetes - Does it run?
Let’s assemble our cluster
Cloud
1. Does my OS support IPv6?...
2. Do my servers support IPv6?...
3. Can and will my users use IPv6?
2. Do cloud provides support IPv6?
○ AWS
○ GCE
On premises
1 in 5!
Is it really worth it? Infrastructure Kubernetes - Does it run?
Let’s go
deep dive!
Is it really worth it? Infrastructure Kubernetes - Does it run?
Kubernetes cheat sheet
master
controller-manager
kube-apiserver
kube-scheduler
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
Is it really worth it? Infrastructure Kubernetes - Does it run?
1 - etcd
master
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
- 53 CLI options (etcd not etcdctl)
Is it really worth it? Infrastructure Kubernetes - Does it run?
1 - etcd
master
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
- 53 CLI options (etcd not etcdctl)
- 5 relevant for IPv6
- --advertise-client-urls 'http://localhost:2379'
- --initial-advertise-peer-urls 'http://localhost:2380'
- --initial-cluster 'default=http://localhost:2380'
- --listen-client-urls 'http://localhost:2379'
- --listen-peer-urls 'http://localhost:2380'
Is it really worth it? Infrastructure Kubernetes - Does it run?
1 - etcd
master
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
- 53 CLI options (etcd not etcdctl)
- 5 relevant for IPv6
- --advertise-client-urls 'http://localhost:2379'
- --initial-advertise-peer-urls 'http://localhost:2380'
- --initial-cluster 'default=http://localhost:2380'
- --listen-client-urls 'http://localhost:2379'
- --listen-peer-urls 'http://localhost:2380'
- Solution:
- “http://localhost:2380” -> “http://[::1]:2380”
Is it really worth it? Infrastructure Kubernetes - Does it run?
1 - etcd
master
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
- 53 CLI options (etcd not etcdctl)
- 5 relevant for IPv6
- --advertise-client-urls 'http://localhost:2379'
- --initial-advertise-peer-urls 'http://localhost:2380'
- --initial-cluster 'default=http://localhost:2380'
- --listen-client-urls 'http://localhost:2379'
- --listen-peer-urls 'http://localhost:2380'
- Solution:
- “http://localhost:2380” -> “http://[::1]:2380”
- Is that simple? (Yes)
Is it really worth it? Infrastructure Kubernetes - Does it run?
1 - etcd
master
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
- 53 CLI options (etcd not etcdctl)
- 5 relevant for IPv6
- --advertise-client-urls 'http://localhost:2379'
- --initial-advertise-peer-urls 'http://localhost:2380'
- --initial-cluster 'default=http://localhost:2380'
- --listen-client-urls 'http://localhost:2379'
- --listen-peer-urls 'http://localhost:2380'
- Solution:
- “http://localhost:2380” -> “http://[::1]:2380”
- Is that simple? (Yes)
- What about https? (L4 != L3)
Is it really worth it? Infrastructure Kubernetes - Does it run?
1 - etcd
master
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
- 53 CLI options (etcd not etcdctl)
- 5 relevant for IPv6
- --advertise-client-urls 'http://localhost:2379'
- --initial-advertise-peer-urls 'http://localhost:2380'
- --initial-cluster 'default=http://localhost:2380'
- --listen-client-urls 'http://localhost:2379'
- --listen-peer-urls 'http://localhost:2380'
- Solution:
- “http://localhost:2380” -> “http://[::1]:2380”
- Is that simple? (Yes)
- What about https? (L4 != L3)
- I meant the certificates! (Yes they are IPv6 aware)
Is it really worth it? Infrastructure Kubernetes - Does it run?
2 - kube-scheduler
master
controller-manager
kube-apiserver
kube-scheduler
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
- 32 CLI options
Is it really worth it? Infrastructure Kubernetes - Does it run?
2 - kube-scheduler
master
controller-manager
kube-apiserver
kube-scheduler
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
- 32 CLI options
- ~3 relevant for IPv6
- --address '0.0.0.0’
- --master 'http://127.0.0.1:8080’
- (--kubeconfig)
Is it really worth it? Infrastructure Kubernetes - Does it run?
2 - kube-scheduler
master
controller-manager
kube-apiserver
kube-scheduler
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
- 32 CLI options
- ~3 relevant for IPv6
- --address '0.0.0.0’
- --master 'http://127.0.0.1:8080’
- (--kubeconfig)
- Solution:
- “http://127.0.0.1:8080” -> “http://[::1]:8080”
Is it really worth it? Infrastructure Kubernetes - Does it run?
2 - kube-scheduler
master
controller-manager
kube-apiserver
kube-scheduler
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
- 32 CLI options
- ~3 relevant for IPv6
- --address '0.0.0.0’
- --master 'http://127.0.0.1:8080’
- (--kubeconfig)
- Solution:
- “http://127.0.0.1:8080” -> “http://[::1]:8080”
- “Simple” component
Is it really worth it? Infrastructure Kubernetes - Does it run?
3 - kube-apiserver
master
controller-manager
kube-apiserver
kube-scheduler
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
- 120 CLI options!
Is it really worth it? Infrastructure Kubernetes - Does it run?
3 - kube-apiserver
master
controller-manager
kube-apiserver
kube-scheduler
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
- 120 CLI options!
- ~5 relevant for IPv6
- --advertise-address ip
- --bind-address ‘0.0.0.0’
- --etcd-servers ‘stringSlice’
- --insecure-bind-address ‘0.0.0.0’
- --service-cluster-ip-range ipNet
Is it really worth it? Infrastructure Kubernetes - Does it run?
3 - kube-apiserver
master
controller-manager
kube-apiserver
kube-scheduler
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
- 120 CLI options!
- ~5 relevant for IPv6
- --advertise-address ip
- --bind-address ‘0.0.0.0’
- --etcd-servers ‘stringSlice’
- --insecure-bind-address ‘0.0.0.0’
- --service-cluster-ip-range ipNet
- Solution:
- “http://localhost:8080” -> “http://[::1]:8080”
- --service-cluster-ip-range fd03::/112
fd03:0000:0000:0000:0000:0000:0000:0000/112
Is it really worth it? Infrastructure Kubernetes - Does it run?
3 - kube-apiserver
master
controller-manager
kube-apiserver
kube-scheduler
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
- 120 CLI options!
- ~5 relevant for IPv6
- --advertise-address ip
- --bind-address ‘0.0.0.0’
- --etcd-servers ‘stringSlice’
- --insecure-bind-address ‘0.0.0.0’
- --service-cluster-ip-range ipNet
- Solution:
- “http://localhost:8080” -> “http://[::1]:8080”
- --service-cluster-ip-range fd03::/112
fd03:0000:0000:0000:0000:0000:0000:0000/112
frontend -> fd03::acde
backend -> fd03::f00d
kube-dns -> fd03::a (assigned by us)
Is it really worth it? Infrastructure Kubernetes - Does it run?
3 - kube-apiserver
master
controller-manager
kube-apiserver
kube-scheduler
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
worker
kubelet
kube-proxy
(cni plugin)
- 120 CLI options!
- ~5 relevant for IPv6
- --advertise-address ip
- --bind-address ‘0.0.0.0’
- --etcd-servers ‘stringSlice’
- --insecure-bind-address ‘0.0.0.0’
- --service-cluster-ip-range ipNet
- Solution:
- “http://localhost:8080” -> “http://[::1]:8080”
- --service-cluster-ip-range fd03::/112
fd03:0000:0000:0000:0000:0000:0000:0000/112
Do not try this at home with kubernetes < 1.8.0
https://github.com/kubernetes/kubernetes/pull/43586
Is it really worth it? Infrastructure Kubernetes - Does it run?
4 - controller-manager
master worker 2
kubelet
kube-proxy
(cni plugin)
controller-manager
kube-apiserver
kube-scheduler
worker 1
kubelet
kube-proxy
(cni plugin)
- 87 CLI options
Is it really worth it? Infrastructure Kubernetes - Does it run?
4 - controller-manager
VM network subnet - fd00::/16
master - fd00::b/16
controller-manager
kube-apiserver
kube-scheduler
worker 2 - fd00::d/16
kubelet
kube-proxy
(cni plugin)
worker 1 - fd00::c/16
kubelet
kube-proxy
(cni plugin)
- 87 CLI options
- ~5 relevant for IPv6
- --address ‘(0.0.0.0)’
- --allocate-node-cidrs ‘true’ (default: false)
- --cluster-cidr ‘fd02::/80’
- --node-cidr-mask-size ‘96’
- --service-cluster-ip-range ‘fd03::/112’
Is it really worth it? Infrastructure Kubernetes - Does it run?
4 - controller-manager
physical cluster - fd00::/16
master - fd00::b/16
controller-manager
kube-apiserver
kube-scheduler
worker 2 - fd00::d/16
kubelet
kube-proxy
(cni plugin)
worker 1 - fd00::c/16
kubelet
kube-proxy
(cni plugin)
services- fd03::/112
- 87 CLI options
- ~5 relevant for IPv6
- --address ‘(0.0.0.0)’
- --allocate-node-cidrs ‘true’ (default: false)
- --cluster-cidr ‘fd02::/80’
- --node-cidr-mask-size ‘96’
- --service-cluster-ip-range ‘fd03::/112’
Is it really worth it? Infrastructure Kubernetes - Does it run?
4 - controller-manager
physical cluster - fd00::/16
master - fd00::b/16
controller-manager
kube-apiserver
kube-scheduler
worker 2 - fd00::d/16
kubelet
kube-proxy
(cni plugin)
worker 1 - fd00::c/16
kubelet
kube-proxy
(cni plugin)
services- fd03::/112
pods (containers) - fd02::/80
- 87 CLI options
- ~5 relevant for IPv6
- --address ‘(0.0.0.0)’
- --allocate-node-cidrs ‘true’ (default: false)
- --cluster-cidr ‘fd02::/80’
- --node-cidr-mask-size ‘96’
- --service-cluster-ip-range ‘fd03::/112’
Is it really worth it? Infrastructure Kubernetes - Does it run?
4 - controller-manager
physical cluster - fd00::/16
master - fd00::b/16
controller-manager
kube-apiserver
kube-scheduler
worker 2 - fd00::d/16
kubelet
kube-proxy
(cni plugin)
worker 1 - fd00::c/16
kubelet
kube-proxy
(cni plugin)
services- fd03::/112
pods (containers) - fd02::/80
- 87 CLI options
- ~5 relevant for IPv6
- --address ‘(0.0.0.0)’
- --allocate-node-cidrs ‘true’ (default: false)
- --cluster-cidr ‘fd02::/80’
- --node-cidr-mask-size ‘96’
- --service-cluster-ip-range ‘fd03::/112’
Cluster CIDR
fd02:0:0:0:0:0:0:0/80
Is it really worth it? Infrastructure Kubernetes - Does it run?
4 - controller-manager
physical cluster - fd00::/16
master - fd00::b/16
controller-manager
kube-apiserver
kube-scheduler
worker 2 - fd00::d/16
kubelet
kube-proxy
(cni plugin)
worker 1 - fd00::c/16
kubelet
kube-proxy
(cni plugin)
services- fd03::/112
pods (containers) - fd02::/80
- 87 CLI options
- ~5 relevant for IPv6
- --address ‘(0.0.0.0)’
- --allocate-node-cidrs ‘true’ (default: false)
- --cluster-cidr ‘fd02::/80’
- --node-cidr-mask-size ‘96’
- --service-cluster-ip-range ‘fd03::/112’
Cluster CIDR
fd02:0:0:0:0:0:0:0/80
Pod CIDR - 1st node
fd02:0:0:0:0:0:0:0/96
Is it really worth it? Infrastructure Kubernetes - Does it run?
4 - controller-manager
physical cluster - fd00::/16
master - fd00::b/16
controller-manager
kube-apiserver
kube-scheduler
worker 2 - fd00::d/16
kubelet
kube-proxy
(cni plugin)
worker 1 - fd00::c/16
kubelet
kube-proxy
(cni plugin)
services- fd03::/112
pods (containers) - fd02::/80
- 87 CLI options
- ~5 relevant for IPv6
- --address ‘(0.0.0.0)’
- --allocate-node-cidrs ‘true’ (default: false)
- --cluster-cidr ‘fd02::/80’
- --node-cidr-mask-size ‘96’
- --service-cluster-ip-range ‘fd03::/112’
Cluster CIDR
fd02:0:0:0:0:0:0:0/80
Pod CIDR - 1st node
fd02:0:0:0:0:0:0:0/96
fd02::/96
Is it really worth it? Infrastructure Kubernetes - Does it run?
4 - controller-manager
physical cluster - fd00::/16
master - fd00::b/16
controller-manager
kube-apiserver
kube-scheduler
worker 2 - fd00::d/16
kubelet
kube-proxy
(cni plugin)
worker 1 - fd00::c/16
kubelet
kube-proxy
(cni plugin)
services- fd03::/112
pods (containers) - fd02::/80
fd02::/96 fd02:0:0:0:0:1::/96
- 87 CLI options
- ~5 relevant for IPv6
- --address ‘(0.0.0.0)’
- --allocate-node-cidrs ‘true’ (default: false)
- --cluster-cidr ‘fd02::/80’
- --node-cidr-mask-size ‘96’
- --service-cluster-ip-range ‘fd03::/112’
Cluster CIDR
fd02:0:0:0:0:0:0:0/80
Pod CIDR - 1st node
fd02:0:0:0:0:0:0:0/96
Pod CIDR - 2nd node
fd02:0:0:0:0:1:0:0/96
Is it really worth it? Infrastructure Kubernetes - Does it run?
4 - controller-manager
physical cluster - fd00::/16
master - fd00::b/16
controller-manager
kube-apiserver
kube-scheduler
worker 2 - fd00::d/16
kubelet
kube-proxy
(cni plugin)
worker 1 - fd00::c/16
kubelet
kube-proxy
(cni plugin)
services- fd03::/112
pods (containers) - fd02::/80
fd02::/96 fd02:0:0:0:0:1::/96
- 87 CLI options
- ~5 relevant for IPv6
- --address ‘(0.0.0.0)’
- --allocate-node-cidrs ‘true’ (default: false)
- --cluster-cidr ‘fd02::/80’
- --node-cidr-mask-size ‘96’
- --service-cluster-ip-range ‘fd03::/112’
Cluster CIDR
fd02:0:0:0:0:0:0:0/80
Pod CIDR - 1st node
fd02:0:0:0:0:0:0:0/96
Pod CIDR - 2nd node
fd02:0:0:0:0:1:0:0/96
...
Pod CIDR - 65536th node
fd02:0:0:0:0:ffff:0:0/96
Is it really worth it? Infrastructure Kubernetes - Does it run?
4 - controller-manager
physical cluster - fd00::/16
master - fd00::b/16
controller-manager
kube-apiserver
kube-scheduler
worker 2 - fd00::d/16
kubelet
kube-proxy
(cni plugin)
worker 1 - fd00::c/16
kubelet
kube-proxy
(cni plugin)
services- fd03::/112
pods (containers) - fd02::/80
fd02::/96 fd02:0:0:0:0:1::/96
- 87 CLI options
- ~5 relevant for IPv6
- --address ‘(0.0.0.0)’
- --allocate-node-cidrs ‘true’ (default: false)
- --cluster-cidr ‘fd02::/80’
- --node-cidr-mask-size ‘96’
- --service-cluster-ip-range ‘fd03::/112’
Cluster CIDR
fd02:0:0:0:0:0:0:0/80
Pod CIDR - 1st node
fd02:0:0:0:0:0:0:0/96
Pod CIDR - 2nd node
fd02:0:0:0:0:1:0:0/96
...
Pod CIDR - 65536th node
fd02:0:0:0:0:ffff:0:0/96
Is it really worth it? Infrastructure Kubernetes - Does it run?
5 - docker
controller-manager
kube-apiserver
kube-scheduler
worker 1
kubelet
kube-proxy
(cni plugin)
- a runtime container
- network plumbing made by:
- libnetwork (IPv6 only with IPv4)
- CNI
blog.kubernetes.io/2016/01/why-Kubernetes-doesnt-use-libnetwork.html
worker 2
kubelet
kube-proxy
(cni plugin)
Is it really worth it? Infrastructure Kubernetes - Does it run?
6 - cni plugin
master worker 2
kubelet
kube-proxy
(cni plugin)
controller-manager
kube-apiserver
kube-scheduler
worker 1
kubelet
kube-proxy
(cni plugin)
- choose your own flavour
- cilium (IPv6 as a first-class citizen)
- Pod addressing
- --allocate-node-cidrs=true
- --cluster-cidr fd02::/80
- --node-cidr-mask-size ‘96’
- Service routing
Is it really worth it? Infrastructure Kubernetes - Does it run?
7 - kube-proxy
master worker 2
kubelet
kube-proxy
(cni plugin)
controller-manager
kube-apiserver
kube-scheduler
worker 1
kubelet
kube-proxy
(cni plugin)
- No relevant options regarding IPv6
- Some CNI plugins rely on kube-proxy
(not cilium)
Is it really worth it? Infrastructure Kubernetes - Does it run?
8 - kubelet
master worker 2
kubelet
kube-proxy
(cni plugin)
controller-manager
kube-apiserver
kube-scheduler
worker 1
kubelet
kube-proxy
(cni plugin)
- 160 CLI options (winner!)
- ~3 relevant for IPv6
- --address (‘0.0.0.0’)
- --cluster-dns (‘fd03::a’)
- --node-ip (‘fd00::c’)
- K8s PR #45551
Is it really worth it? Infrastructure Kubernetes - Does it run?
Kubernetes cluster
master worker 2
kubelet
kube-proxy
(cni plugin)
controller-manager
kube-apiserver
kube-scheduler
worker 1
kubelet
kube-proxy
(cni plugin)
Is it really worth it? Infrastructure Kubernetes - Does it run?
Where’s kube-dns?
master worker 2
kubelet
kube-proxy
(cni plugin)
controller-manager
kube-apiserver
kube-scheduler
worker 1
kubelet
kube-proxy
(cni plugin)
(kube-dns) (kube-dns)
- DNS for the k8s cluster
- Serves all DNS requests
Is it really worth it? Infrastructure Kubernetes - Does it run?
Where’s kube-dns?
master worker 2
kubelet
kube-proxy
(cni plugin)
controller-manager
kube-apiserver
kube-scheduler
worker 1
kubelet
kube-proxy
(cni plugin)
(kube-dns) (kube-dns)
- DNS for the k8s cluster
- Serves all DNS requests
- Deployment k8s spec file
- Service k8s spec file
- 1 Change in Deployment file
- probe for AAAA instead of A
--probe=kubedns,[::1]:10053,kubernetes.default.svc.cluster.local,5,AAAA
--probe=dnsmasq,[::1]:53,kubernetes.default.svc.cluster.local,5,AAAA
Is it really worth it? Infrastructure Kubernetes - Does it run?
Where’s kube-dns?
master worker 2
kubelet
kube-proxy
(cni plugin)
controller-manager
kube-apiserver
kube-scheduler
worker 1
kubelet
kube-proxy
(cni plugin)
(kube-dns)
Is it really worth it? Infrastructure Kubernetes - Does it run?
Where’s ingress?
master worker 2
kubelet
kube-proxy
(cni plugin)
controller-manager
kube-apiserver
kube-scheduler
worker 1
kubelet
kube-proxy
(cni plugin)
(kube-dns)
- NGinx Ingress controller
- Exposes your pods to the outside
- Deployment k8s spec file
- Service k8s spec file
- No changes needed
Infrastructure Kubernetes - Does it run? Demo
Where’s ingress?
master worker 2
kubelet
kube-proxy
(cni plugin)
controller-manager
kube-apiserver
kube-scheduler
worker 1
kubelet
kube-proxy
(cni plugin)
(kube-dns)
Kubernetes - Does it run? Demo Final thoughts
Kubernetes cluster - demo!
worker 2worker 1
kube-dns guestbook
redis-masterredis-slave
Kubernetes - Does it run? Demo Final thoughts
Kubernetes cluster - demo!
worker 2worker 1
kube-dns guestbook
redis-masterredis-slave
Kubernetes - Does it run? Demo Final thoughts
Kubernetes cluster - demo!
worker 2worker 1
kube-dns guestbook
redis-masterredis-slave
Kubernetes - Does it run? Demo Final thoughts
Kubernetes cluster - demo!
worker 2worker 1
kube-dns guestbook
redis-masterredis-slave
Kubernetes - Does it run? Demo Final thoughts
Kubernetes cluster - demo!
worker 2worker 1
kube-dns guestbook
redis-masterredis-slave
Kubernetes - Does it run? Demo Final thoughts
Kubernetes cluster - demo!
worker 2worker 1
kube-dns guestbook
redis-masterredis-slave
Kubernetes - Does it run? Demo Final thoughts
Kubernetes cluster - demo!
worker 2worker 1
kube-dns guestbook
redis-masterredis-slave
Kubernetes - Does it run? Demo Final thoughts
Kubernetes cluster - demo!
worker 2worker 1
kube-dns guestbook
redis-masterredis-slave
Kubernetes - Does it run? Demo Final thoughts
Kubernetes cluster - demo!
worker 2worker 1
kube-dns guestbook
redis-masterredis-slave
Demo Final thoughts Questions?
Final thoughts
● Kubernetes has lots of CLI options!
Demo Final thoughts Questions?
Final thoughts
● Kubernetes has lots of CLI options!
● IPv6 is coming!
Demo Final thoughts Questions?
Final thoughts
● Kubernetes has lots of CLI options!
● IPv6 is coming!
● Kubernetes is getting ready
○ TODO:
■ Dual stack! - GH #27398
■ Kubelet’s node IP option with IPv6 - PR #45551
■ Waive IPv6 prefix size limit for cluster CIDR - PR #52033
■ Kubeadm
Demo Final thoughts Questions?
Final thoughts
● Kubernetes has lots of CLI options!
● IPv6 is coming!
● Kubernetes is getting ready
○ TODO:
■ Dual stack! - GH #27398
■ Kubelet’s node IP option with IPv6 - PR #45551
■ Waive IPv6 prefix size limit for cluster CIDR - PR #52033
■ Kubeadm
● Unless you try it you’ll never find out.
Final thoughts Questions? Cilium
Thank You!
Q & A
Coming next… @ 2:50 pm in Diamond Ballroom 6 (this room)
Cilium - Container Security and Networking Using BPF and XDP
By Thomas Graf, Covalent
André Martins
DM on twitter: @aanm__
We are on Booth 501
https://www.cilium.io
Image links
https://askgramps.org/files/2016/08/pets1.jpg
https://ytimg.googleusercontent.com/vi/zQFH6oSuJ5s/0.jpg
https://superuser.com/questions/43853/is-there-any-benefit-to-using-ipv6-on-my-home-netwo
rk
https://i.ytimg.com/vi/XbF-MBr0Vlk/maxresdefault.jpg
https://cdn-images-1.medium.com/max/1280/1*k8n7Jx9UaLRAxum9HMp8nQ.png
https://i2.wp.com/www.portaldelpuerto.cl/wp-content/uploads/2015/12/nota-2-4.jpg
https://i.imgflip.com/1ufhx7.jpg
https://static2.stuff.co.nz/1189425600/528/63528.jpg
http://99percentinvisible.org/app/uploads/2015/09/Multicolored-containers-3144199355.jpg
http://4.bp.blogspot.com/-BkvoGJR1g-s/VkDsq8dPk3I/AAAAAAAACCA/ct-WAkIvWGw/s640/
Unknown.jpg
https://whitneymarquise.files.wordpress.com/2017/02/img_7041.jpg
http://www.stickpng.com/assets/images/58480a44cef1014c0b5e4917.png
http://sdtimes.com/wp-content/uploads/2017/01/0123.sdt-etcd.png
https://peerigon.github.io/talks/2016-10-18-webandwine-introduction-to-docker/assets/large_
v-trans.png
https://regmedia.co.uk/2015/06/15/silicon-valley-servers.jpg
https://regmedia.co.uk/2015/06/15/silicon-valley-fire.jpg
http://agnesforever.com.ng/wp-content/uploads/2015/10/Multi-Level-Marketing.jpg
https://i2.wp.com/res.cloudinary.com/samcogan/image/upload/v1495227346/Virtual_machine
_rkM2_P7ql_mldz0b.png?fit=512%2C512
https://pbs.twimg.com/profile_images/567774844322713600/tYoVju31.png
https://i.pinimg.com/originals/b4/bc/fe/b4bcfe622564b100b664503322874d73.jpg
https://pixabay.com/en/persons-users-multiple-three-red-23875/
Our experiences deploying kubernetes with IPv6

More Related Content

Similar to Our experiences deploying kubernetes with IPv6

介绍 Percona 服务器 XtraDB 和 Xtrabackup
介绍 Percona 服务器 XtraDB 和 Xtrabackup介绍 Percona 服务器 XtraDB 和 Xtrabackup
介绍 Percona 服务器 XtraDB 和 XtrabackupYUCHENG HU
 
Networking in Kubernetes
Networking in KubernetesNetworking in Kubernetes
Networking in KubernetesMinhan Xia
 
Intro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps WorkshopIntro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps WorkshopWeaveworks
 
2016-JAN-28 -- High Performance Production Databases on Ceph
2016-JAN-28 -- High Performance Production Databases on Ceph2016-JAN-28 -- High Performance Production Databases on Ceph
2016-JAN-28 -- High Performance Production Databases on CephCeph Community
 
Tutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting routerTutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting routerShu Sugimoto
 
Containerizing MongoDB with kubernetes
Containerizing MongoDB with kubernetesContainerizing MongoDB with kubernetes
Containerizing MongoDB with kubernetesBrian McNamara
 
Boyd Hemphill (Tsunami) Geekfest
Boyd Hemphill (Tsunami) GeekfestBoyd Hemphill (Tsunami) Geekfest
Boyd Hemphill (Tsunami) GeekfestW2O Group
 
Tectonic Summit 2016: Kubernetes 1.5 and Beyond
Tectonic Summit 2016: Kubernetes 1.5 and BeyondTectonic Summit 2016: Kubernetes 1.5 and Beyond
Tectonic Summit 2016: Kubernetes 1.5 and BeyondCoreOS
 
CodiLime Tech Talk - Adam Kułagowski: IPv6 - introduction
CodiLime Tech Talk - Adam Kułagowski: IPv6 - introductionCodiLime Tech Talk - Adam Kułagowski: IPv6 - introduction
CodiLime Tech Talk - Adam Kułagowski: IPv6 - introductionCodiLime
 
Heroku to Kubernetes & Gihub to Gitlab success story
Heroku to Kubernetes & Gihub to Gitlab success storyHeroku to Kubernetes & Gihub to Gitlab success story
Heroku to Kubernetes & Gihub to Gitlab success storyJérémy Wimsingues
 
PLNOG 3: Fredy Kunzler - IPv6. Now!
PLNOG 3: Fredy Kunzler - IPv6. Now!PLNOG 3: Fredy Kunzler - IPv6. Now!
PLNOG 3: Fredy Kunzler - IPv6. Now!PROIDEA
 
Kubernetes: Managed or Not Managed?
Kubernetes: Managed or Not Managed?Kubernetes: Managed or Not Managed?
Kubernetes: Managed or Not Managed?Mathieu Herbert
 
Are we really ready to turn off IPv4?
Are we really ready to turn off IPv4?Are we really ready to turn off IPv4?
Are we really ready to turn off IPv4?APNIC
 
Matt Franklin - Apache Software (Geekfest)
Matt Franklin - Apache Software (Geekfest)Matt Franklin - Apache Software (Geekfest)
Matt Franklin - Apache Software (Geekfest)W2O Group
 
Embedding Qt
Embedding QtEmbedding Qt
Embedding QtFSCONS
 

Similar to Our experiences deploying kubernetes with IPv6 (20)

Cwmg
CwmgCwmg
Cwmg
 
介绍 Percona 服务器 XtraDB 和 Xtrabackup
介绍 Percona 服务器 XtraDB 和 Xtrabackup介绍 Percona 服务器 XtraDB 和 Xtrabackup
介绍 Percona 服务器 XtraDB 和 Xtrabackup
 
Networking in Kubernetes
Networking in KubernetesNetworking in Kubernetes
Networking in Kubernetes
 
Intro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps WorkshopIntro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps Workshop
 
2016-JAN-28 -- High Performance Production Databases on Ceph
2016-JAN-28 -- High Performance Production Databases on Ceph2016-JAN-28 -- High Performance Production Databases on Ceph
2016-JAN-28 -- High Performance Production Databases on Ceph
 
Tutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting routerTutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting router
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
Containerizing MongoDB with kubernetes
Containerizing MongoDB with kubernetesContainerizing MongoDB with kubernetes
Containerizing MongoDB with kubernetes
 
Boyd Hemphill (Tsunami) Geekfest
Boyd Hemphill (Tsunami) GeekfestBoyd Hemphill (Tsunami) Geekfest
Boyd Hemphill (Tsunami) Geekfest
 
Tectonic Summit 2016: Kubernetes 1.5 and Beyond
Tectonic Summit 2016: Kubernetes 1.5 and BeyondTectonic Summit 2016: Kubernetes 1.5 and Beyond
Tectonic Summit 2016: Kubernetes 1.5 and Beyond
 
CodiLime Tech Talk - Adam Kułagowski: IPv6 - introduction
CodiLime Tech Talk - Adam Kułagowski: IPv6 - introductionCodiLime Tech Talk - Adam Kułagowski: IPv6 - introduction
CodiLime Tech Talk - Adam Kułagowski: IPv6 - introduction
 
Heroku to Kubernetes & Gihub to Gitlab success story
Heroku to Kubernetes & Gihub to Gitlab success storyHeroku to Kubernetes & Gihub to Gitlab success story
Heroku to Kubernetes & Gihub to Gitlab success story
 
IPv6 in cellular networks - Jordi Palet
IPv6 in cellular networks - Jordi PaletIPv6 in cellular networks - Jordi Palet
IPv6 in cellular networks - Jordi Palet
 
Pinto+Stratopan+Love
Pinto+Stratopan+LovePinto+Stratopan+Love
Pinto+Stratopan+Love
 
PLNOG 3: Fredy Kunzler - IPv6. Now!
PLNOG 3: Fredy Kunzler - IPv6. Now!PLNOG 3: Fredy Kunzler - IPv6. Now!
PLNOG 3: Fredy Kunzler - IPv6. Now!
 
Kubernetes: Managed or Not Managed?
Kubernetes: Managed or Not Managed?Kubernetes: Managed or Not Managed?
Kubernetes: Managed or Not Managed?
 
Kubernetes 101 Workshop
Kubernetes 101 WorkshopKubernetes 101 Workshop
Kubernetes 101 Workshop
 
Are we really ready to turn off IPv4?
Are we really ready to turn off IPv4?Are we really ready to turn off IPv4?
Are we really ready to turn off IPv4?
 
Matt Franklin - Apache Software (Geekfest)
Matt Franklin - Apache Software (Geekfest)Matt Franklin - Apache Software (Geekfest)
Matt Franklin - Apache Software (Geekfest)
 
Embedding Qt
Embedding QtEmbedding Qt
Embedding Qt
 

Recently uploaded

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024SynarionITSolutions
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 

Recently uploaded (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 

Our experiences deploying kubernetes with IPv6

  • 1.
  • 2. Our Experiences deploying Kubernetes with IPv6 André Martins (@aanm__) Software Engineer Covalent IO
  • 3. What to expect from this talk? • Quick history of IPv6 • IPv6 in kubernetes – Can I run it? • Step by step tutorial + Demo
  • 4. IPv6 history IPv4 is not enough? IETF - ROAD November 1991 IPv6 in Linux 2.6.12 (Stable) ~2005 No more IPv4 available! Let’s do NAT over NAT over NAT! >2008 Containers! Let’s do IPv4, what could go wrong? 2014 20 Years of IPv6 The year of IPv6? December 2018 IPv6 in Linux 2.1.8 (Alpha) ~1996 IPv6 was (re)born RFC 2460 December 1998 IPng was born RFC 1883 December 1995 IPv6 - Standard 86! RFC 8200 July 2017
  • 5. A Kubernetes cluster on IPv6 ● Is it really worth it? ● Infrastructure? ● Kubernetes itself ○ Does it run? ○ Pods, Services and Ingress? ● Does my app / service work?
  • 6. Kubernetes cluster Is it really worth it? Infrastructure
  • 7. Kubernetes cluster Is it really worth it? Infrastructure
  • 8. Kubernetes cluster Is it really worth it? Infrastructure
  • 9. Kubernetes cluster Is it really worth it? Infrastructure
  • 10. Kubernetes cluster Is it really worth it? Infrastructure Your house is not a datacenter* *unless it’s a start up
  • 11. Kubernetes cluster Is it really worth it? Infrastructure Your house is not a datacenter* *unless it’s a start up
  • 12. Kubernetes cluster Is it really worth it? Infrastructure Your house is not a datacenter* *unless it’s a start up
  • 13. Kubernetes cluster Is it really worth it? Infrastructure Pets vs Cattle (again…) Your house has pets ● Frog - 192.168.0.1/24 ● Turtle - 192.168.0.2/24 ● Scared Rabbit - 192.168.0.3/24 ● Happy Dog - 192.168.0.4/24 ● Apathetic Cat - 192.168.0.5/24 ● Serious hamster - 192.168.0.6/24 ● Hypnotoad - 192.168.0.7/24
  • 14. Kubernetes cluster Is it really worth it? Infrastructure Pets vs Cattle (again…) Your house has pets ● Frog - 192.168.0.1/24 ● Turtle - 192.168.0.2/24 ● Scared Rabbit - 192.168.0.3/24 ● Happy Dog - 192.168.0.4/24 ● Apathetic Cat - 192.168.0.5/24 ● Serious hamster - 192.168.0.6/24 ● Hypnotoad - 192.168.0.7/24 Your datacenter has cattle ● Cows - 10.0.0.0/8 ○ Black cows - 10.1.0.0/16 ○ Brown cows - 10.2.0.0/16 ○ White cows - 10.3.0.0/16 ● Sheeps - 172.16.0.0/12 ○ Excited Sheeps - 172.16.0.0/16 ○ Sleepy Sheeps - 172.17.0.0/16
  • 15. Kubernetes cluster Is it really worth it? Infrastructure Pets vs Cattle (again…) Your house has pets ● Frog - 192.168.0.1/24 ● Turtle - 192.168.0.2/24 ● Scared Rabbit - 192.168.0.3/24 ● Happy Dog - 192.168.0.4/24 ● Apathetic Cat - 192.168.0.5/24 ● Serious hamster - 192.168.0.6/24 ● Hypnotoad - 192.168.0.7/24 Your datacenter has cattle containers ● Containers - 10.0.0.0/8 ○ Yellow - 10.1.0.0/16 ○ Orange - 10.2.0.0/16 ○ Red - 10.3.0.0/16 ○ Bordeaux - 10.4.0.0/16
  • 16. Kubernetes cluster Is it really worth it? Infrastructure Pets vs Cattle (again…) Your house has pets ● Frog - 192.168.0.1/24 ● Turtle - 192.168.0.2/24 ● Scared Rabbit - 192.168.0.3/24 ● Happy Dog - 192.168.0.4/24 ● Apathetic Cat - 192.168.0.5/24 ● Serious hamster - 192.168.0.6/24 ● Hypnotoad - 192.168.0.7/24 Your datacenter has cattle lots of containers ● Containers - 10.0.0.0/8 ○ Yellow - 10.1.0.0/16 ○ Orange - 10.2.0.0/16 ○ Red - 10.3.0.0/16 ○ Bordeaux - 10.4.0.0/16 ○ Yellow 2 - 10.5.0.0/16
  • 17. Kubernetes cluster Is it really worth it? Infrastructure Pets vs Cattle (again…) Your house has pets ● Frog - 192.168.0.1/24 ● Turtle - 192.168.0.2/24 ● Scared Rabbit - 192.168.0.3/24 ● Happy Dog - 192.168.0.4/24 ● Apathetic Cat - 192.168.0.5/24 ● Serious hamster - 192.168.0.6/24 ● Hypnotoad - 192.168.0.7/24 Your datacenter has cattle lots of more containers ● Containers - 10.0.0.0/8 ○ Yellow - 10.1.0.0/16 ○ Orange - 10.2.0.0/16 ○ Red - 10.3.0.0/16 ○ Bordeaux - 10.4.0.0/16 ○ Yellow 2 - 10.5.0.0/16 ○ Orange 2 - 10.6.0.0/16 ○ Blue 16 - 10.20.0.0/16
  • 18. Kubernetes cluster Is it really worth it? Infrastructure Pets vs Cattle (again…) Your house has pets ● Frog - 192.168.0.1/24 ● Turtle - 192.168.0.2/24 ● Scared Rabbit - 192.168.0.3/24 ● Happy Dog - 192.168.0.4/24 ● Apathetic Cat - 192.168.0.5/24 ● Serious hamster - 192.168.0.6/24 ● Hypnotoad - 192.168.0.7/24 Your datacenter has cattle lots of more and more containers ● Containers - 10.0.0.0/8 ○ Yellow - 10.1.0.0/16 ○ Orange - 10.2.0.0/16 ○ Red - 10.3.0.0/16 ○ Bordeaux - 10.4.0.0/16 ○ Yellow 2 - 10.5.0.0/16 ○ Orange 2 - 10.6.0.0/16 ○ Blue 16 - 10.20.0.0/16 ErrNoIPv4 Please help
  • 19. Kubernetes cluster Is it really worth it? Infrastructure Pets vs Cattle (again…) Your house has pets ● Frog - 192.168.0.1/24 ● Turtle - 192.168.0.2/24 ● Scared Rabbit - 192.168.0.3/24 ● Happy Dog - 192.168.0.4/24 ● Apathetic Cat - 192.168.0.5/24 ● Serious hamster - 192.168.0.6/24 ● Hypnotoad - 192.168.0.7/24 Your datacenter has cattle lots of more and more containers ● Containers - 10.0.0.0/8 ○ Yellow - 10.1.0.0/16 ○ Orange - 10.2.0.0/16 ○ Red - 10.3.0.0/16 ○ Bordeaux - 10.4.0.0/16 ○ Yellow 2 - 10.5.0.0/16 ○ Orange 2 - 10.6.0.0/16 ○ Blue 16 - 10.20.0.0/16 ErrNoIPv4 Please help No more IPv4s?! Let’s do NAT!
  • 20. Kubernetes cluster Is it really worth it? Infrastructure Pets vs Cattle (again…) Your house has pets ● Frog - 192.168.0.1/24 ● Turtle - 192.168.0.2/24 ● Scared Rabbit - 192.168.0.3/24 ● Happy Dog - 192.168.0.4/24 ● Apathetic Cat - 192.168.0.5/24 ● Serious hamster - 192.168.0.6/24 ● Hypnotoad - 192.168.0.7/24 Your datacenter has cattle lots of more and more containers ● Containers - 10.0.0.0/8 ○ Yellow - 10.1.0.0/16 ○ Orange - 10.2.0.0/16 ○ Red - 10.3.0.0/16 ○ Bordeaux - 10.4.0.0/16 ○ Yellow 2 - 10.5.0.0/16 ○ Orange 2 - 10.6.0.0/16 ○ Blue 16 - 10.20.0.0/16 ErrNoIPv4 Please help No more IPv4s?! Let’s do NAT! NAT ISP
  • 21. Is it really worth it? Infrastructure Kubernetes - Does it run? Let’s assemble our cluster Cloud 1. Does my OS support IPv6?... On premises
  • 22. Is it really worth it? Infrastructure Kubernetes - Does it run? Let’s assemble our cluster Cloud 1. Does my OS support IPv6?... 2. Do my servers support IPv6?... 2. Do cloud providers support IPv6? ○ AWS ○ GCE On premises
  • 23. Is it really worth it? Infrastructure Kubernetes - Does it run? Let’s assemble our cluster Cloud 1. Does my OS support IPv6?... 2. Do my servers support IPv6?... 3. Can and will my users use IPv6? 2. Do cloud providers support IPv6? ○ AWS ○ GCE On premises
  • 24. Is it really worth it? Infrastructure Kubernetes - Does it run? Let’s assemble our cluster Cloud 1. Does my OS support IPv6?... 2. Do my servers support IPv6?... 3. Can and will my users use IPv6? 2. Do cloud providers support IPv6? ○ AWS ○ GCE On premises
  • 25. Is it really worth it? Infrastructure Kubernetes - Does it run? Let’s assemble our cluster Cloud 1. Does my OS support IPv6?... 2. Do my servers support IPv6?... 3. Can and will my users use IPv6? 2. Do cloud providers support IPv6? ○ AWS ○ GCE On premises 1 in 5!
  • 26. Is it really worth it? Infrastructure Kubernetes - Does it run? Let’s assemble our cluster Cloud 1. Does my OS support IPv6?... 2. Do my servers support IPv6?... 3. Can and will my users use IPv6? 2. Do cloud provides support IPv6? ○ AWS ○ GCE On premises 1 in 5!
  • 27. Is it really worth it? Infrastructure Kubernetes - Does it run? Let’s go deep dive!
  • 28. Is it really worth it? Infrastructure Kubernetes - Does it run? Kubernetes cheat sheet master controller-manager kube-apiserver kube-scheduler worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin)
  • 29. Is it really worth it? Infrastructure Kubernetes - Does it run? 1 - etcd master worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) - 53 CLI options (etcd not etcdctl)
  • 30. Is it really worth it? Infrastructure Kubernetes - Does it run? 1 - etcd master worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) - 53 CLI options (etcd not etcdctl) - 5 relevant for IPv6 - --advertise-client-urls 'http://localhost:2379' - --initial-advertise-peer-urls 'http://localhost:2380' - --initial-cluster 'default=http://localhost:2380' - --listen-client-urls 'http://localhost:2379' - --listen-peer-urls 'http://localhost:2380'
  • 31. Is it really worth it? Infrastructure Kubernetes - Does it run? 1 - etcd master worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) - 53 CLI options (etcd not etcdctl) - 5 relevant for IPv6 - --advertise-client-urls 'http://localhost:2379' - --initial-advertise-peer-urls 'http://localhost:2380' - --initial-cluster 'default=http://localhost:2380' - --listen-client-urls 'http://localhost:2379' - --listen-peer-urls 'http://localhost:2380' - Solution: - “http://localhost:2380” -> “http://[::1]:2380”
  • 32. Is it really worth it? Infrastructure Kubernetes - Does it run? 1 - etcd master worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) - 53 CLI options (etcd not etcdctl) - 5 relevant for IPv6 - --advertise-client-urls 'http://localhost:2379' - --initial-advertise-peer-urls 'http://localhost:2380' - --initial-cluster 'default=http://localhost:2380' - --listen-client-urls 'http://localhost:2379' - --listen-peer-urls 'http://localhost:2380' - Solution: - “http://localhost:2380” -> “http://[::1]:2380” - Is that simple? (Yes)
  • 33. Is it really worth it? Infrastructure Kubernetes - Does it run? 1 - etcd master worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) - 53 CLI options (etcd not etcdctl) - 5 relevant for IPv6 - --advertise-client-urls 'http://localhost:2379' - --initial-advertise-peer-urls 'http://localhost:2380' - --initial-cluster 'default=http://localhost:2380' - --listen-client-urls 'http://localhost:2379' - --listen-peer-urls 'http://localhost:2380' - Solution: - “http://localhost:2380” -> “http://[::1]:2380” - Is that simple? (Yes) - What about https? (L4 != L3)
  • 34. Is it really worth it? Infrastructure Kubernetes - Does it run? 1 - etcd master worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) - 53 CLI options (etcd not etcdctl) - 5 relevant for IPv6 - --advertise-client-urls 'http://localhost:2379' - --initial-advertise-peer-urls 'http://localhost:2380' - --initial-cluster 'default=http://localhost:2380' - --listen-client-urls 'http://localhost:2379' - --listen-peer-urls 'http://localhost:2380' - Solution: - “http://localhost:2380” -> “http://[::1]:2380” - Is that simple? (Yes) - What about https? (L4 != L3) - I meant the certificates! (Yes they are IPv6 aware)
  • 35. Is it really worth it? Infrastructure Kubernetes - Does it run? 2 - kube-scheduler master controller-manager kube-apiserver kube-scheduler worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) - 32 CLI options
  • 36. Is it really worth it? Infrastructure Kubernetes - Does it run? 2 - kube-scheduler master controller-manager kube-apiserver kube-scheduler worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) - 32 CLI options - ~3 relevant for IPv6 - --address '0.0.0.0’ - --master 'http://127.0.0.1:8080’ - (--kubeconfig)
  • 37. Is it really worth it? Infrastructure Kubernetes - Does it run? 2 - kube-scheduler master controller-manager kube-apiserver kube-scheduler worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) - 32 CLI options - ~3 relevant for IPv6 - --address '0.0.0.0’ - --master 'http://127.0.0.1:8080’ - (--kubeconfig) - Solution: - “http://127.0.0.1:8080” -> “http://[::1]:8080”
  • 38. Is it really worth it? Infrastructure Kubernetes - Does it run? 2 - kube-scheduler master controller-manager kube-apiserver kube-scheduler worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) - 32 CLI options - ~3 relevant for IPv6 - --address '0.0.0.0’ - --master 'http://127.0.0.1:8080’ - (--kubeconfig) - Solution: - “http://127.0.0.1:8080” -> “http://[::1]:8080” - “Simple” component
  • 39. Is it really worth it? Infrastructure Kubernetes - Does it run? 3 - kube-apiserver master controller-manager kube-apiserver kube-scheduler worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) - 120 CLI options!
  • 40. Is it really worth it? Infrastructure Kubernetes - Does it run? 3 - kube-apiserver master controller-manager kube-apiserver kube-scheduler worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) - 120 CLI options! - ~5 relevant for IPv6 - --advertise-address ip - --bind-address ‘0.0.0.0’ - --etcd-servers ‘stringSlice’ - --insecure-bind-address ‘0.0.0.0’ - --service-cluster-ip-range ipNet
  • 41. Is it really worth it? Infrastructure Kubernetes - Does it run? 3 - kube-apiserver master controller-manager kube-apiserver kube-scheduler worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) - 120 CLI options! - ~5 relevant for IPv6 - --advertise-address ip - --bind-address ‘0.0.0.0’ - --etcd-servers ‘stringSlice’ - --insecure-bind-address ‘0.0.0.0’ - --service-cluster-ip-range ipNet - Solution: - “http://localhost:8080” -> “http://[::1]:8080” - --service-cluster-ip-range fd03::/112 fd03:0000:0000:0000:0000:0000:0000:0000/112
  • 42. Is it really worth it? Infrastructure Kubernetes - Does it run? 3 - kube-apiserver master controller-manager kube-apiserver kube-scheduler worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) - 120 CLI options! - ~5 relevant for IPv6 - --advertise-address ip - --bind-address ‘0.0.0.0’ - --etcd-servers ‘stringSlice’ - --insecure-bind-address ‘0.0.0.0’ - --service-cluster-ip-range ipNet - Solution: - “http://localhost:8080” -> “http://[::1]:8080” - --service-cluster-ip-range fd03::/112 fd03:0000:0000:0000:0000:0000:0000:0000/112 frontend -> fd03::acde backend -> fd03::f00d kube-dns -> fd03::a (assigned by us)
  • 43. Is it really worth it? Infrastructure Kubernetes - Does it run? 3 - kube-apiserver master controller-manager kube-apiserver kube-scheduler worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) worker kubelet kube-proxy (cni plugin) - 120 CLI options! - ~5 relevant for IPv6 - --advertise-address ip - --bind-address ‘0.0.0.0’ - --etcd-servers ‘stringSlice’ - --insecure-bind-address ‘0.0.0.0’ - --service-cluster-ip-range ipNet - Solution: - “http://localhost:8080” -> “http://[::1]:8080” - --service-cluster-ip-range fd03::/112 fd03:0000:0000:0000:0000:0000:0000:0000/112 Do not try this at home with kubernetes < 1.8.0 https://github.com/kubernetes/kubernetes/pull/43586
  • 44. Is it really worth it? Infrastructure Kubernetes - Does it run? 4 - controller-manager master worker 2 kubelet kube-proxy (cni plugin) controller-manager kube-apiserver kube-scheduler worker 1 kubelet kube-proxy (cni plugin) - 87 CLI options
  • 45. Is it really worth it? Infrastructure Kubernetes - Does it run? 4 - controller-manager VM network subnet - fd00::/16 master - fd00::b/16 controller-manager kube-apiserver kube-scheduler worker 2 - fd00::d/16 kubelet kube-proxy (cni plugin) worker 1 - fd00::c/16 kubelet kube-proxy (cni plugin) - 87 CLI options - ~5 relevant for IPv6 - --address ‘(0.0.0.0)’ - --allocate-node-cidrs ‘true’ (default: false) - --cluster-cidr ‘fd02::/80’ - --node-cidr-mask-size ‘96’ - --service-cluster-ip-range ‘fd03::/112’
  • 46. Is it really worth it? Infrastructure Kubernetes - Does it run? 4 - controller-manager physical cluster - fd00::/16 master - fd00::b/16 controller-manager kube-apiserver kube-scheduler worker 2 - fd00::d/16 kubelet kube-proxy (cni plugin) worker 1 - fd00::c/16 kubelet kube-proxy (cni plugin) services- fd03::/112 - 87 CLI options - ~5 relevant for IPv6 - --address ‘(0.0.0.0)’ - --allocate-node-cidrs ‘true’ (default: false) - --cluster-cidr ‘fd02::/80’ - --node-cidr-mask-size ‘96’ - --service-cluster-ip-range ‘fd03::/112’
  • 47. Is it really worth it? Infrastructure Kubernetes - Does it run? 4 - controller-manager physical cluster - fd00::/16 master - fd00::b/16 controller-manager kube-apiserver kube-scheduler worker 2 - fd00::d/16 kubelet kube-proxy (cni plugin) worker 1 - fd00::c/16 kubelet kube-proxy (cni plugin) services- fd03::/112 pods (containers) - fd02::/80 - 87 CLI options - ~5 relevant for IPv6 - --address ‘(0.0.0.0)’ - --allocate-node-cidrs ‘true’ (default: false) - --cluster-cidr ‘fd02::/80’ - --node-cidr-mask-size ‘96’ - --service-cluster-ip-range ‘fd03::/112’
  • 48. Is it really worth it? Infrastructure Kubernetes - Does it run? 4 - controller-manager physical cluster - fd00::/16 master - fd00::b/16 controller-manager kube-apiserver kube-scheduler worker 2 - fd00::d/16 kubelet kube-proxy (cni plugin) worker 1 - fd00::c/16 kubelet kube-proxy (cni plugin) services- fd03::/112 pods (containers) - fd02::/80 - 87 CLI options - ~5 relevant for IPv6 - --address ‘(0.0.0.0)’ - --allocate-node-cidrs ‘true’ (default: false) - --cluster-cidr ‘fd02::/80’ - --node-cidr-mask-size ‘96’ - --service-cluster-ip-range ‘fd03::/112’ Cluster CIDR fd02:0:0:0:0:0:0:0/80
  • 49. Is it really worth it? Infrastructure Kubernetes - Does it run? 4 - controller-manager physical cluster - fd00::/16 master - fd00::b/16 controller-manager kube-apiserver kube-scheduler worker 2 - fd00::d/16 kubelet kube-proxy (cni plugin) worker 1 - fd00::c/16 kubelet kube-proxy (cni plugin) services- fd03::/112 pods (containers) - fd02::/80 - 87 CLI options - ~5 relevant for IPv6 - --address ‘(0.0.0.0)’ - --allocate-node-cidrs ‘true’ (default: false) - --cluster-cidr ‘fd02::/80’ - --node-cidr-mask-size ‘96’ - --service-cluster-ip-range ‘fd03::/112’ Cluster CIDR fd02:0:0:0:0:0:0:0/80 Pod CIDR - 1st node fd02:0:0:0:0:0:0:0/96
  • 50. Is it really worth it? Infrastructure Kubernetes - Does it run? 4 - controller-manager physical cluster - fd00::/16 master - fd00::b/16 controller-manager kube-apiserver kube-scheduler worker 2 - fd00::d/16 kubelet kube-proxy (cni plugin) worker 1 - fd00::c/16 kubelet kube-proxy (cni plugin) services- fd03::/112 pods (containers) - fd02::/80 - 87 CLI options - ~5 relevant for IPv6 - --address ‘(0.0.0.0)’ - --allocate-node-cidrs ‘true’ (default: false) - --cluster-cidr ‘fd02::/80’ - --node-cidr-mask-size ‘96’ - --service-cluster-ip-range ‘fd03::/112’ Cluster CIDR fd02:0:0:0:0:0:0:0/80 Pod CIDR - 1st node fd02:0:0:0:0:0:0:0/96 fd02::/96
  • 51. Is it really worth it? Infrastructure Kubernetes - Does it run? 4 - controller-manager physical cluster - fd00::/16 master - fd00::b/16 controller-manager kube-apiserver kube-scheduler worker 2 - fd00::d/16 kubelet kube-proxy (cni plugin) worker 1 - fd00::c/16 kubelet kube-proxy (cni plugin) services- fd03::/112 pods (containers) - fd02::/80 fd02::/96 fd02:0:0:0:0:1::/96 - 87 CLI options - ~5 relevant for IPv6 - --address ‘(0.0.0.0)’ - --allocate-node-cidrs ‘true’ (default: false) - --cluster-cidr ‘fd02::/80’ - --node-cidr-mask-size ‘96’ - --service-cluster-ip-range ‘fd03::/112’ Cluster CIDR fd02:0:0:0:0:0:0:0/80 Pod CIDR - 1st node fd02:0:0:0:0:0:0:0/96 Pod CIDR - 2nd node fd02:0:0:0:0:1:0:0/96
  • 52. Is it really worth it? Infrastructure Kubernetes - Does it run? 4 - controller-manager physical cluster - fd00::/16 master - fd00::b/16 controller-manager kube-apiserver kube-scheduler worker 2 - fd00::d/16 kubelet kube-proxy (cni plugin) worker 1 - fd00::c/16 kubelet kube-proxy (cni plugin) services- fd03::/112 pods (containers) - fd02::/80 fd02::/96 fd02:0:0:0:0:1::/96 - 87 CLI options - ~5 relevant for IPv6 - --address ‘(0.0.0.0)’ - --allocate-node-cidrs ‘true’ (default: false) - --cluster-cidr ‘fd02::/80’ - --node-cidr-mask-size ‘96’ - --service-cluster-ip-range ‘fd03::/112’ Cluster CIDR fd02:0:0:0:0:0:0:0/80 Pod CIDR - 1st node fd02:0:0:0:0:0:0:0/96 Pod CIDR - 2nd node fd02:0:0:0:0:1:0:0/96 ... Pod CIDR - 65536th node fd02:0:0:0:0:ffff:0:0/96
  • 53. Is it really worth it? Infrastructure Kubernetes - Does it run? 4 - controller-manager physical cluster - fd00::/16 master - fd00::b/16 controller-manager kube-apiserver kube-scheduler worker 2 - fd00::d/16 kubelet kube-proxy (cni plugin) worker 1 - fd00::c/16 kubelet kube-proxy (cni plugin) services- fd03::/112 pods (containers) - fd02::/80 fd02::/96 fd02:0:0:0:0:1::/96 - 87 CLI options - ~5 relevant for IPv6 - --address ‘(0.0.0.0)’ - --allocate-node-cidrs ‘true’ (default: false) - --cluster-cidr ‘fd02::/80’ - --node-cidr-mask-size ‘96’ - --service-cluster-ip-range ‘fd03::/112’ Cluster CIDR fd02:0:0:0:0:0:0:0/80 Pod CIDR - 1st node fd02:0:0:0:0:0:0:0/96 Pod CIDR - 2nd node fd02:0:0:0:0:1:0:0/96 ... Pod CIDR - 65536th node fd02:0:0:0:0:ffff:0:0/96
  • 54. Is it really worth it? Infrastructure Kubernetes - Does it run? 5 - docker controller-manager kube-apiserver kube-scheduler worker 1 kubelet kube-proxy (cni plugin) - a runtime container - network plumbing made by: - libnetwork (IPv6 only with IPv4) - CNI blog.kubernetes.io/2016/01/why-Kubernetes-doesnt-use-libnetwork.html worker 2 kubelet kube-proxy (cni plugin)
  • 55. Is it really worth it? Infrastructure Kubernetes - Does it run? 6 - cni plugin master worker 2 kubelet kube-proxy (cni plugin) controller-manager kube-apiserver kube-scheduler worker 1 kubelet kube-proxy (cni plugin) - choose your own flavour - cilium (IPv6 as a first-class citizen) - Pod addressing - --allocate-node-cidrs=true - --cluster-cidr fd02::/80 - --node-cidr-mask-size ‘96’ - Service routing
  • 56. Is it really worth it? Infrastructure Kubernetes - Does it run? 7 - kube-proxy master worker 2 kubelet kube-proxy (cni plugin) controller-manager kube-apiserver kube-scheduler worker 1 kubelet kube-proxy (cni plugin) - No relevant options regarding IPv6 - Some CNI plugins rely on kube-proxy (not cilium)
  • 57. Is it really worth it? Infrastructure Kubernetes - Does it run? 8 - kubelet master worker 2 kubelet kube-proxy (cni plugin) controller-manager kube-apiserver kube-scheduler worker 1 kubelet kube-proxy (cni plugin) - 160 CLI options (winner!) - ~3 relevant for IPv6 - --address (‘0.0.0.0’) - --cluster-dns (‘fd03::a’) - --node-ip (‘fd00::c’) - K8s PR #45551
  • 58. Is it really worth it? Infrastructure Kubernetes - Does it run? Kubernetes cluster master worker 2 kubelet kube-proxy (cni plugin) controller-manager kube-apiserver kube-scheduler worker 1 kubelet kube-proxy (cni plugin)
  • 59. Is it really worth it? Infrastructure Kubernetes - Does it run? Where’s kube-dns? master worker 2 kubelet kube-proxy (cni plugin) controller-manager kube-apiserver kube-scheduler worker 1 kubelet kube-proxy (cni plugin) (kube-dns) (kube-dns) - DNS for the k8s cluster - Serves all DNS requests
  • 60. Is it really worth it? Infrastructure Kubernetes - Does it run? Where’s kube-dns? master worker 2 kubelet kube-proxy (cni plugin) controller-manager kube-apiserver kube-scheduler worker 1 kubelet kube-proxy (cni plugin) (kube-dns) (kube-dns) - DNS for the k8s cluster - Serves all DNS requests - Deployment k8s spec file - Service k8s spec file - 1 Change in Deployment file - probe for AAAA instead of A --probe=kubedns,[::1]:10053,kubernetes.default.svc.cluster.local,5,AAAA --probe=dnsmasq,[::1]:53,kubernetes.default.svc.cluster.local,5,AAAA
  • 61. Is it really worth it? Infrastructure Kubernetes - Does it run? Where’s kube-dns? master worker 2 kubelet kube-proxy (cni plugin) controller-manager kube-apiserver kube-scheduler worker 1 kubelet kube-proxy (cni plugin) (kube-dns)
  • 62. Is it really worth it? Infrastructure Kubernetes - Does it run? Where’s ingress? master worker 2 kubelet kube-proxy (cni plugin) controller-manager kube-apiserver kube-scheduler worker 1 kubelet kube-proxy (cni plugin) (kube-dns) - NGinx Ingress controller - Exposes your pods to the outside - Deployment k8s spec file - Service k8s spec file - No changes needed
  • 63. Infrastructure Kubernetes - Does it run? Demo Where’s ingress? master worker 2 kubelet kube-proxy (cni plugin) controller-manager kube-apiserver kube-scheduler worker 1 kubelet kube-proxy (cni plugin) (kube-dns)
  • 64. Kubernetes - Does it run? Demo Final thoughts Kubernetes cluster - demo! worker 2worker 1 kube-dns guestbook redis-masterredis-slave
  • 65. Kubernetes - Does it run? Demo Final thoughts Kubernetes cluster - demo! worker 2worker 1 kube-dns guestbook redis-masterredis-slave
  • 66. Kubernetes - Does it run? Demo Final thoughts Kubernetes cluster - demo! worker 2worker 1 kube-dns guestbook redis-masterredis-slave
  • 67. Kubernetes - Does it run? Demo Final thoughts Kubernetes cluster - demo! worker 2worker 1 kube-dns guestbook redis-masterredis-slave
  • 68. Kubernetes - Does it run? Demo Final thoughts Kubernetes cluster - demo! worker 2worker 1 kube-dns guestbook redis-masterredis-slave
  • 69. Kubernetes - Does it run? Demo Final thoughts Kubernetes cluster - demo! worker 2worker 1 kube-dns guestbook redis-masterredis-slave
  • 70. Kubernetes - Does it run? Demo Final thoughts Kubernetes cluster - demo! worker 2worker 1 kube-dns guestbook redis-masterredis-slave
  • 71. Kubernetes - Does it run? Demo Final thoughts Kubernetes cluster - demo! worker 2worker 1 kube-dns guestbook redis-masterredis-slave
  • 72. Kubernetes - Does it run? Demo Final thoughts Kubernetes cluster - demo! worker 2worker 1 kube-dns guestbook redis-masterredis-slave
  • 73. Demo Final thoughts Questions? Final thoughts ● Kubernetes has lots of CLI options!
  • 74. Demo Final thoughts Questions? Final thoughts ● Kubernetes has lots of CLI options! ● IPv6 is coming!
  • 75. Demo Final thoughts Questions? Final thoughts ● Kubernetes has lots of CLI options! ● IPv6 is coming! ● Kubernetes is getting ready ○ TODO: ■ Dual stack! - GH #27398 ■ Kubelet’s node IP option with IPv6 - PR #45551 ■ Waive IPv6 prefix size limit for cluster CIDR - PR #52033 ■ Kubeadm
  • 76. Demo Final thoughts Questions? Final thoughts ● Kubernetes has lots of CLI options! ● IPv6 is coming! ● Kubernetes is getting ready ○ TODO: ■ Dual stack! - GH #27398 ■ Kubelet’s node IP option with IPv6 - PR #45551 ■ Waive IPv6 prefix size limit for cluster CIDR - PR #52033 ■ Kubeadm ● Unless you try it you’ll never find out.
  • 77. Final thoughts Questions? Cilium Thank You! Q & A Coming next… @ 2:50 pm in Diamond Ballroom 6 (this room) Cilium - Container Security and Networking Using BPF and XDP By Thomas Graf, Covalent André Martins DM on twitter: @aanm__ We are on Booth 501 https://www.cilium.io
  • 78. Image links https://askgramps.org/files/2016/08/pets1.jpg https://ytimg.googleusercontent.com/vi/zQFH6oSuJ5s/0.jpg https://superuser.com/questions/43853/is-there-any-benefit-to-using-ipv6-on-my-home-netwo rk https://i.ytimg.com/vi/XbF-MBr0Vlk/maxresdefault.jpg https://cdn-images-1.medium.com/max/1280/1*k8n7Jx9UaLRAxum9HMp8nQ.png https://i2.wp.com/www.portaldelpuerto.cl/wp-content/uploads/2015/12/nota-2-4.jpg https://i.imgflip.com/1ufhx7.jpg https://static2.stuff.co.nz/1189425600/528/63528.jpg http://99percentinvisible.org/app/uploads/2015/09/Multicolored-containers-3144199355.jpg http://4.bp.blogspot.com/-BkvoGJR1g-s/VkDsq8dPk3I/AAAAAAAACCA/ct-WAkIvWGw/s640/ Unknown.jpg https://whitneymarquise.files.wordpress.com/2017/02/img_7041.jpg http://www.stickpng.com/assets/images/58480a44cef1014c0b5e4917.png http://sdtimes.com/wp-content/uploads/2017/01/0123.sdt-etcd.png https://peerigon.github.io/talks/2016-10-18-webandwine-introduction-to-docker/assets/large_ v-trans.png https://regmedia.co.uk/2015/06/15/silicon-valley-servers.jpg https://regmedia.co.uk/2015/06/15/silicon-valley-fire.jpg http://agnesforever.com.ng/wp-content/uploads/2015/10/Multi-Level-Marketing.jpg https://i2.wp.com/res.cloudinary.com/samcogan/image/upload/v1495227346/Virtual_machine _rkM2_P7ql_mldz0b.png?fit=512%2C512 https://pbs.twimg.com/profile_images/567774844322713600/tYoVju31.png https://i.pinimg.com/originals/b4/bc/fe/b4bcfe622564b100b664503322874d73.jpg https://pixabay.com/en/persons-users-multiple-three-red-23875/