continuous delivery of microservices with kubernetes - quintor 27-2-2017

Post on 19-Mar-2017

57 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Continuous Delivery of Micro services with Kubernetes

27-2-2017 – Quintor

Bedankt voor jullie aandacht

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

ARJEN WASSINKPrincipal Consultant

a.wassink@quintor.nl

@ArjenWassink

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

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

● Diverse technology stack ● Complex distributed systems● 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

Docker - Layering

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

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

Docker - Architecture

Microservices: drawbacks

● Diverse technology stack○ Containerization freedom of technology choice○ Uniform way of distributing and running apps

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

Docker at scale with Kubernetes

Everything at Google runs in containers

Launch over 2 billion containers per week.

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?

Pods, Replication sets & scaling

Pod

con-tainer

con-tainer

Deployment

Replication Set

Pod

con-tainer

con-tainer

Pod

con-tainer

con-tainer

Kubernetes - Architecture

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

Worker Node

192.168.178.200

10.1.2.0/24

Worker Node

192.168.178.100

10.1.1.0/24

Cluster networking

Pod

10.1.1.21

Pod

10.1.1.22

Pod

10.1.1.20

Pod

10.1.2.31

Pod

10.1.2.32

Pod

10.1.2.30

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

Worker Node

Persistent Storage Node

Persistent VolumesPod

con-tainer

con-tainer

Persisted Volume

Persisted Volume ClaimPersisted Volume Mount

Microservices: drawbacks

● Diverse technology stack● Complex distributed systems

○ Service discovery helps● More software projects to manage● Reliability and performance

○ Manages availability actively● Exponentially more service instances to manage

○ Manage instances from code

Stateful Set

Pod-1

con-tainer

con-tainer

Statefull Set Pod-0

con-tainer

con-tainer

Pod-2

con-tainer

con-tainer

Service

Quintor

Deploying without downtime

• Rolling updates• Rollback• Readiness Probes

Worker Node

Namespaces

PodDeployment Pod

Service

PodDeployment Pod

Service

Worker Node

Kubernetes - Centralized Logging

Kubernetes - Centralized Monitoring

Microservices: drawbacks

● Diverse technology stack● Complex distributed systems● More software projects to manage

○ Namespaces enables multiple projects● Reliability and performance

○ Stateful Sets enables persistence clusters○ Active health monitoring and resource limiting

● Exponentially more service instances to manage○ Centralized monitoring and logging

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

top related