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: VirtualMachine
metadata:
name: testvm
spec:
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 YOU
plus.google.com/+RedHat
linkedin.com/company/red-hat
youtube.com/user/RedHatVideos
facebook.com/redhatinc
twitter.com/RedHatNews

KubeWHAT!?

  • 1.
    KubeWHAT!? Using KubeVirt tobring virtual machines to Kubernetes and what it means for OpenStack Stephen Gordon (@xsgordon) October 19th, 2017
  • 2.
    KUBEWHAT!? - OPENSTACKDAY CANADA 2017 DISCLAIMER This is not a product pitch, this is R&D. There be dragons!
  • 3.
    KUBEWHAT!? - OPENSTACKDAY CANADA 2017 WHAT IS KUBEVIRT? Add-on that extends Kubernetes to support scheduling of VM workloads alongside container workloads. https://github.com/kubevirt
  • 4.
    KUBEWHAT!? - OPENSTACKDAY 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
  • 5.
    KUBEWHAT!? - OPENSTACKDAY 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
  • 6.
    KUBEWHAT!? - OPENSTACKDAY CANADA 2017 KUBEVIRT IS NOT A CRI IMPLEMENTATION!
  • 7.
    KUBEWHAT!? - OPENSTACKDAY 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
  • 8.
  • 9.
    KUBEWHAT!? - OPENSTACKDAY 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
  • 10.
    KUBEWHAT!? - OPENSTACKDAY 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.
  • 11.
    KUBEWHAT!? - OPENSTACKDAY CANADA 2017 TYPICAL WORKFLOW kind: VirtualMachine metadata: name: testvm spec: 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
  • 12.
  • 13.
    KUBEWHAT!? - OPENSTACKDAY 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
  • 14.
    KUBEWHAT!? - OPENSTACKDAY 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
  • 15.
    KUBEWHAT!? - OPENSTACKDAY 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.
  • 16.
    KUBEWHAT!? - OPENSTACKDAY CANADA 2017 DIAGRAM: NOVA VIRT DRIVER FOR KUBEVIRT
  • 17.
    KUBEWHAT!? - OPENSTACKDAY CANADA 2017 DIAGRAM: OPENSTACK COMPATIBLE API
  • 18.
    KUBEWHAT!? - OPENSTACKDAY 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.
  • 19.