multi-cloud orchestration for kubernetes with cloudify
TRANSCRIPT
Multi-Cloud Orchestration for Kubernetes with Cloudify
Customizable Kubernetes Cloud Provider For Hybrid/Multi-cloud
12/12/2017
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
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
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 orchestratorNode - 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.
Basic K8S Architecture
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.
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.
Cloud Providers in K8s
Cloudify Terminology
Cloudify focuses on lifecycle management of IaaS resources - VMs, bare metal servers, applications, and other services.
Manager - The Cloudify OrchestratorNode - 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.
Cloudify and Containers
● Two layers: Infrastructure and Service.● Infrastructure: Provisioning and managing, Compute, Storage, and Network
resources.● Service: Deploying services and connecting deployments.
Cloudify K8s Provider
Cloudify ProviderK8s asks Cloudify for more infrastructure.
IaaS
https://github.com/cloudify-incubator/cloudify-kubernetes-provider
Kubernetes
ProvisionIaaSResources
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
Cloudify K8s Provider
Bare Metal
Kubernetes
● Cloudify installs Kubernetes● Cloudify installs custom Cloud provider,
which points back at Cloudify
IaaS
2
Cloudify with Kubernetes
Kubernetes PluginDeploys applications on
K8s.
Kubernetes
Deploy Kubernetes Applications
App
https://github.com/cloudify-incubator/cloudify-kubernetes-plugin
1Kubernetes BlueprintsTie K8s objects to Iaas
objects.
OpenStack
Deploy Kubernetes Cluster
VM
https://github.com/cloudify-examples/simple-kubernetes-blueprint
3Cloudify ProviderK8s asks Cloudify for more infrastructure.
App
https://github.com/cloudify-incubator/cloudify-kubernetes-provider
Kubernetes
ProvisionIaaSResources
Use Cases
Use Case 1 - Hybrid Cloud
ONAP OOM
Deployment
Controller Nova Node Nova Node
OpenStack
VM K8s Node
VM K8s Node
Deployment
VM Kubernetes NodeVM
Kube Master
FabricSSH
OpenStackAPI
kubernetes-bp.yaml(Opt)
Kubernetes Plugin
OpenStack Plugin
https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob;f=cloudify-onap/blueprint.yaml
● Deploy OpenStack Infra○ VMs, Keys, Nets,etc’
● Deploy Kubernetes○ Setup NS,Pods,etc
Use Case 2 - Hybrid Cloud & Container
Manager
VM K8s Node
VM K8s NodeVM
AWS Plugin
Kubernetes Plugin
PodPodPodService
Demo
Q&A
● Download Cloudify: Cloudify.co/download● Cloudify & Kubernetes:
Cloudify.co/kubernetes● Questions or comments? Email us at
Thank you