multi-cloud orchestration for kubernetes with cloudify

19
Multi-Cloud Orchestration for Kubernetes with Cloudify Customizable Kubernetes Cloud Provider For Hybrid/Multi-cloud 12/12/2017

Upload: cloudify-community

Post on 22-Jan-2018

110 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Multi-Cloud Orchestration for Kubernetes with Cloudify

Multi-Cloud Orchestration for Kubernetes with Cloudify

Customizable Kubernetes Cloud Provider For Hybrid/Multi-cloud

12/12/2017

Page 2: Multi-Cloud Orchestration for Kubernetes with Cloudify

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

Page 3: Multi-Cloud Orchestration for Kubernetes with Cloudify

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

Page 4: Multi-Cloud Orchestration for Kubernetes with Cloudify

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.

Page 5: Multi-Cloud Orchestration for Kubernetes with Cloudify

Basic K8S Architecture

Page 6: Multi-Cloud Orchestration for Kubernetes with Cloudify

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.

Page 7: Multi-Cloud Orchestration for Kubernetes with Cloudify

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.

Page 8: Multi-Cloud Orchestration for Kubernetes with Cloudify

Cloud Providers in K8s

Page 9: Multi-Cloud Orchestration for Kubernetes with Cloudify

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.

Page 10: Multi-Cloud Orchestration for Kubernetes with Cloudify

Cloudify and Containers

● Two layers: Infrastructure and Service.● Infrastructure: Provisioning and managing, Compute, Storage, and Network

resources.● Service: Deploying services and connecting deployments.

Page 11: Multi-Cloud Orchestration for Kubernetes with Cloudify

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

Page 12: Multi-Cloud Orchestration for Kubernetes with Cloudify

Cloudify K8s Provider

Bare Metal

Kubernetes

● Cloudify installs Kubernetes● Cloudify installs custom Cloud provider,

which points back at Cloudify

IaaS

Page 13: Multi-Cloud Orchestration for Kubernetes with Cloudify

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

Page 14: Multi-Cloud Orchestration for Kubernetes with Cloudify

Use Cases

Page 15: Multi-Cloud Orchestration for Kubernetes with Cloudify

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

Page 16: Multi-Cloud Orchestration for Kubernetes with Cloudify

Use Case 2 - Hybrid Cloud & Container

Manager

VM K8s Node

VM K8s NodeVM

AWS Plugin

Kubernetes Plugin

PodPodPodService

Page 17: Multi-Cloud Orchestration for Kubernetes with Cloudify

Demo

Page 18: Multi-Cloud Orchestration for Kubernetes with Cloudify

Q&A

● Download Cloudify: Cloudify.co/download● Cloudify & Kubernetes:

Cloudify.co/kubernetes● Questions or comments? Email us at

[email protected]

Page 19: Multi-Cloud Orchestration for Kubernetes with Cloudify

Thank you