Kubernetes 101 Workshop
-
Upload
bret-mcgowen -
Category
Technology
-
view
634 -
download
2
Transcript of Kubernetes 101 Workshop
![Page 1: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/1.jpg)
Containing Container Chaos with Kubernetes
Bret McGowenGoogle@bretmcg
Carter MorganGoogle@_askcarter
Workshop setup: http://github.com/bretmcg/kubernetes-workshop
![Page 2: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/2.jpg)
2@kubernetesio @bretmcg @_askcarter
Agenda09:00 - 10:30 Containers and Kubernetes overview
10:30 - 10 :45 - BREAK
10:45 - 12:00 - Kubernetes 101
12:00 - 01:00 - Lunch!
01:00 - 02:30 - Kubernetes in Production
02:30 - 02:45 - BREAK
02:45 - 04:00 - Kubernetes in Production, cont’d
![Page 3: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/3.jpg)
33
What’s in this for you...
![Page 4: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/4.jpg)
44
Let's go back in time...
![Page 5: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/5.jpg)
5
Shared machines Chroots, ulimits, and nice
Noisy neighbors: a real problemLimited our ability to share
The fleet got largerInefficiency hurts more at scale
Share harder!
ca. 2002 App-specific machine poolsInefficient and painful to manage
Good fences make good neighbors
![Page 6: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/6.jpg)
6
Everything we do is about isolation
Namespacing is secondaryc.f. github.com/google/lmctfy
We evolved our system, made mistakes, learned lessons
Docker
The time is right to share our experiences, and to learn from yours
ca. 2006 Google developed cgroupsInescapable resource isolationEnables better sharing
![Page 7: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/7.jpg)
7
job hello_world = {
runtime = { cell = 'ic' } // Cell (cluster) to run in
binary = '.../hello_world_webserver' // Program to run
args = { port = '%port%' } // Command line parameters
requirements = { // Resource requirements
ram = 100M
disk = 100M
cpu = 0.1
}
replicas = 5 // Number of tasks
}
10000
Borg - Developer View
![Page 8: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/8.jpg)
8
web browsers
BorgMaster
link shard
UI shardBorgMaster
link shard
UI shardBorgMaster
link shard
UI shardBorgMaster
link shard
UI shard
Scheduler
borgcfg web browsers
scheduler
Borglet Borglet Borglet Borglet
Config file
BorgMaster
link shard
UI shard
persistent store (Paxos)
Binary
Borg
What justhappened?
![Page 9: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/9.jpg)
9
Hello world!
Hello world!
Hello world!
Hello world!Hello
world! Hello world! Hello
world!
Hello world!
Hello world!
Hello world!
Hello world!
Hello world!
Hello world!
Hello world!
Hello world!
Hello world!
Hello world!Hello world!
Hello world!
Hello world!
Hello world!
Hello world!
Hello world! Hello
world!
Hello world!
Hello world!
Hello world!
Image by Connie Zhou
Hello world!
Hello world!
Hello world! Hello
world!
Hello world! Hello
world!
Hello world!
Hello world!
Hello world!
Hello world!
Hello world! Hello
world!
Hello world! Hello
world!
Hello world!
Hello world!
Hello world!
Hello world!
Hello world! Hello
world!
Hello world! Hello
world!
Hello world!
Hello world!
![Page 10: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/10.jpg)
10
Developer View
![Page 11: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/11.jpg)
11
Data center as one machineMachines are just resource boundaries
![Page 12: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/12.jpg)
12@kubernetesio @bretmcg @_askcarter
The App (Monolith)
nginx
monolith
![Page 13: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/13.jpg)
13@kubernetesio @bretmcg @_askcarter
The App (Microservices)
nginx
helloauth
![Page 14: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/14.jpg)
1414
Containers
![Page 15: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/15.jpg)
15@kubernetesio @bretmcg @_askcarter
Old Way: Shared Machines
No isolation
No namespacing
Common libs
Highly coupled apps and OS
kernel
libs
app
app app
app
![Page 16: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/16.jpg)
16@kubernetesio @bretmcg @_askcarter
Old Way: Virtual Machines
Some isolation
Inefficient
Still highly coupled to the guest OS
Hard to manage app
libskernel
libs
app app
kernel
app
libs
libskernel
kernel
![Page 17: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/17.jpg)
17@kubernetesio @bretmcg @_askcarter
New Way: Containers
libs
app
kernel
libs
app
libs
app
libs
app
![Page 18: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/18.jpg)
18@kubernetesio @bretmcg @_askcarter
But what ARE they?
Containers share the same operating system kernel
Container images are stateless and contain all dependencies▪ static, portable binaries▪ constructed from layered filesystems
Containers provide isolation (from each other and from the host) Resources (CPU, RAM, Disk, etc.) Users Filesystem Network
![Page 19: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/19.jpg)
19
Why containers?
• Performance• Repeatability• Isolation• Quality of service• Accounting• Portability
A fundamentally different way of managing applications
late binding vs. early binding
Images by Connie Zhou
![Page 20: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/20.jpg)
2020
Packaging and Distributing Apps demo
![Page 21: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/21.jpg)
2121
LabWorkshop setupandContainerizing your applicationhttp://github.com/bretmcg/kubernetes-workshop
![Page 22: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/22.jpg)
2222
But that's just one machine!
Discovery
ScalingSecurity
Monitoring Configuration
SchedulingHealth
![Page 23: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/23.jpg)
23
https://www.flickr.com/photos/greeblie/2224507899
We’ve been there...
23
![Page 24: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/24.jpg)
Now that we have containers...Isolation: Keep jobs from interfering with each other
Scheduling: Where should my job be run?
Lifecycle: Keep my job running
Discovery: Where is my job now?
Constituency: Who is part of my job?
Scale-up: Making my jobs bigger or smaller
Auth{n,z}: Who can do things to my job?
Monitoring: What’s happening with my job?
Health: How is my job feeling?
![Page 25: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/25.jpg)
25@kubernetesio @bretmcg @_askcarter
Kubernetes
Manage applications, not machines
Open source, container orchestrator
Supports multiple cloud and bare-metal environments
Inspired and informed by Google’s experiences and internal systems
![Page 26: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/26.jpg)
Design principles
Declarative > imperative: State your desired results, let the system actuate
Control loops: Observe, rectify, repeat
Simple > Complex: Try to do as little as possible
Modularity: Components, interfaces, & plugins
Legacy compatible: Requiring apps to change is a non-starter
Network-centric: IP addresses are cheap
No grouping: Labels are the only groups
Bulk > hand-crafted: Manage your workload in bulk
Open > Closed: Open Source, standards, REST, JSON, etc.
![Page 27: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/27.jpg)
2727
Kubernetes Made Easy demo
![Page 28: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/28.jpg)
2828
Pods
![Page 29: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/29.jpg)
29@kubernetesio @bretmcg @_askcarter
PodsLogical Application
Pod
![Page 30: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/30.jpg)
30@kubernetesio @bretmcg @_askcarter
PodsLogical Application• One or more containers
Pod
![Page 31: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/31.jpg)
31@kubernetesio @bretmcg @_askcarter
PodsLogical Application• One or more containers
Pod
nginx
monolith
![Page 32: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/32.jpg)
32@kubernetesio @bretmcg @_askcarter
PodsLogical Application• One or more containers
and volumes
Pod
nginx
monolith
![Page 33: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/33.jpg)
33@kubernetesio @bretmcg @_askcarter
PodsLogical Application• One or more containers
and volumes
Pod
nginx
monolith
NFSiSCSIGCE
![Page 34: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/34.jpg)
34@kubernetesio @bretmcg @_askcarter
PodsLogical Application• One or more containers
and volumes• Shared namespaces
Pod
nginx
monolith
NFSiSCSIGCE
![Page 35: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/35.jpg)
35@kubernetesio @bretmcg @_askcarter
PodsLogical Application• One or more containers
and volumes• Shared namespaces• One IP per pod
Pod
nginx
monolith
NFSiSCSIGCE
10.10.1.100
![Page 36: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/36.jpg)
36@kubernetesio @bretmcg @_askcarter
PodsLogical Application• One or more containers
and volumes• Shared namespaces• One IP per pod
Pod
nginx
monolith
NFSiSCSIGCE
10.10.1.100
![Page 37: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/37.jpg)
3737
LabCreating and managing podshttp://github.com/bretmcg/kubernetes-workshop
![Page 38: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/38.jpg)
3838
Health checks
![Page 39: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/39.jpg)
39@kubernetesio @bretmcg @_askcarter
Monitoring and Health Checks
Node
Kubelet PodPodapp v1
![Page 40: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/40.jpg)
40@kubernetesio @bretmcg @_askcarter
Monitoring and Health Checks
Hey, app v1... You alive?
Node
Kubelet Podapp v1app v1
![Page 41: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/41.jpg)
41@kubernetesio @bretmcg @_askcarter
Monitoring and Health Checks
Node
Kubelet Nope!Pod
app v1app v1
![Page 42: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/42.jpg)
42@kubernetesio @bretmcg @_askcarter
Monitoring and Health Checks
OK, then I’m going to restart you...
Node
Kubelet Podapp v1app v1
![Page 43: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/43.jpg)
43@kubernetesio @bretmcg @_askcarter
Monitoring and Health Checks
Node
Kubelet Pod
![Page 44: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/44.jpg)
44@kubernetesio @bretmcg @_askcarter
Monitoring and Health Checks
Node
Kubelet Podapp v1
![Page 45: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/45.jpg)
45@kubernetesio @bretmcg @_askcarter
Monitoring and Health Checks
Node
Kubelet
Hey, app v1... You alive?
Podapp v1
![Page 46: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/46.jpg)
46@kubernetesio @bretmcg @_askcarter
Monitoring and Health Checks
Node
Kubelet Yes!Pod
app v1
![Page 47: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/47.jpg)
47@kubernetesio @bretmcg @_askcarter
Monitoring and Health Checks
Node
Kubelet Podapp v1
![Page 48: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/48.jpg)
4848
LabMonitoring and health checkshttp://github.com/bretmcg/kubernetes-workshop
![Page 49: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/49.jpg)
4949
Secrets
![Page 50: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/50.jpg)
50@kubernetesio @bretmcg @_askcarter
Secrets and Configmaps
Kubernetes Master
etcdAPI
Server
Node
Kubeletsecret
$ kubectl create secret generic tls-certs --from-file=tls/
![Page 51: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/51.jpg)
51@kubernetesio @bretmcg @_askcarter
Secrets and Configmaps
Kubernetes Master
etcdAPI
Server
Node
Kubeletpod
$ kubectl create -f pods/secure-monolith.yaml
![Page 52: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/52.jpg)
52@kubernetesio @bretmcg @_askcarter
Secrets and Configmaps
Kubernetes Master
etcdAPI
Server
Node
KubeletAPI
Server
Node
Kubelet Pod
Pod
![Page 53: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/53.jpg)
53@kubernetesio @bretmcg @_askcarter
Secrets and Configmaps
Kubernetes Master
etcdAPI
Server
Node
KubeletAPI
Server
Node
Kubelet Pod
Podsecret
![Page 54: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/54.jpg)
54@kubernetesio @bretmcg @_askcarter
Secrets and Configmaps
Kubernetes Master
etcdAPI
Server
Node
KubeletAPI
Server
Node
Kubelet Pod
Pod
/etc/tls
secret
![Page 55: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/55.jpg)
55@kubernetesio @bretmcg @_askcarter
Secrets and Configmaps
Kubernetes Master
etcdAPI
Server
Node
Kubelet
Node
Kubelet Pod
Pod
/etc/tls/etc/tls
10.10.1.100
secret
API Server
![Page 56: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/56.jpg)
56@kubernetesio @bretmcg @_askcarter
Secrets and Configmaps
Kubernetes Master
etcdAPI
Server
Node
KubeletAPI
Server
Node
Kubelet Pod
Pod
/etc/tls
nginx
10.10.1.100
secret
![Page 57: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/57.jpg)
5757
LabManaging application configurations and secretshttp://github.com/bretmcg/kubernetes-workshop
![Page 58: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/58.jpg)
5858
Services
![Page 59: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/59.jpg)
59@kubernetesio @bretmcg @_askcarter
Services
Node1 Node3Node2
Podhello
Service
Podhello
Podhello
![Page 60: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/60.jpg)
60@kubernetesio @bretmcg @_askcarter
ServicesPersistent Endpoint for Pods
Node1 Node3Node2
Podhello
Service
Podhello
Podhello
![Page 61: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/61.jpg)
61@kubernetesio @bretmcg @_askcarter
Services
Node1 Node3Node2
Podhello
Service
Podhello
Podhello
Persistent Endpoint for Pods• Use Labels to
Select Pods
![Page 62: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/62.jpg)
62@kubernetesio @bretmcg @_askcarter
LabelsArbitrary meta-data attached to Kubernetes object
Pod
hello
Pod
hello
labels: version: v1 track: stable
labels: version: v1 track: test
![Page 63: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/63.jpg)
63@kubernetesio @bretmcg @_askcarter
Labelsselector: “version=v1”
Pod
hello
Pod
hello
labels: version: v1 track: stable
labels: version: v1 track: test
![Page 64: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/64.jpg)
64@kubernetesio @bretmcg @_askcarter
Labelsselector: “track=stable”
Pod
hello
Pod
hello
labels: version: v1 track: stable
labels: version: v1 track: test
![Page 65: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/65.jpg)
65@kubernetesio @bretmcg @_askcarter
ServicesPersistent Endpoint for Pods• Use Labels to
Select Pods• Internal or
External IPsNode1 Node3Node2
Podhello
Service
Podhello
Podhello
![Page 66: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/66.jpg)
6666
LabCreating and managing serviceshttp://github.com/bretmcg/kubernetes-workshop
![Page 67: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/67.jpg)
6767
Recap
![Page 68: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/68.jpg)
68@kubernetesio @bretmcg @_askcarter
Kubernetes
Manage applications, not machines
Open source, container orchestrator Supports multiple cloud and bare-metal
environments
Inspired and informed by Google’s experiences and internal systems
![Page 69: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/69.jpg)
69@kubernetesio @bretmcg @_askcarter
machine-1
machine-2
machine-3
frontend middleware backend
Physical Infrastructure
![Page 70: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/70.jpg)
70@kubernetesio @bretmcg @_askcarter
frontend
middleware
backend
Kubernetes API: Unified Compute Substrate
Logical Infrastructure
![Page 71: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/71.jpg)
71@kubernetesio @bretmcg @_askcarter
Goal: Write once, run anywhere*
Don’t force apps to know about concepts that are cloud-provider-specific
Examples of this:● Network model● Ingress● Service load-balancers● PersistentVolumes
* approximately
Workload Portability
![Page 72: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/72.jpg)
72@kubernetesio @bretmcg @_askcarter
Top 0.01% of all GitHub projects
1200+ externalprojects based on
k8s
Companies Contributing
Companies Using
690+unique contributors
Community
![Page 73: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/73.jpg)
73@kubernetesio @bretmcg @_askcarter
PodsLogical Application• One or more containers
and volumes• Shared namespaces• One IP per pod
Pod
nginx
monolith
NFSiSCSIGCE
10.10.1.100
![Page 74: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/74.jpg)
74@kubernetesio @bretmcg @_askcarter
Monitoring and Health Checks
Hey, app v1... You alive?
Node
Kubelet Podapp v1app v1
![Page 75: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/75.jpg)
75@kubernetesio @bretmcg @_askcarter
Secrets and Configmaps
Kubernetes Master
etcdAPI
Server
Node
Kubeletsecret
$ kubectl create secret generic tls-certs --from-file=tls/
![Page 76: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/76.jpg)
76@kubernetesio @bretmcg @_askcarter
ServicesPersistent Endpoint for Pods• Use Labels to
Select Pods• Internal or
External IPsNode1 Node3Node2
Podhello
Service
Podhello
Podhello
![Page 77: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/77.jpg)
77@kubernetesio @bretmcg @_askcarter
LabelsArbitrary meta-data attached to Kubernetes object
Pod
hello
Pod
hello
labels: version: v1 track: stable
labels: version: v1 track: test
![Page 78: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/78.jpg)
Kubernetes in Production
![Page 79: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/79.jpg)
7979
Deployments
![Page 80: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/80.jpg)
80@kubernetesio @bretmcg @_askcarter
Drive current state towards desired stateDeployments
Node1 Node2 Node3
Podhello
app: helloreplicas: 1
![Page 81: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/81.jpg)
81@kubernetesio @bretmcg @_askcarter
Drive current state towards desired stateDeployments
Node1 Node2 Node3
Podhello
app: helloreplicas: 3
![Page 82: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/82.jpg)
82@kubernetesio @bretmcg @_askcarter
Drive current state towards desired stateDeployments
Node1 Node2 Node3
Podhello
app: helloreplicas: 3
Podhello
Podhello
![Page 83: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/83.jpg)
83@kubernetesio @bretmcg @_askcarter
Drive current state towards desired stateDeployments
Node1 Node2 Node3
Podhello
app: helloreplicas: 3
Podhello
![Page 84: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/84.jpg)
84@kubernetesio @bretmcg @_askcarter
Drive current state towards desired stateDeployments
Node1 Node2 Node3
Podhello
app: helloreplicas: 3
Podhello
Podhello
![Page 85: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/85.jpg)
85@kubernetesio @bretmcg @_askcarter
Drive current state towards desired stateDeployments
Node1 Node2 Node3
Podhello
app: helloreplicas: 3
Podhello
Podhello
Podhello
![Page 86: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/86.jpg)
86@kubernetesio @bretmcg @_askcarter
Drive current state towards desired stateDeployments
Node1 Node2 Node3
Podhello
app: helloreplicas: 3
Podhello
Podhello
![Page 87: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/87.jpg)
8787
LabCreating and managing deploymentshttp://github.com/bretmcg/kubernetes-workshop
![Page 88: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/88.jpg)
8888
Rolling Updates
![Page 89: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/89.jpg)
89@kubernetesio @bretmcg @_askcarter
Rolling Update
Node1 Node3Node2
ghostPod
app v1
Service
ghost
Podapp v1
Podapp v1
![Page 90: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/90.jpg)
90@kubernetesio @bretmcg @_askcarter
Rolling Update
Node1 Node3Node2
ghostPod
app v1
Service
ghost
Podapp v1
Podapp v1
Podapp v2
![Page 91: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/91.jpg)
91@kubernetesio @bretmcg @_askcarter
Rolling Update
Node1 Node3Node2
ghostPod
app v1
Service
ghost
Podapp v1
Podapp v1
Podapp v2
![Page 92: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/92.jpg)
92@kubernetesio @bretmcg @_askcarter
Rolling Update
Node1 Node3Node2
ghostPod
app v1
Service
ghost
Podapp v1
Podapp v1
Podapp v2
![Page 93: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/93.jpg)
93@kubernetesio @bretmcg @_askcarter
Rolling Update
Node1 Node3Node2
Service
ghost
Podapp v1
Podapp v1
Podapp v2
![Page 94: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/94.jpg)
94@kubernetesio @bretmcg @_askcarter
Rolling Update
Node1 Node3Node2
Service
ghost
Podapp v1
Podapp v1
Podapp v2
Podapp v2
![Page 95: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/95.jpg)
95@kubernetesio @bretmcg @_askcarter
Rolling Update
Node1 Node3Node2
Service
ghost
Podapp v1
Podapp v1
Podapp v2
Podapp v2
![Page 96: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/96.jpg)
96@kubernetesio @bretmcg @_askcarter
Rolling Update
Node1 Node3Node2
Service
ghost
Podapp v1
Podapp v1
Podapp v2
Podapp v2
![Page 97: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/97.jpg)
97@kubernetesio @bretmcg @_askcarter
Rolling Update
Node1 Node3Node2
Service
Podapp v1
Podapp v2
Podapp v2
![Page 98: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/98.jpg)
98@kubernetesio @bretmcg @_askcarter
Rolling Update
Node1 Node3Node2
Service
Podapp v1
Podapp v2
Podapp v2
Podapp v2
![Page 99: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/99.jpg)
99@kubernetesio @bretmcg @_askcarter
Rolling Update
Node1 Node3Node2
Service
Podapp v1
Podapp v2
Podapp v2
Podapp v2
![Page 100: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/100.jpg)
100@kubernetesio @bretmcg @_askcarter
Rolling Update
Node1 Node3Node2
Service
Podapp v1
Podapp v2
Podapp v2
Podapp v2
![Page 101: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/101.jpg)
101@kubernetesio @bretmcg @_askcarter
Rolling Update
Node1 Node3Node2
Service
Podapp v2
Podapp v2
Podapp v2
![Page 102: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/102.jpg)
102102
LabRolling out updateshttp://github.com/bretmcg/kubernetes-workshop
![Page 103: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/103.jpg)
103103
Implementing a CI/CD Pipeline on K8s
![Page 104: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/104.jpg)
104@kubernetesio @bretmcg @_askcarter
1. Check in code
2. Build an Image
3. Test Image
4. Push Image to registry
5. Apply change to manifest files
Automating Deployments
![Page 105: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/105.jpg)
105105
LabImplementing a CI/CD Pipeline on Kuberneteshttps://github.com/GoogleCloudPlatform/continuous-deployment-on-kubernetes
![Page 106: Kubernetes 101 Workshop](https://reader030.fdocuments.in/reader030/viewer/2022021502/587585731a28ab901c8b4a1d/html5/thumbnails/106.jpg)
Thank you!
kubernetes.io
@bretmcg @_askcarter