microservices at scale with docker and kubernetes - ams jug 2017

25
Micro services at scale with Docker and Kubernetes 9-2-2017 – Amsterdam JUG

Upload: arjen-wassink

Post on 19-Mar-2017

98 views

Category:

Technology


2 download

TRANSCRIPT

Micro services at scale with Docker and Kubernetes

9-2-2017 – Amsterdam JUG

Bedankt voor jullie aandacht

“Once you stop learning, you start dying”- Albert Einstein

ARJEN WASSINKPrincipal Consultant

[email protected]

@ArjenWassink

The Menu1. Intro Microservices2. Intro Docker3. Kubernetes4. Rolling updates5. Persisted volumes6. Stateful services

4 Raspberry Pi 2BQuadcore 900MHz, 1GB RAM, 16GB SD-card

Pi Stack case

D-Link network switch

Anker USB power adapter

Nice white cables

Total Cost: +/- EUR 300

Martin Fowler on Microservices:

In short, the microservice architectural style [1] is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.

Microservices: Scaling is important

https://www.nginx.com/blog/introduction-to-microservices/

Microservices: advantages● The services themselves are very simple, focussing on doing

one thing well;● Each service can be built using the best and most appropriate

tool for the job;● Systems built in this way are inherently loosely coupled;● Multiple developers and teams can deliver relatively

independently of each other under this model;● They are a great enabler for continuous delivery, allowing

frequent releases whilst keeping the rest of the system available and stable.

Microservices: drawbacks

● Complex distributed systems● Diverse technology stack ● More software projects to manage● Reliability and performance● Exponentially more service instances to manage

Build Ship Run

http://www.zdnet.com/article/what-is-docker-and-why-is-it-so-darn-popular/

Virtual Machines vs. Containers

https://docs.docker.com/engine/introduction/understanding-docker/

Docker - Architecture

Docker - Layering

https://docs.docker.com/engine/userguide/storagedriver/imagesandcontainers/

Docker at scale with Kubernetes

Everything at Google runs in containers

Launch over 2 billion containers per week.

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

Developer View

What justhappened?

Enter Kubernetes

Greek for “Helmsman”; also the root of the word “Governor”

• Container orchestrator

• Runs containers

• Supports multiple cloud and bare-metal environments

• Inspired and informed by Google’s experiences and internal systems

• Open source, written in Go

Manage applications, not machines

web browsers

Scheduler

kubectl web browsers

scheduler

Kubelet Kubelet Kubelet Kubelet

Config file

Kubernetes Master

Container Image

Developer View

What justhappened?

Kubernetes - Architecture

https://en.wikipedia.org/wiki/Kubernetes

http://www.slideshare.net/kitmerker/devnexus-2015-kubernetes-container-engine

Pods, Replication sets & (auto)scaling

Pod

con-tainer

con-tainer

Deployment

Replication Set

Pod

con-tainer

con-tainer

Pod

con-tainer

con-tainer

Services

Pod

con-tainer

con-tainer

Service

Cluster IP:port <10.0.0.20:80>Node IP:port <10.150.42.191:88>

Pod

con-tainer

con-tainer

Pod

con-tainer

con-tainer

Loadbalancer

Kube Proxy

(IP Tables)

API server

Watches

Namespaces

PodDeployment Pod

Service

PodDeployment Pod

Service

Worker Node Worker Node

Worker Node

Persistent Storage Node

Persistent VolumesPod

con-tainer

con-tainer

Persisted Volume

Persisted Volume ClaimPersisted Volume Mount

Quintor

Resources

• Docker - Build, Ship, and Run Any App, Anywhere – www.docker.com• Kubernetes - Accelerate Your Delivery – kubernetes.io• Creating a Raspberry Pi cluster running Kubernetes –

tinyurl.com/rpi-k8s-cluster

@ArjenWassink