KubeCon EU 2016: Kubernetes in Production (Scope and AWS)

82
if you can drink and watch Star Wars, you can handle Kubernetes in production (because that’s exactly what we did) Ilya Dmitrichenko

Transcript of KubeCon EU 2016: Kubernetes in Production (Scope and AWS)

if you can drink and watch Star Wars, you can handle Kubernetes in production

(because that’s exactly what we did)

Ilya Dmitrichenko

1. motivation 2. barriers to

adoption 3. our team’s

experience 4. tools/demo

kube-1

kube-3

kube-2

kube-4 kube-6 kube-5

kube-7

deliver faster

your organisation absolutely must

adopt microservices

everyone in your team agreed that you will

adopt containers

everyone in your team agreed that you will

adopt kubernetes

everyone in your team agreed that you will

faster development

everyone in your team sees that microservices are key to

reliable deployment

everyone in your team sees that containers are key to

scalability & utilisation

everyone in your team sees that kubernetes is key to

and most of people in this room will agree with you.

and most of people in this room will agree with you.

in theory.

and most of people in this room will agree with you.

in theory.

while in practice, there are still more questions…

more questions will arise because

more questions will arise because

your team has opinions

more questions will arise because

your team has opinions

you cannot take very big risk

more questions will arise because

your team has opinions

you cannot take very big risk and legacy systems are a thing.

let’s see what these questions are…

deliver faster

don’t forget that you must

1. language & frameworks

1/5

1. language & frameworks

you know what’s best for your application

1. language & frameworks

with microservices this is much easier then it used to be

2. toolchains & workflow

2/5

2. toolchains & workflow

you already know how to compile your app, write tests & configure CI

2. toolchains & workflow

building containers is easy, most major CI systems support it

3. infrastructure

3/5

3. infrastructure

creating a Kubernetes cluster is fairly easy, for some users

3. infrastructure

not as easy if you have opinions and non-trivial requirements

4. shipping pipeline

4/5

4. shipping pipeline

Kubernetes has all the primitives, but tooling isn’t fully understood yet

4. shipping pipeline

what is the best practice to handle deployment of your application?

5. operations

5/5

5. operations

what are the tools you need to execute most efficiently?

let’s summarise

we call this ABCDE of Microservices

A) write the app B) test and build it C) provision a cluster D) deploy the app E) execute

deliver faster?

that’s all theory, but how are you going to

practical concerns about infrastructure

practical concerns about infrastructure

opinions & risks

practical concerns about infrastructure

all-new and shiny

operating system

common examples of infrastructure opinions

automation tools

common examples of infrastructure opinions

common examples of infrastructure opinions

cloud provider

common examples of infrastructure opinions

virtual vs bare-metal

common examples of infrastructure opinions

commercial support

common examples of infrastructure opinions

cluster management

common examples of infrastructure opinions

troubleshooting

common examples of infrastructure opinions

databases

common examples of infrastructure opinions

access control

common examples of infrastructure opinions

platform as a service?

kubernetes depends on infra a lot all of the opinions will surface

Controller Manager[kube-controller-manager]

Scheduler[kube-scheduler]

API Server[kube-apiserver]

Cluster Nodes

[kube-proxy][kubelet]

etcd1 etcd2 etcd3

all of the opinions will surface and you still need

really?

Controller Manager[kube-controller-manager]

Scheduler[kube-scheduler]

API Server[kube-apiserver]

Cluster Nodes

[kube-proxy][kubelet]

etcd1 etcd2 etcd3

Controller Manager[kube-controller-manager]

Scheduler[kube-scheduler]

API Server[kube-apiserver]

Cluster Nodes

[kube-proxy][kubelet]

etcd1 etcd2 etcd3

all of the opinions will surface and you still need

a network

Controller Manager[kube-controller-manager]

Scheduler[kube-scheduler]

API Server[kube-apiserver]

Cluster Nodes

[kube-proxy][kubelet]

etcd1 etcd2 etcd3

all of the opinions will surface and you still need

a storage product

Controller Manager[kube-controller-manager]

Scheduler[kube-scheduler]

API Server[kube-apiserver]

Cluster Nodes

[kube-proxy][kubelet]

etcd1 etcd2 etcd3

all of the opinions will surface and you still need

a monitoring solution

Controller Manager[kube-controller-manager]

Scheduler[kube-scheduler]

API Server[kube-apiserver]

Cluster Nodes

[kube-proxy][kubelet]

etcd1 etcd2 etcd3

all of the opinions will surface and you still need

a private registry

Controller Manager[kube-controller-manager]

Scheduler[kube-scheduler]

API Server[kube-apiserver]

Cluster Nodes

[kube-proxy][kubelet]

etcd1 etcd2 etcd3

all of the opinions will surface and you still need

to deliver faster

our team’s use-case

scope-app-2590 pods

app-mapper2 pods

The Internet

users2 pods

kubernetes0 pods

Uncontainedip-172-20-0-149

Uncontainedip-172-20-0-148

scope-app-3271 pod

scope-app-2810 pods

frontend2 pods

scope-app-3010 pods

fairly simple Go app, only 6 services

our team’s use-case

scope-app-2590 pods

app-mapper2 pods

The Internet

users2 pods

kubernetes0 pods

Uncontainedip-172-20-0-149

Uncontainedip-172-20-0-148

scope-app-3271 pod

scope-app-2810 pods

frontend2 pods

scope-app-3010 pods

no messaging or fancy databases

our team’s use-case

scope-app-2590 pods

app-mapper2 pods

The Internet

users2 pods

kubernetes0 pods

Uncontainedip-172-20-0-149

Uncontainedip-172-20-0-148

scope-app-3271 pod

scope-app-2810 pods

frontend2 pods

scope-app-3010 pods

must have portable cluster deployment

our team’s experience

our team’s experience

tried a few different approaches for local and cloud deployments

our team’s experience

some cloud providers are less equal than others

our team’s experience

some cloud provider services are slower than others

our team’s experience

setup from scratch is hard, especially due to enforced security

our team’s experience

self-hosting is nice, but somewhat harder to reason about

our team’s experience

operating systems and and configuration

our team’s experience

declarative provisioning wins and network-first was a revelation

our team’s experience

checkout git.io/k8s-anywhere and see for yourself

we needed

simple and robust provisioning in any environment

we needed

zero-config scale-out and in-place upgrade

we built

easy to adopt cluster provisioning tools

we built

containerised public key infrastructure solution

we built

weave as a bootstrap/management and pod networking

in a nutshell

weavedns, few small shell scripts and hyperkube images

in a nutshell

just pick a few docker hosts and launch weave

in a nutshell

pick worker, master & etcd nodes. and off you go!

live demo

ip-172-20-0-164

ip-172-20-0-222

ip-172-20-0-244

ip-172-20-0-243

ip-172-20-0-242

ip-172-20-0-12

ip-172-20-0-51

potentially.

are you anywhere closer to delivering faster?

scope.weave.works

ilya-proxy-e20b51 container

metrics-98d4fd7-ybopj1 container

dbshell-fons-e67911 container

users-cb08840-kjd391 container

dbshell-fons-144171 container

dbshell-fons-2eab51 container

dbshell-fons-2d95f1 container

Uncontainedip-172-20-0-149

Uncontainedip-172-20-0-148

app-mapper-77d895a-rjqc11 container

app-mapper-77d895a-bk4k51 container

The Internet

users-cb08840-dj03q1 container

frontend-515708e-0y9h01 container

@errordeveloper

weave release v1.5

party!

users-cb08840-kjd392 containers

metrics-98d4fd7-ybopj2 containers

users-cb08840-dj03q2 containers

frontend-515708e-0y9h02 containers

dbshell-fons-e67912 containers

app-mapper-77d895a-bk4k52 containers

Uncontainedip-172-20-0-149

ilya-proxy-e20b52 containers

The Internet

Uncontainedip-172-20-0-148