Kubernetes on CloudStack with coreOS
-
Upload
sebastien-goasguen -
Category
Technology
-
view
1.576 -
download
4
description
Transcript of Kubernetes on CloudStack with coreOS
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
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
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 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”
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)
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{
"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