KubeWHAT!?

Preview:

Citation preview

KubeWHAT!?Using KubeVirt to bring virtual machines to Kubernetes and what it means for OpenStack

Stephen Gordon (@xsgordon)

October 19th, 2017

KUBEWHAT!? - OPENSTACK DAY CANADA 2017

DISCLAIMER

This is not a product pitch, this is R&D.

There be dragons!

KUBEWHAT!? - OPENSTACK DAY CANADA 2017

WHAT IS KUBEVIRT?

Add-on that extends Kubernetes to support scheduling of VM workloads alongside container workloads.

https://github.com/kubevirt

KUBEWHAT!? - OPENSTACK DAY CANADA 2017

WHAT IS KUBEVIRT?

● Drops directly into existing Kubernetes Clusters

○ No additional host setup

○ Simple Install

○ Extends kubernetes so VMs can be scheduled alongside Containers

● Ties VMs into Pod Network

● Integrates with other Kubernetes concepts (like Persistent Volumes)

● Manage VMs like Pods

KUBEWHAT!? - OPENSTACK DAY CANADA 2017

KUBEVIRT IS NOT A CRI IMPLEMENTATION!

● Hypervisor CRI

○ Pod specification is the API

● KubeVirt:

○ Dedicated API

■ Virtual devices

■ Live migration

■ More VM specific needs in the future...

CRI = Container Runtime Interface

KUBEWHAT!? - OPENSTACK DAY CANADA 2017

KUBEVIRT IS NOT A CRI IMPLEMENTATION!

KUBEWHAT!? - OPENSTACK DAY CANADA 2017

WHY?

● Migration Path

○ People invested in VMs can migrate to containers and bring VMs with them

● VM Scheduler Convergence

○ OpenStack, oVirt, others, can potentially converge on a common scheduler

● Container Workload Isolation

○ Running untrusted container workloads in a hypervisor

● Infrastructure convergence

○ Moves towards unified infrastructure capable of scheduling all workloads

LET’S POKE IT

KUBEWHAT!? - OPENSTACK DAY CANADA 2017

DEMO

Pre-requisites:

● kubectl● minikube

$ minikube start --vm-driver kvm --network-plugin cni

$ git clone https://github.com/kubevirt/demo.git

$ cd demo

$ ./run-demo.sh

KUBEWHAT!? - OPENSTACK DAY CANADA 2017

DEMO (cont.)

● Review what the demo script does.● Dive into each pod’s contents with focus on:

○ Where our storage comes from.○ Where the VMs run.○ The VM pod!

● Consoles and SPICE● Launch a second VM.

KUBEWHAT!? - OPENSTACK DAY CANADA 2017

TYPICAL WORKFLOW

kind: VirtualMachinemetadata: name: testvmspec: domain: devices: graphics: - type: spice consoles: - type: pty

In case of ERR_DEMO_NO_WORKIE

Typical Pod commands:● kubectl create -f mypodspec.yaml● kubectl delete mypod● kubectl exec mypod -it /bin/bash

Typical VirtualMachine commands:● kubectl create -f myvmspec.yaml ● kubectl delete testvm● kubectl plugin virt console testvm● kubectl plugin virt spice testvm

WHERE DOES OPENSTACK FIT?

KUBEWHAT!? - OPENSTACK DAY CANADA 2017

WHERE DOES OPENSTACK FIT?

● Infrastructure provisioning capabilities and back-end ecosystem:○ Bare-metal○ Networking○ Storage

● Standardized APIs and management/operational ecosystem:○ Clients○ Orchestrators○ Cloud Management Platforms

KUBEWHAT!? - OPENSTACK DAY CANADA 2017

WHAT IS DICOT?

Building a path towards using KubeVirt to manage virtual machines while supporting existing user investments in OpenStack APIs.

https://dicot-project.github.io/about

KUBEWHAT!? - OPENSTACK DAY CANADA 2017

POTENTIAL APPROACHES

● Nova virt driver for KubeVirt○ Simplest option evaluated.○ Similar to approach of Nova vCenter driver, single Nova instance is in fact a cluster.○ Limits convergence opportunities somewhat.

● OpenStack compatible API for KubeVirt○ Fuller convergence model, esp. in terms of base requirements.○ Potential long “string” of APIs required beyond core to run VMs.○ Potential to still use full OpenStack services as backends where supported (e.g. volumes,

networks, etc.)

● Other approaches considered but discarded incl. via Cell, direct RPC.

KUBEWHAT!? - OPENSTACK DAY CANADA 2017

DIAGRAM: NOVA VIRT DRIVER FOR KUBEVIRT

KUBEWHAT!? - OPENSTACK DAY CANADA 2017

DIAGRAM: OPENSTACK COMPATIBLE API

KUBEWHAT!? - OPENSTACK DAY CANADA 2017

INTERESTED IN COLLABORATING?

Join us in the Virtualized Workloads Saloon at KubeCon NA in Austin TX!

KubeVirt● GitHub:

○ https://github.com/kubevirt/kubevirt● Mailing List:

○ https://groups.google.com/forum/#!forum/kubevirt-dev● IRC:

○ #kubevirt on irc.freenode.net

Dicot● GitHub:

○ https://github.com/dicot-project/

Slides will be posted, look for a link from @xsgordon on Twitter.

THANK YOUplus.google.com/+RedHat

linkedin.com/company/red-hat

youtube.com/user/RedHatVideos

facebook.com/redhatinc

twitter.com/RedHatNews