0%

Red Hat OpenShift 把 VM 當 Container 管!?

Kubevirt 是由 Red Hat 於 2017 年初發起的一個容器虛擬化技術 Container-native Virtulaization (CNV) 專案,主要功能是以 Kubernetes 管理容器的角度來管理 VM

Kubervirt: Add virtual machines as you know them to your OpenShift projects

Why Kubevirt?

如同官網所說,這個專案的主要目的是認為說雖然不是所有的原生在 VM 上的服務都適合進行容器化 (Containerized),但卻又想要享有 Container Platform 原生所帶來的彈性調度能力,所以才會誕生出這麼一個專案,讓開發團隊在同一個 Container Platform 上依據不同的需求放置 VM 或 Container

Architecture

從底層開始,依然是需要依靠 Bare Metal / OS / Kubernetes 建立基本 Container Platform 的能力,但原先上層所乘載的 Pod 裡面的型態應該是 Container,但現在有了 Kubevirt 這樣的專案後,可以在一個 Pod 裡面起 VM 來讓使用者做使用

技術上來說這個 VM Instance 的實作是採用 KVM/QEMU 的方式進行使用,而他的資源配置則是採用跟 Container 的方式依樣用 YAML 描繪資源需求,有趣的事情是 CNV 掛載硬碟的方式也是要透過 OpenShift PV/PVC 機制來進行使用

而目前 Kubevirt 的能力可以做到以下事情

  • Create a predefined VM
  • Schedule a VM on a Kubernetes cluster
  • Launch a VM
  • Stop a VM
  • Delete a VM

技術分析

kubevirt/kubevirt - GitHub 得知,Kubevirt 有使用 CRD (CustomResourceDefinition) 實作專門控制 KVM 的 VMI CRD,而這個 CRD 包含:

  • Machine type
  • CPU type
  • Amount of RAM and vCPUs
  • Number and type of NICs

而除此之外還有實作三個不同的程式來接受和執行來至 VMI CRD 的要求 - virt-controllervirt-handlervirt-launcher,而整個處理流程可以參考下圖

跟 Red Hat 的關係?

Kubevirt 是所謂的 Upstream Project,也就是大家可以任意使用的 Community 版本,可以隨意下載安裝在自己的環境自己玩
Container-native Virtualization (CNV) 則是 Red Hat Downstream product,面向的是終端客戶使用,有任何問題會由 Red Hat 工程師處理 (基本上就是那些在 GitHub 上飄來飄去的大大們)

Demo of CNV

可以觀看以下的 Youtube 影片,這個 Demo 是釋放於 Red Hat Summit 2018 上

若意猶未盡的話,可以參考更詳細的簡報 Introducing Container-native Virtualization - Red Hat Summit 2018

References