docker all the things openstack services and atomic and kubernetes · 2014-11-05 · docker...

39
Docker All The Things OpenStack Services and Kubernetes and Atomic OpenStack Summit Paris, November 2014 @brentholden @jameslabocki

Upload: others

Post on 21-May-2020

15 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Docker All The ThingsOpenStack Services

and Kubernetes and Atomic

OpenStack Summit Paris, November 2014@brentholden

@jameslabocki

Page 2: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

AgendaThe Problem

Current Solutions

Tomorrow’s Improvements

Demonstration

Page 3: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

A Thing of Beauty

Page 4: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

The Reality

Page 5: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

All Infrastructure Platforms Face This Problem

!=

Page 6: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

All Infrastructure Platforms Face This Problem

Page 7: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Reproducible Environment

Separation between Operating System and Application

Description of Deployment Pattern w/o lots of code

And Developers Lives Aren’t Easy Either

Page 8: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Current Solutions

Page 9: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Present Solutions - Build Based + Config Management

Lifecycle Management Tools

Workflow State Machine

Decision EngineConfiguration Management

Content Repository

OpenStack Service A

Bare Metal

Operating System

OpenStack Service B

Bare Metal

Operating SystemInefficient

Lifecycle Management Tools

Workflow State Machine

Decision EngineConfiguration Management

Content Repository

OpenStack Service A

Bare Metal

Operating SystemDifficult

Lifecycle Management Tools

Workflow State Machine

Decision EngineConfiguration Management

Content Repository

SlowDeployment

OpenStack Service B

OpenStack Service A

Bare Metal

Operating System

OpenStack Service B

Packages

Page 10: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Present Solutions - Image Based + Declarative

Repository Bare Metal

Image Builder

Deployer

StillDifficult

Image

Operating System

OpenStack Service

OpenStack Service

Image

Operating System

OpenStack Service

OpenStack Service

Repository Bare Metal

Image Builder

Deployer

Expensive(updates)

Image

Operating System

OpenStack Service

OpenStack Service

Image

Operating System

OpenStack Service

OpenStack Service

Page 11: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Tomorrow’s Improvements

Page 12: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Isolated, lightweight, and portable

Pre-integrated

Easily describe run-time relationships

Run on something thin and easy to update

What If …

Page 13: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Isolated, lightweight, and portable

Pre-integrated

Easily describe run-time relationships

Run on something thin and easy to update

What If …

Page 14: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Isolated, lightweight, and portable

Pre-integrated

Easily describe run-time relationships

Run on something thin and easy to update

What If …

Page 15: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Isolated, lightweight, and portable

Pre-integrated

Easily describe run-time relationships

Run on something thin and easy to update

What If …

Page 16: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Isolated, lightweight, and portable

Pre-integrated

Easily describe run-time relationships

Run on something thin and easy to update

What If … Develop locally and run in production with less friction

Page 17: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

DockerIsolated, Lightweight, and Portable

Server Server

Linux

Libvirt/KVM

Linux Guest

BinariesLibraries

Application

Linux

Linux Guest

BinariesLibraries

Application

BinariesLibraries

API(Docker)

Application

Application

Application

Application

Virtual Machines Containers

● Develop

● Build

● Push

● Enjoy!

Page 18: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

KubernetesContainer Scheduling

Master Components

SchedulerScheduler

kubectl (user commands)

APIs

AuthorizationAuthentication

REST(pods, services, rep

controllers)

Minion

Docker

Kubelet cAdvisor Proxy

Pod

ContainerContainer

Pod Pod

ContainerContainer

ContainerContainer

Schedulingactuator

Replication Controller

Kubeletinfo service

DistributedWatchable

Storage

Minion

Docker

Kubelet cAdvisor Proxy

Pod

ContainerContainer

Pod Pod

ContainerContainer

ContainerContainer

Traffic

Page 19: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

KubernetesContainer Scheduling + Easily describe run-time relationships

{ "id": "mongodb", "desiredState": {

"manifest": { "version": "v1", "id": "mongodb", "containers": [{ "name": "mongodb", "image": "dockerfile/mongodb", "ports": [{ "containerPort": 6379, "hostPort": 6379 }] }]

} }, "labels": {

"name": "mongodb" }}

service mongod start

chkconfig mongod on

mongo --host controller --eval '

db = db.getSiblingDB("ceilometer");

db.addUser({user: "ceilometer",

pwd: "mypassword",

roles: [ "readWrite", "dbAdmin" ]})'

….

Imperative Declarative

Page 20: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

AtomicRun on a thin and easy to update OS

Docker + Host

Logging

SELinux

Libraries

Application

Network

`rpm-ostree upgrade`

`rpm-ostree rollback`

Page 21: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

How does it change your life?

Page 22: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Developer Workstation(s)

Commodity Hardware

Linux

Libvirt/KVM

Linux Box

Puppet

Docker

Vagrant

Apple Hardware

OSX

Virtual Box

Linux Box

Chef

Docker

Vagrant

GitKubernetes Kubernetes

Page 23: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

From Development to Operations

Commodity Hardware

Linux

Libvirt/KVM

Linux Box

Puppet

Docker

Vagrant

Atomic Atomic

Docker Docker Docker DockerO

penStack

Service

OpenS

tackS

ervice

OpenS

tackS

ervice

OpenS

tackS

ervice

Kubernetes

Registry

GitHub

OpenStack

Test/UAT/Prod

Page 24: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Demonstration Time!

Page 25: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Pod

Kubernetes C

luster

Demonstration - Operate

OpenStack

Fedora(Master)

Fedora(Minion)

Docker

kube-scheduler

Glance-A

PI

Registry1. Quick Tour of Kubernetes

2. Deploying a Pod/Service for an OpenStack service

3. Deploying all the OpenStack services

kubectl

Kolla Images

Kolla Images

FedoraWorkstation

kolla.git clone# ./tools/start

kube-api-server

kubelet

kube-proxy

cadvisor

DockerDocker

Glance-

Registry

Keystone

Page 26: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

External Connectivity

Multi-Host Networking

Privileged Containers

Run-Time Configuration

Persistent Storage (for Services and Exposing Cinder)

Monitoring

Early Days for Kubernetes

Challenges

Page 28: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Tuesday November 4 17:30 - 18:10Duffy (Le Meridien)

Read the notes :)

Design Summit Session for Kolla

Page 29: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Slides @ www.allthingsopen.com

Page 30: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Source: http://docs.openstack.org/havana/config-reference/content/under_the_hood_openvswitch.html

Neutron L3 Networking Review

Page 31: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Container A

PID NS

Container B

PID NS

Stock Docker Configuration

NET NS

NET NS

Host

PID NS

NET NS

Container Networking Difficulties

Page 32: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Container

Stock Docker Configuration

Host

tap (eth0)

Linu

x br

idge

(doc

ker0

)veth

vetheth0

/bin/bash

Container Networking Difficulties (2)

Page 33: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Stock Docker Configuration

Host

tap (eth0)

Linu

x br

idge

(doc

ker0

)veth

vetheth0

Container Networking Difficulties (3)

Page 34: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Stock Docker Configuration

Host

tap (eth0)Linu

x br

idge

(doc

ker0

)veth

veth

eth0

tap (eth0)

vethveth

L2 Agent

L3 Agent

Container Networking Difficulties (4)

Page 35: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Stock Docker Configuration

Host

tap (eth0)Linu

x br

idge

(doc

ker0

)veth

veth

eth0

tap (eth0)

vethveth

L2 Agent

L3 Agent

Container Networking Difficulties (4)

Page 36: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Container A

PID NS

Container B

PID NS

Kubernetes Docker Configuration

Host

PID NS

NET NS

Shared Network NS

Kub

erne

tes

Pod

Container Networking Difficulties (5)

Page 37: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

Container A

PID NS

Container B

PID NS

Kubernetes Docker Configuration

Host

PID NS

Shared Network NS

Kub

erne

tes

Pod

Linu

x br

idge

(doc

ker0

)tap (eth1)eth0

vethtap (eth0)

veth

veth

veth

Container Networking Difficulties (6)

Page 38: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

L2 AgentContainer

neutronl2-agent

L3 AgentContainer(Privileged)

neutronl3-agent

Kubernetes Docker Configuration

Host

PID NS

Shared Network NS

Kub

erne

tes

Net

wor

ker P

od

Linu

x br

idge

(doc

ker0

)tap (eth1)veth

veth

eth0

veth

veth

tap (eth0)

Container Networking Difficulties (7)

Page 39: Docker All The Things OpenStack Services and Atomic and Kubernetes · 2014-11-05 · Docker kube-scheduler Glance-API Registry 1. Quick Tour of Kubernetes 2. Deploying a Pod/Service

“If I had an hour to solve a problem and my life depended on the solution, I would spend the first 55 minutes determining the proper question to ask, for once I know the proper question, I could solve the problem in less than five minutes.”

Albert Einstein