Kubernetes on CloudStack with coreOS

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

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 of Kubernetes on CloudStack with coreOS

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