This presentation details Cloudify's Kubernetes plugin as well as Kubernetes Provider, offering complete integration with K8s and delivering multi-cloud container-based orchestration.
Multi-Cloud Orchestration for Kubernetes with Cloudify
1. Multi-Cloud Orchestration for Kubernetes
with Cloudify
Customizable Kubernetes Cloud Provider For Hybrid/Multi-cloud
12/12/2017
2. Agenda
• The Problem
• Kubernetes Terminology
• What is the role of a Cloud Provider in Kubernetes?
• How can Cloudify be a Cloud Provider?
• Cloudify with Kubernetes
• Use Cases
3. The Problem
• Jurassic applications, which aren’t going away (yet).
• Certain database deployments.
• Applications spanning multiple regions, datacenters, clouds and cloud-tenants.
• Windows services.
• Etc
“The world will never be one technology.” - Nati Shalom
4. Kubernetes Terminology
Kubernetes focuses on scheduling container-based deployment, using
specifications to describe the requirements of the environment on which the
containers should run, including location, availability, network, storage and
compute requirements.
Kubernetes is constantly expanding, however the elementary concepts everyone
must understand are the Master, Nodes, Pods, Services, and Replicaset.
Master - The Kubernetes orchestrator
Node - a worker node/minion (VM, bare-metal machine).
Pod - a group of containers that should run together. Often just one container.
Service - the abstraction for exposing the Pods in a container network to the host
network. Stable IP.
ReplicaSet - the mechanism by which Kubernetes enforces availability policies for
groups of Pods.
6. Cloud Providers in K8s
When a Kubernetes cluster is deployed, either a new or existing virtual network is the setting
across which various Nodes in the cluster communicate. This may be an VPC, a LAN, or something
else.
The same holds true for the Compute and Storage requirements. If new resources are required, a
Cloud Provider will be needed.
The role of the Cloud Provider in Kubernetes is to manage the lifecycle of these IaaS resources,
such as VMs, Volumes, Load Balancers, etc.
The Cloudify provider is an implementation of the Cloud API that is abstracted for Kubernetes
objects.
Before Kubernetes 1.6, the Cloud Provider was called directly from the kube-controller-manager.
Over the course of releases 1.6 - 1.9, the kube-controller-manager was split into a second binary
called cloud-controller-manager. This split has enabled to support of external Cloud Providers.
7. Limitations of this
approach
● Inflexible: Static implementation. Requires modifications to source
code and recompilation to introduce many architecture changes.
● Multi-cloud: Usually limited to one cloud/environment/zone.
● Hybrid cloud: No clear way to package containerized application and
non-containerized applications together.
9. Cloudify Terminology
Cloudify focuses on lifecycle management of IaaS resources - VMs, bare metal
servers, applications, and other services.
Manager - The Cloudify Orchestrator
Node - A resource, whose lifecycle Cloudify will Manage.
Compute Node - A VM or bare-metal machine, usually with a Cloudify Agent
installed. (Analogous to Kubernetes Node).
Workflow - An execution where Cloudify calls various operations, plugins, and scripts,
for example creating, or updating, or scaling a VM.
10. Cloudify and Containers
● Two layers: Infrastructure and Service.
● Infrastructure: Provisioning and managing, Compute, Storage, and Network
resources.
● Service: Deploying services and connecting deployments.
11. Cloudify K8s Provider
Cloudify Provider
K8s asks Cloudify for more
infrastructure.
IaaS
https://github.com/cloudify-incubator/cloudify-
kubernetes-provider
Kubernetes
Provision
IaaS
Resources
Cloudify is a Cloud orchestrator that
abstracts resource lifecycles.
Cloudify abstracts APIs of IaaS/Clouds.
Instead of using a single Cloud Provider for
each IaaS, we use a single Cloud Provider for
Cloudify, any Iaas.
IaaS
12. Cloudify K8s Provider
Bare Metal
Kubernetes
● Cloudify installs Kubernetes
● Cloudify installs custom Cloud provider,
which points back at Cloudify
IaaS
13. 2
Cloudify with Kubernetes
Kubernetes Plugin
Deploys applications on
K8s.
Kubernetes
Deploy
Kubernetes
Applications
App
https://github.com/cloudify-incubator/cloudify-
kubernetes-plugin
1
Kubernetes Blueprints
Tie K8s objects to Iaas
objects.
OpenStack
Deploy
Kubernetes
Cluster
VM
https://github.com/cloudify-examples/simple-k
ubernetes-blueprint
3
Cloudify Provider
K8s asks Cloudify for more
infrastructure.
App
https://github.com/cloudify-incubator/cloudify-
kubernetes-provider
Kubernetes
Provision
IaaS
Resources