Containing Infrastructure
The Internet on Kubernetes
Brandon Philips
CTO & Co-Founder, CoreOS
@BrandonPhilips
Slide 2
Slide 2 text
3,424,000,000
Internet Users
Source: https://www.infoq.com/news/2014/01/IDC-software-developers
Slide 3
Slide 3 text
29,000,000
Software Developers and IT Practioners
Source: http://www.internetlivestats.com/internet-users/
Slide 4
Slide 4 text
We are Outnumbered!
Slide 5
Slide 5 text
238,975,082
New Internet Users in 2016
Source: http://www.internetlivestats.com/internet-users/
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
Documents
Commerce
Communications
Slide 8
Slide 8 text
~100,000,000
Servers Worldwide
Slide 9
Slide 9 text
3 Per Person
In the Software and IT Industry
Slide 10
Slide 10 text
100+ Per Person
At the Internet Giants
Slide 11
Slide 11 text
How do they do it?
Slide 12
Slide 12 text
Software Systems:
Containers, Clustering, Monitoring
Enabling Teams To:
Organize, Specialize, Take Risks
Slide 13
Slide 13 text
you
Slide 14
Slide 14 text
you as a sw engineer
Slide 15
Slide 15 text
your
with Ada.Text_IO;
procedure Hello_World is
use Ada.Text_IO;
begin
Put_Line("Hello, world!");
end;
#include
int main()
{
printf("Hello, world!\n");
}
package main
import "fmt"
func main() {
fmt.Println("Hello, world!")
}
Slide 16
Slide 16 text
your container
image
Slide 17
Slide 17 text
your /bin/java
/opt/app.jar
/lib/libc
Slide 18
Slide 18 text
your /bin/python
/opt/app.py
/lib/libc
Slide 19
Slide 19 text
your
quay.io/coreos/etcd
Slide 20
Slide 20 text
your
quay.io/coreos/etcd
sha256:d474e8c57737
Slide 21
Slide 21 text
your
d474e8c57737625c
Signed By: Alice
Slide 22
Slide 22 text
you as an ops engineer
Slide 23
Slide 23 text
your
Slide 24
Slide 24 text
your
quay.io/coreos/etcd
x3
Slide 25
Slide 25 text
your
quay.io/coreos/etcd
x3
Slide 26
Slide 26 text
your
quay.io/coreos/prometheus
x1
Slide 27
Slide 27 text
your
quay.io/coreos/dex
x2
Slide 28
Slide 28 text
Containers
Application Packaging
Slide 29
Slide 29 text
package main
import "fmt"
func main() {
fmt.Println("Hello, world!")
}
Slide 30
Slide 30 text
$ git clone git://github.com/coreos/etcd
$ docker build . -t quay.io/coreos/etcd:v3.1.0
$ docker push quay.io/coreos/etcd:v3.1.0
Building and Hosting
Slide 31
Slide 31 text
Dockerfile Build System
$ cat Dockerfile
FROM golang
ADD . /go/src/github.com/coreos/etcd
ADD cmd/vendor /go/src/github.com/coreos/e...
RUN go install github.com/coreos/etcd
EXPOSE 2379 2380
ENTRYPOINT ["etcd"]
Slide 32
Slide 32 text
container
image
Slide 33
Slide 33 text
/bin/etcd
/lib/libc
Slide 34
Slide 34 text
quay.io/philips/etcd
Slide 35
Slide 35 text
No content
Slide 36
Slide 36 text
Running Containers
Application Packaging
Slide 37
Slide 37 text
$ docker run -d quay.io/philips/etcd:v3.1.0 -d
$ pidof etcd
24725
$ cat /proc/24725/mounts | grep overlay
/ overlay workdir=/var/lib/docker/overlay/7134
Normal Linux Processes!
Slide 38
Slide 38 text
Abstract away app from the OS
OS App
Slide 39
Slide 39 text
Traditional Linux
Slide 40
Slide 40 text
Containers
Required Software
Slide 41
Slide 41 text
Clustering
Slide 42
Slide 42 text
Clustering
Server Botnets!
Slide 43
Slide 43 text
100+ Per Person
At the Internet Giants
Slide 44
Slide 44 text
100+ Per Person
Too many for manual placement
Slide 45
Slide 45 text
100+ Per Person
Too many for manual placement
Slide 46
Slide 46 text
100+ Per Person
Too many for manual placement
Slide 47
Slide 47 text
$ while read host; ssh $host … < hosts
???
Slide 48
Slide 48 text
$ while read host; ssh $host … < hosts
???
Slide 49
Slide 49 text
$ while read host; ssh $host … < hosts
Problems: No monitoring, no state to recover
Slide 50
Slide 50 text
No content
Slide 51
Slide 51 text
No content
Slide 52
Slide 52 text
$ kubectl run --replicas=3 quay.io/coreos/dex
Slide 53
Slide 53 text
$ kubectl run --replicas=3 quay.io/coreos/dex
Solution: Monitoring, and state on computers
Slide 54
Slide 54 text
$ kubectl run --replicas=3 quay.io/coreos/dex
Slide 55
Slide 55 text
$ kubectl run --replicas=3 quay.io/coreos/dex
Slide 56
Slide 56 text
$ kubectl run --replicas=3 quay.io/coreos/dex
Slide 57
Slide 57 text
No content
Slide 58
Slide 58 text
No content
Slide 59
Slide 59 text
No content
Slide 60
Slide 60 text
???
Slide 61
Slide 61 text
???
Slide 62
Slide 62 text
Simple cluster operations
Secure and Simple API
Friendly operational tools
Slide 63
Slide 63 text
Clustering
Facing Failure
Slide 64
Slide 64 text
Simple cluster operations
Secure and Simple API
Friendly operational tools
Slide 65
Slide 65 text
etcd Overview
Introduced in 2013 by CoreOS
Persistent database of Kubernetes
Auto-leader election for availability
Prometheus Operator
● Operates Prometheus on k8s
● Handles common tasks:
○ Create/Destroy
○ Monitor Configuration
○ Services Targets via Labels
● Configured by resources
Slide 111
Slide 111 text
No content
Slide 112
Slide 112 text
No content
Slide 113
Slide 113 text
What's Next?
Kubernetes Next Steps
Slide 114
Slide 114 text
Kubernetes Next Steps
● Healthy growth of the open source community
● Better metrics and monitoring
● Ever improving security defaults
● Support for more cloud platforms
● More pre-packaged applications
● https://github.com/kubernetes/features
Slide 115
Slide 115 text
CoreOS Mission
Secure the Internet
Slide 116
Slide 116 text
No content
Slide 117
Slide 117 text
Documents
Commerce
Communications
Slide 118
Slide 118 text
~100,000,000
Servers Worldwide
Slide 119
Slide 119 text
Self Driving Infrastructure
Slide 120
Slide 120 text
CoreOS Confidential - Do Not Distribute
What is self-driving infrastructure
Applying updates to our
infrastructure software
much like the way updates
are applied to our phones
1 1
Slide 121
Slide 121 text
CoreOS Confidential - Do Not Distribute
Why self driving infrastructure
Patching Software is important
Slide 122
Slide 122 text
No content
Slide 123
Slide 123 text
No content
Slide 124
Slide 124 text
No content
Slide 125
Slide 125 text
Container Linux
Updating Container Linux
VM / Bare Metal
OS
Update
Slide 126
Slide 126 text
Updating Container Linux
Container Linux
OS
Update
VM / Bare Metal
Slide 127
Slide 127 text
Updating Container Linux
Container Linux
VM / Bare Metal
Slide 128
Slide 128 text
Kubernetes
Updating Kubernetes
Deployment
API Server
Container
Slide 129
Slide 129 text
Kubernetes
Updating Kubernetes
API Server
Container
Deployment
Slide 130
Slide 130 text
Kubernetes
Updating Kubernetes
Deployment
Slide 131
Slide 131 text
Azure APIs k8s API
kubectl
VirtualNet
v1.5.1
VM VM VM
PD
PD
PD
Slide 132
Slide 132 text
Azure APIs k8s API
kubectl
VirtualNet
v1.5.2
VM VM VM
PD
PD
PD
Slide 133
Slide 133 text
Free Stuff
Get Kubernetes For Yourself
Slide 134
Slide 134 text
Minikube - Kubernetes on your laptop
All-in-one Virtual Machine
Single file download
Latest Kubernetes
github.com/kubernetes/minikube
Slide 135
Slide 135 text
Tectonic Free Tier
Pure upstream Kubernetes
Production configuration
Bare metal and AWS installer
(more coming soon)
coreos.com/tectonic
Slide 136
Slide 136 text
Join Us
Build great code
Slide 137
Slide 137 text
github.com/coreos
Container Focused Operating System
Clustered Database
Identity & Federation
Hack on Operating Systems
Build distributed systems
Geek out on internet identity protocols
10+ other major projects
Slide 138
Slide 138 text
github.com/kubernetes
Most active project on GitHub
Dozens of special interest groups
Not just code! Docs, PM, and more
Slide 139
Slide 139 text
Work WIth Us
Community is taking off
Slide 140
Slide 140 text
What container and PaaS tools are used to manage
OpenStack applications?
OpenStack User Survey, April 2016, openstack.org.
Developer engagement
“The Further Evolution of Kubernetes,” March 2016.
Slide 141
Slide 141 text
CoreOS is running the world’s containers
We’re hiring: careers@coreos.com
sales@coreos.com
90+ Projects on GitHub, 1,000+ Contributors
coreos.com
Support plans, training and more
OPEN SOURCE ENTERPRISE
Slide 142
Slide 142 text
coreos.com/fest
@coreosfest
May 31 - June 1, 2017
San Francisco