multi-cloud orchestration for kubernetes with cloudify

Post on 22-Jan-2018

111 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

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

hello@cloudify.co

Thank you

top related