We need something declarative
“Always keep two of these running,
but not on the same machine.”
Slide 10
Slide 10 text
We need new technology
1. System Updates
2. Application Isolation
3. Clustering
4. Task Distribution
Slide 11
Slide 11 text
Technology in CoreOS
1. FastPatch (Updates)
2. Docker / rkt (Containers)
3. Etcd (Consensus)
4. Fleet / Kubernetes (Scheduling)
All Free / Open Source Software
Slide 12
Slide 12 text
System Updates
(FastPatch)
Slide 13
Slide 13 text
Staying up-to-date is
key to good security
Slide 14
Slide 14 text
Browser-like Update Channels
Alpha → Beta → Stable
Opportunistically downloaded
Applied on next start
Slide 15
Slide 15 text
Whole-system Updates
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
No content
Slide 19
Slide 19 text
No content
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
No content
Slide 22
Slide 22 text
My server is rebooting on its own,
how do I keep my app online?
Slide 23
Slide 23 text
No content
Slide 24
Slide 24 text
Both my servers reboot at the same time,
how do I keep my app online?
Slide 25
Slide 25 text
Consensus
(etcd)
Slide 26
Slide 26 text
etcd
Key-value store
Centralized place to store cluster metadata
Slide 27
Slide 27 text
No content
Slide 28
Slide 28 text
locksmith
Must acquire a lock from etcd before rebooting
Release lock after successful boot
Slide 29
Slide 29 text
Demo
Slide 30
Slide 30 text
My etcd server is rebooting on its own,
how do I keep my app online?
Slide 31
Slide 31 text
No content
Slide 32
Slide 32 text
No content
Slide 33
Slide 33 text
No content
Slide 34
Slide 34 text
No content
Slide 35
Slide 35 text
No content
Slide 36
Slide 36 text
No content
Slide 37
Slide 37 text
Etcd is Reusable
Google Kubernetes
Pivotal CloudFoundry
Mailgun Vulcand
Slide 38
Slide 38 text
Containerization
(Docker / rkt)
Slide 39
Slide 39 text
CoreOS is Minimal
140 MB compressed
No Python, Perl, Ruby, or JavaScript
No package manager
No compiler
Slide 40
Slide 40 text
How do you run anything?
Slide 41
Slide 41 text
No content
Slide 42
Slide 42 text
Containers
CoreOS includes Docker and rkt
Slide 43
Slide 43 text
Demo
Slide 44
Slide 44 text
Scheduling
(Fleet / Kubernetes)
Slide 45
Slide 45 text
Cluster-level init
“Always keep two of these running,
but not on the same machine.”
Slide 46
Slide 46 text
Schedulers
CoreOS includes Fleet, supports Kubernetes
Both independent components
Both built on etcd
Slide 47
Slide 47 text
Fleet
Clustered interface for systemd
Slide 48
Slide 48 text
Systemd Unit Files
[
U
n
i
t
]
D
e
s
c
r
i
p
t
i
o
n
=
M
y A
p
p
A
f
t
e
r
=
d
o
c
k
e
r
.
s
e
r
v
i
c
e
R
e
q
u
i
r
e
s
=
d
o
c
k
e
r
.
s
e
r
v
i
c
e
[
S
e
r
v
i
c
e
]
E
x
e
c
S
t
a
r
t
P
r
e
=
-
/
u
s
r
/
b
i
n
/
d
o
c
k
e
r k
i
l
l m
y
-
a
p
p
-
%
i
E
x
e
c
S
t
a
r
t
P
r
e
=
-
/
u
s
r
/
b
i
n
/
d
o
c
k
e
r r
m m
y
-
a
p
p
-
%
i
E
x
e
c
S
t
a
r
t
=
/
u
s
r
/
b
i
n
/
d
o
c
k
e
r r
u
n -
r
m -
-
n
a
m
e m
y
-
a
p
p
-
%
i -
p 8
0
:
8
0
8
0 c
a
l
l
a
h
a
d
/
m
y
-
a
p
p
E
x
e
c
S
t
o
p
=
/
u
s
r
/
b
i
n
/
d
o
c
k
e
r s
t
o
p m
y
-
a
p
p
-
%
i
[
X
-
F
l
e
e
t
]
C
o
n
f
l
i
c
t
s
=
m
y
-
a
p
p
@
*
.
s
e
r
v
i
c
e
Slide 49
Slide 49 text
X-Fleet attributes
C
o
n
f
l
i
c
t
s
M
a
c
h
i
n
e
O
f
M
a
c
h
i
n
e
I
D
M
a
c
h
i
n
e
M
e
t
a
d
a
t
a
G
l
o
b
a
l
Slide 50
Slide 50 text
Demo
Slide 51
Slide 51 text
Design Considerations
Minimize state
Build “Twelve-Factor Apps”
Slide 52
Slide 52 text
What about Databases?
Load balancers?
Slide 53
Slide 53 text
We did it!
Slide 54
Slide 54 text
We built a platform that is
self-updating, self-organizing, and self-healing.
Slide 55
Slide 55 text
We used
1. An OS with automatic, atomic, whole-system updates.
2. Portable, isolated containers for our applications.
3. Multiple servers in a coordinated cluster.
4. A scheduler to distribute jobs across machines.
Slide 56
Slide 56 text
Now it’s your turn!
Slide 57
Slide 57 text
Many supported platforms
Local VMs (Vagrant)
Azure, EC2, GCE, RackSpace
DigitalOcean
$40 credit on DigitalOcean:
“SAMMYLOVESPYCON”