docker and kubernetes

33
Docker & Kubernetes Dongwon Kim, PhD Big Data Tech. Lab SK Telecom

Upload: dongwon-kim

Post on 19-Mar-2017

192 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Docker and kubernetes

Docker & Kuber-netes

Dongwon Kim, PhDBig Data Tech. Lab

SK Telecom

Page 2: Docker and kubernetes

Big Data Tech. Lab in SK telecom• Discovery Group• Predictive Maintenance Group• Manufacturing Solution Group

• Groups making own solutions

• Technology and Architecture Leading Group• Big data processing engine• Advanced analytics algorithms• Systematize service deployment and service operation on cluster

• Docker • Kubernetes

Page 3: Docker and kubernetes

Prepare for an era of cloud with Docker and Kubernetes

oracleubuntu

cloud

Major technolo-gies

Docker

Kubernetes

Amazon Web Ser-vice

Microsoft azure

Cloud technologiesfor service providers

icloudCloud servicesfor users

one drivedropbox

google

drive

Trend- Buy both SW & HW- Buy HW and DIY- Run your SW on

cloud

Ubiquitous cloud services around us

Enabling technologiesfor custom cloud services

* technology trend in USA (2004-2017)

Page 4: Docker and kubernetes

Overview & Conclusion

• Docker to build portable software• Build your software upon Docker • Then distribute it anywhere (even on MS Azure and Amazon Web Service)

• Kubernetes to orchestrate multiple Docker instances• Start using Docker and Kubernetes before too late!

• Google has been using container technologies more than 10 years

Docker

Kubernetes

Hadoop

The Enterprise IT Adoption CyclePopularity of Docker and Kubernetes

Page 5: Docker and kubernetes

DockerMotivationEnabling technologies for DockerHow to use Docker

Page 6: Docker and kubernetes

Docker came to save us from the dependency hell

Docker Dependency hell

Portable software

Page 7: Docker and kubernetes

Dependency hell

Developmentenvironment

Productionenvironment

Your pro-gram

pro-gram1v2

pro-gram2v2

pro-gram3v2

depends on

Your pro-gram

pro-gram1v2

pro-gram2v2

pro-gram3v2

depends on depends on

Customer program

pro-gram1v1

pro-gram2v1

pro-gram3v1

conflict!Package manager Package manager

Page 8: Docker and kubernetes

Few choices left to you

1. Convince your customer (a.k.a. 甲 )2. Install all the dependencies manually (without the package

manager)3. Modify your program to make it depend v1

Page 9: Docker and kubernetes

Docker container

Package manager in host OS

Use Docker for isolating your application

Package manager in guest OS

Your pro-gram

pro-gram1v2

pro-gram2v2

pro-gram3v2

depends ondepends on

Customer program

pro-gram1v1

pro-gram2v1

pro-gram3v1

Host operating systemLinux kernel must be ≥3.10 (such as Ubuntu 14.04 and CentOS 7)

Docker engine (daemon)

Page 10: Docker and kubernetes

Virtual machines and docker containers

Host Operating System

Kernel

Hypervisor Docker engine

Virtual machines Docker containers

Device drivers

Host Operating System

Kernel Device drivers

CentOS-likecontainer

yum

Libraries

App

Ubuntu-likecontainer

apt

App

Libraries

CentOSvirtual machine

Kernel Device drivers

yum

Libraries

App

Ubuntuvirtual machine

Kernel

apt

App

Libraries

Device drivers Containers share the kernel in the host

Page 11: Docker and kubernetes

Linux namespaces – what makes isolated environments in a host OS

Host Operating System

Docker engine

Container

pid

ipc

uts

net

mnt

user

Various ipc objects- POSIX message

queue- SystemV IPC objects

(mq, sem, shm)

System identifiers- hostname- NIS domain name

Network devices- Network devices- IPv4, IPv6 stacks- Routing tables, Fire-

wall

Mount points(directory hierarchy)

Security-related identi-fiers- User IDs- Group IDs

Process ID number space

(staring from 1)

Container

pid

ipc

uts

net

mnt

user

Container

pid

ipc

uts

net

mnt

user

Six namespaces are enough to give an illusion of running inside a virtual machine

Page 12: Docker and kubernetes

Analogy between program and docker

Dockerfile Docker image(read-only layers)

Docker container(read-only layers + writable layer)

Source code

Byte/machine code(read only)

Process(read only)

textdataheap

stackcompile execute

build run

Program

Docker

Page 13: Docker and kubernetes

How to define an image and run a container from it?1) Write Dockerfile- Specify to install python with pip on ubuntu- Tell pip to install numpy

2) Build an image from Dockerfile- Execute each line of Dockerfile to build an

image

3) Execute a Docker container from the image

Page 14: Docker and kubernetes

1 to N relationship between image and container

Execute five containers from an image

Q) Five containers take up 2,445MB (=489MB*5) in the host?

A) No due to image layering & sharing

Page 15: Docker and kubernetes

Images consists of layers each of which is a set of files

• Instructions (FROM, RUN, CMD, etc) create layers• Base images (imported by “FROM”) also consist of layers

• If a file exists in multiple layers, the one in the upper layer is seen

Dockerfile

Base ubuntu image

Layer (apt-get install python-dev python-pip)

Layer (pip install numpy)

Layer

Layer (files)Layer (files)Layer (files)

Image

Page 16: Docker and kubernetes

Docker container

• A container is just a thin read/write layer• base images are not copied to containers

• Copy-On-Write (COW)• When a file in the base image is

modified,• copy the file to the R/W layer• and then modify the copied file

Page 17: Docker and kubernetes

Image sharing between containers

ubuntu:15.04 image (~188MB) does not copied to all con-tainers

Page 18: Docker and kubernetes

Layer sharing between images

If multiple Dockerfiles1. start from the same base image2. share a sequence of instructions (one RUN instruction in a below example)

, then docker engine automatically reuses existing layers

numpy Dockerfile matplotlib Dockerfile

Page 19: Docker and kubernetes

Example of stacking docker images

Kafka broker PdM engine

kafka (with scala)

Zookeepercontainer

Kafkacontainer

PdM engine(librdkafka, avro, flask)

cuda

PdM engine(librdkafka, avro, flask)

scipy(numpy, scipy, matplotlib, ipython, jupyter, pandas, scikit-

learn, h5py)

theano-gpu (theano, keras)theano-cpu

(theano, keras)

openjdk:8

zookeeper

buildpack-deps:jessie

python:2.7

buildpack-deps:jessie-curl

offi-cial

offi-cial

offi-cial

offi-cial

Zookeeper cluster

zk

zk

zkzk

zk

broker

broker

broker Kafkacon-

sumerKafka

producer

Web server

scipy libraries has nothing to do with GPU, so share it

theano compilesits expression graphs

into CPU/GPU instructions

PdM container (cpu)

PdM container (gpu)

buildpack-deps:jessie-scm

debian:jessie

offi-cial

offi-cial jessie is the latest,

stable Debian release

buildpack-deps contains essential tools to down-load/compile softwares

Page 20: Docker and kubernetes

Enabling technologies for docker (wrap-up)• Linux namespaces (covered)• To isolate system resources

• pid, net, ipc, mnt, uts, user• It makes a secure & isolate environment (like a VM)

• Advanced multi-layer unification File System (covered)• Image layering & sharing

• Linux control groups (not covered)• To track, limit, and isolate resources

• CPU, memory, network, and IO* https://mairin.wordpress.com/2011/05/13/ideas-for-a-cgroups-ui/

Page 21: Docker and kubernetes

Docker topics not covered here• How to install Docker engine• What are the docker instructions other than FROM, RUN, and

CMD• ENV / ADD / ENTRYPOINT / LABEL / EXPOSE / COPY / VOLUME / WORKDIR /

ONBUILD • How to push local Docker images to docker hub• How to pull remote images from docker hub• ...

Consult with https://docs.docker.com/engine/getstarted/

Page 22: Docker and kubernetes

KubernetesMotivationA motivating example

Page 23: Docker and kubernetes

Disclaimer• The purpose of this section is

to briefly explain Kubernetes without details

• For a detailed explanation with the exact Kubernetes terminology,see the following slide• https://

www.slideshare.net/ssuser6bb12d/kubernetes-introduction-71846110

Page 24: Docker and kubernetes

What is Kubernetes for?

Container-based virtualization+ Container orchestra-tion

To satisfy common needs in production

replicating application instancesnaming and discovery

load balancinghorizontal auto-scaling

co-locating helper processesmounting storage systems

distributing secretsapplication health checking

rolling updatesresource monitoring

log access and ingestion... from the official site : https://kubernetes.io/docs/whatisk8s/

Page 25: Docker and kubernetes

Why Docker with Kubernetes?• A mission of our group

• Systematize service deployment and service operation on cluster • I believe that systematizing smth. is to minimize human efforts on smth.

• How to minimize human efforts on service deployment?• Make software portable using a container technology

• Docker (chosen for its maturity and popularity)• Rkt from CoreOS (alternative)

• Build images and run containers anywhere • Your laptop, servers, on-premise clusters, even cloud

• How to minimize human efforts on service operation?• Inform a container orchestration runtime of service specification

• Kubernetes from Google (chosen for its maturity and expressivity)• Docker swarm from Docker

• Define your specification and then the runtime operates your services as you wish

Page 26: Docker and kubernetes

Kubernetes architecture

Server- REST API server with a K/V store- Scheduler

- Find suitable machines for containers- Controller manager

- Current state Desired state- Make changes if states go undesir-

able

Service specifica-tion

(written in yaml)- Execute a web-server im-

age- Two replicas for LB & HA

- 3GB memory each

Docker en-gine

Node agent

container(3GB)

Docker en-gine

Node agent

container(3GB)

Docker en-gine

Node agent

container(3GB)

Ensure a specified # of replicas run-ning all the time

Page 27: Docker and kubernetes

Web server example

node 2

web-server

node 1

web-server

node 3

web-server

Want to launch 3 replicas for high availability and load bal-

ancing

How to achieve the follow-ings?• Users must be unaware of the repli-

cas• Traffic is evenly distributed to repli-

cas

web-server4bp80

web-server6dk12

web-serverg1sdf

a well-known address

It’s a piece of cake with Kubernetes!

Page 28: Docker and kubernetes

How to replicate your service instances

node 2

webserver6dk12

node 1

webserver4bp80

node 3

webserverg1sdfapp=web

1app=web

1app=web

1

Server

Node agent Node agent Node agent

Docker engine Docker engine Docker engine

Specify your Docker image and a replication factor

using Deployment

Specify a common label to group containers with

different names

Page 29: Docker and kubernetes

node 2node 1 node 3

Define a service to do round-robin forwarding

Server<service>webserver:

80

webserver6dk12

webserver4bp80

webserverg1sdfapp=web

1app=web

1app=web

1

33% 33% 33%

<ingress>metatron:80

External trafficover internet

Internal traffic

Kubernetes runs its own DNS server for name resolutionKubernetes manipulates iptables on each node to proxy traffic

Page 30: Docker and kubernetes

Kubernetes

How to guarantee a certain # of running containers during maintenance

node1zk-0

Containers

Volumes

node2zk-2

Containers

Volumes

node3

zk-3

Containers

Volumes

Drain node1Operation is permitted

because allowed-disruptions=1

Kubernetes

Drain node2

3 replicas have to be run-ning due to StatefulSet,so try scheduling zk-0

on other nodes!

Oops! cannot schedule zk-0 on node2 and node3due to anti-affinity!

Operation not permitted because allowed-disruptions=0

(Note that minAvailable=2)

Please wait until node1 is up and zk-0 is rescheduled!

node1zk-0

Containers

Volumes

node2zk-2

Containers

Volumes

node3

zk-3

Containers

Volumes

Define disruption budgetto specify requirement for

the minimum available contain-ers

Hold on for a while

Page 31: Docker and kubernetes

PdM Kubernetes cluster

Zookeeper headless service Kafka headless service

PdM service

Quo-rumPeer

Main

Quo-rumPeer

Main

Quo-rumPeer

Main

Pod Pod Pod

Kafka(broker)

Kafka(broker)

Kafka(broker)

Pod Pod Pod21

8 1 288 8 388 8 218 1 288 8 388 8 218 1 288 8 388 8 909 2 909 2 909 2

Statefulset Statefulset

PdM engine

Kafkacon-

sumerKafka

producer

Webserver

Pod (Deployment)

Ingressrule

8080Persistent

storage

Attached volume

Vol-ume

80

Page 32: Docker and kubernetes

Overview & Conclusion

• Docker to build portable software• Build your software upon Docker • Then distribute it anywhere (even on MS Azure and AWS)

• Kubernetes to orchestrate multiple Docker instances• Start using Docker and Kubernetes before too late!

• Google has been using container technologies more than 10 years

Docker

Kubernetes

Hadoop

The Enterprise IT Adoption CyclePopularity of Docker and Kubernetes

Page 33: Docker and kubernetes

the end