Slide 1

Slide 1 text

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

Slide 66

Slide 66 text

No content

Slide 67

Slide 67 text

No content

Slide 68

Slide 68 text

No content

Slide 69

Slide 69 text

No content

Slide 70

Slide 70 text

No content

Slide 71

Slide 71 text

No content

Slide 72

Slide 72 text

No content

Slide 73

Slide 73 text

No content

Slide 74

Slide 74 text

No content

Slide 75

Slide 75 text

No content

Slide 76

Slide 76 text

Consistent Infrastructure Everywhere Kubernetes Everywhere

Slide 77

Slide 77 text

AWS APIs k8s API kubectl AWS VPC v1.5.2 EC2 EC2 EC2 EBS EBS EBS

Slide 78

Slide 78 text

Azure APIs k8s API kubectl VirtualNet v1.5.2 VM VM VM Disk Disk Disk

Slide 79

Slide 79 text

Google APIs k8s API kubectl VirtualNet v1.5.2 VM VM VM PD PD PD

Slide 80

Slide 80 text

Digitalocean APIs k8s API kubectl VirtualNet v1.5.2 Droplet Droplet Droplet Vol Vol Vol

Slide 81

Slide 81 text

OpenStack APIs k8s API kubectl VirtualNet v1.5.2 Instance Instance Instance Vol Vol Vol

Slide 82

Slide 82 text

k8s API kubectl Ethernet v1.5.2 Bare Metal Bare Metal Bare Metal SAN SAN SAN

Slide 83

Slide 83 text

Consistency on all major components ● Compute: Physical, Virtual Machine, Cloud ● Networking: VXLAN, BGP, IPIP, forwarding, etc ● Storage: EBS, NFS, GlusterFS, Cinder, etc ● Load Balancing: ELB, nginx, Cloud LB, etc

Slide 84

Slide 84 text

Federation Handling Too Much Success

Slide 85

Slide 85 text

No content

Slide 86

Slide 86 text

No content

Slide 87

Slide 87 text

No content

Slide 88

Slide 88 text

No content

Slide 89

Slide 89 text

No content

Slide 90

Slide 90 text

No content

Slide 91

Slide 91 text

work-in-progress

Slide 92

Slide 92 text

Labels, The Kubernetes Way Service Discovery

Slide 93

Slide 93 text

frontend philips prod frontend rithu dev backend rithu dev backend philips prod

Slide 94

Slide 94 text

frontend philips prod frontend rithu dev backend rithu dev backend philips prod

Slide 95

Slide 95 text

frontend philips prod frontend rithu dev backend rithu dev backend philips prod

Slide 96

Slide 96 text

frontend philips dev frontend rithu prod backend rithu dev backend philips prod

Slide 97

Slide 97 text

Scaling Applications Reacting to Demand

Slide 98

Slide 98 text

ReplicaSet

Slide 99

Slide 99 text

ReplicaSet

Slide 100

Slide 100 text

No content

Slide 101

Slide 101 text

Overview Scaling Complex Apps

Slide 102

Slide 102 text

$ kubectl run db --image=quay.io/my/db Creating a Database is Easy on Kubernetes

Slide 103

Slide 103 text

● Resize/Upgrade - coordination for availability ● Reconfigure - tedious generation / templating ● Backup - requires coordination on instances ● Healing - observe and act for recovery Managing a Distributed Database is Harder

Slide 104

Slide 104 text

Introducing Operators

Slide 105

Slide 105 text

$ cat my-db-cluster.yaml spec: clusterSize: 3 readReplicas: 2 version: v4.0.1 The Dream

Slide 106

Slide 106 text

No content

Slide 107

Slide 107 text

$ cat etcd-cluster.yaml spec: clusterSize: 3 version: v3.1.0 etcd Operator Resource

Slide 108

Slide 108 text

etcd Operator

Slide 109

Slide 109 text

Monitoring Foundation of Production

Slide 110

Slide 110 text

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

Slide 143

Slide 143 text

brandon.philips@coreos.com @BrandonPhilips linkedin.com/in/brandonphilips QUESTIONS? Thanks! We’re hiring: coreos.com/careers Let’s talk! IRC More events: coreos.com/community LONGER CHAT?

Slide 144

Slide 144 text

Self-Driving Kubernetes Preview