kubernetes on cloudstack with coreos

27
Kubernetes on CloudStack with coreOS Sebastien Goasguen @sebgoa Nov 11 th 2014 London, England

Upload: sebastien-goasguen

Post on 19-Jun-2015

1.578 views

Category:

Technology


4 download

DESCRIPTION

Intro to coreOS linux distributions and how it can be used to run docker based workloads in the cloud. coreOS instances can be started in a cloudstack cloud, it makes use of cloud-init basics to

TRANSCRIPT

Kubernetes on CloudStackwith coreOSSebastien Goasguen

@sebgoaNov 11th 2014

London, England

Who am I ?• Apache CloudStack and

licloud committer + PMC member

• Looking at techs and how they work together

• Half dev, half community manager, + half event planner

Today’s talk

Cloud (e.g CloudStack based = exoscale)Cloud (e.g CloudStack based = exoscale)

coreOScoreOS coreOScoreOS coreOScoreOS

K*K* K*K* K*K*Docker containers

Docker containers

Docker containers

Docker containers

Docker containers

Docker containers

API calls to Kubernetes API

Ugly slide #1

• Linux container (LXC +)• Application deployment• PaaS• Portability• Image sharing via

DockerHub• Ease of packaging

applications

Building docker images

Fair use from http://blog.octo.com/en/docker-registry-first-steps/

+ config mgmt

CoreOS

• Linux distribution• Rolling upgrades• Minimal OS• Docker support• etcd and fleet tools

to manage distributed applications based on containers.

• Cloud-init support• Systemd units

coreOS “OEM”

http://github.com/coreos/coreos-overlay

coreOS “OEM”

http://github.com/coreos/coreos-overlay

The cloudinit magic

CoreOS clustering• etcd HA key value store– Raft election algorithm– Writes when majority in cluster has committed

update– e.g 5 nodes, tolerates 2 nodes failure

• fleet distributed init system (schedules systemd units in a cluster)– Submits systemd units cluster wide– Affinity, anti-affinity, global “scheduling”

“coreOS is the first cloud OS dedicated to docker based application workloads”

“Where are you going to run coreOS ?”

IaaS Landscape

CloudStack clouds

Load BalancersLoad Balancers

FWs & VPNsFWs & VPNs

DashboardDashboard

Identity Mgmt.Identity Mgmt.

Image Mgmt.Image Mgmt.

ComputeCompute

StorageStorage

NetworkNetwork

MeteringMeteringAPI (EC2 & CS)API (EC2 & CS) Self-service PortalSelf-service Portal

Data Center Orchestrator

• IaaS Public cloud• Switzerland based• Apache CloudStack• Security groups, ssh key

pairs• Offers coreOS

templates (+ Debian, ubuntu, CentOS and even Windows)

CoreOS on exoscale

Starting containers#cloud-config

coreos:

units:

- name: docker.service

command: start

- name: es.service

command: start

content: |

[Unit]

After=docker.service

Requires=docker.service

Description=starts ElasticSearch container

[Service]

TimeoutStartSec=0

ExecStartPre=/usr/bin/docker pull dockerfile/elasticsearch

ExecStart=/usr/bin/docker run -d -p 9200:9200 -p 9300:9300 dockerfile/elasticsearch

Kubernetes• Docker application

orchestration• Google GCE, rackspace,

Azure providers• Deployable on CoreOS• Container replication• HA services

Kubernetes API

Kubernetes{

"id": "redis-master-2",

"kind": "Pod",

"apiVersion": "v1beta1",

"desiredState": {

"manifest": {

"version": "v1beta1",

"id": "redis-master-2",

"containers": [{

"name": "master",

"image": "dockerfile/redis",

"ports": [{

"containerPort": 6379,

"hostPort": 6379

"labels": {

"name": "redis-master"

}

}

Kubernetes on CloudStack

• Find a CloudStack cloud that supports CoreOS• Then use:

https://github.com/runseb/kubernetes-exoscale

• Libcloud to start nodes with coreOS template• User data to pass cloud-configs• Then start Kube* Service units with fleet

Cloud API Cloud API

Libcloud startup scripts

Etcd cluster5 nodes

Discovery service to bootstrap

Etcd cluster5 nodes

Discovery service to bootstrap

Kubernetes cluster5 nodes

Start Kube* services via fleetRun guestbook example

Kubernetes cluster5 nodes

Start Kube* services via fleetRun guestbook example

PR welcome:https://github.com/runseb/kubernetes-exoscale

Cloud (e.g CloudStack based = exoscale)Cloud (e.g CloudStack based = exoscale)

coreOScoreOS coreOScoreOS coreOScoreOS

K*K* K*K* K*K*Docker container

Docker container

Docker container

Docker container

Docker container

Docker container

API calls to Kubernetes API

Questions and Thanks

Sebastien Goasguen@sebgoa