在K8S上使用RancherVM,以容器的方式跑虛機

RancherVM是一個開源的、輕量化的虛擬機管理工具,讓用戶可以和運行Docker容器同樣,打包和運行虛擬機。前端

RancherVM項目自幾年前推出以來,獲得了大量用戶的積極反饋。用戶也在過去幾年時間裏爲Rancher Labs工程團隊提出了很多極有價值的意見與建議,尤爲是對節點集羣上的虛擬機的管理這一方面的需求。node

現在,用戶能夠在Kubernetes上使用RancherVM了! 如今的RancherVM中添加了資源調度、基於瀏覽器的VNC客戶端、IP地址發現、基於密鑰的身份驗證以及新版本的用戶界面。本文將帶你一探究竟!git

輸入圖片說明

RancherVM設計思路

RancherVM在深層次上大量使用了Docker容器化以及容器鏡像倉庫。虛擬機基礎鏡像被打包成Docker鏡像發佈到任意Docker鏡像倉庫中。RancherVM還自帶了不少存儲在Docker Hub中的、大受歡迎的操做系統鏡像。用戶能夠在各類公有和私有鏡像倉庫中進行自由選擇,甚至能夠運行本身的私有鏡像倉庫:https://docs.docker.com/registry/deploying/。github

如今,每一個虛擬機都運行在Kubernetes pod中,咱們稱之爲VM pod。Kubernetes控制器負責管理vm pod的生命週期,授予用戶啓動或關閉虛擬機、修改機器的cpu和內存分配的權限等等。docker

持久化存儲瀏覽器

RancherVM系統定義了本身的自定義資源定義(Custom Resource Definitions, 簡稱CRD),並將全部狀態存儲在其中。所以,除了運行Kubernetes所須要的持久化數據存儲以外,RancherVM對存儲再也不有其餘額外的要求。REST服務器會提供端口,供這些CRD上的 CRUD操做的執行。而且經過全新的UI,REST服務器已有了更好的用戶體驗。安全

調度服務器

咱們如今利用Kubernetes調度器,將vm pod智能化地放置在多個節點上。限制CPU和內存資源能夠確保vm pod能夠安全地調度到資源充足的主機上。根據節點的大小,單個主機能夠實現100+個vm pods。調度虛擬機不須要額外的開銷,而擴展性的限制應該是由Kubernetes自己決定的。在實踐中,咱們已經看到了1000+個節點集羣的案例。網絡

網絡運維

RancherVM使用橋接網絡爲用戶虛擬機提供鏈接。每個虛擬機pod爲了保留本身的網絡身份,會將其分配到的MAC地址保存到它的虛擬機CRD中。IP地址管理須要一個外部的DHCP服務器。固然若是DHCP的租約過時,vm pod關閉了很長時間的話,它的IP地址可能會改變。

控制器會在每一個節點上運行,將MAC地址解析成外部DHCP分配的IP地址。一般雲供應商不會這麼作,由於他們是經過實現DHCP服務器來執行本身的IP地址管理的(IPAM)。這樣咱們在橋接網絡時就不須要控制DHCP服務器或者在虛擬機內部添加instrument。

這種設計也存在着一些固有的擴展性限制——你橋接的網絡必須具備足夠的大小,可以向每一個VM提供惟一的IP地址。

如何使用RancherVM

RancherVM須要一個運行中的Kubernetes集羣,其中包含了運行基於Debian的操做系統和KVM的節點。

運行下面的命令能夠將RancherVM組件部署到你的Kubernetes集羣中。

輸入圖片說明

GUI

部署完成後,你能夠經過查詢前端Kubernetes服務找到UI端點:

輸入圖片說明

如今你能夠導航到<node_ip>:30874來訪問UI。

若是想要啓動SSH遠程訪問,你還能夠添加你的公鑰。在Credentials界面上,單擊Create,添加你的公鑰,起上一個好名字後,而後單擊OK。

輸入圖片說明

建立實例也很是簡單。在Instances界面上單機Create。你會看到一個須要填寫的表格。你須要添加本身的公鑰或者啓用NoVNC網絡服務器。單擊OK就能夠了! 輸入圖片說明

過一會你就能夠看到虛擬機運行起來了,而且分配了IP地址。

輸入圖片說明

如今你可使用本身的私鑰經過SSH鏈接到機器。用戶名是依你所部屬的操做系統而異的。好比Ubuntu用戶的用戶名是Ubuntu,CentOS用戶是Centos,Fedora用戶是Fedora等等。

出於安全考慮,在默認狀況下,基於密碼的SSH鏈接是禁用的。若是你選擇放棄將公鑰添加到虛擬機規範中,你可使用NoVNC來訪問機器。單擊NoVNC按鈕打開瀏覽器內的控制檯。若是是Rancher提供的鏡像,那麼用戶名是rancher,密碼是rancher。

Dashboard提供了當前系統中CRDs的概要狀況:

輸入圖片說明

CLI

使用kubectl的用戶,能夠經過操做CRD從命令行來管理系統。這裏有一些從命令行向系統添加憑證和虛擬機的示例:https://github.com/rancher/vm/tree/master/hack/example

並非全部的修改都會當即生效,有時可能須要中止以後再啓動虛擬機才能響應一些規範的更改,好比CPU/內存分配的變動。

RancherVM的下一步開發計劃

在將來的幾周內,RancherVM將增長對實時遷移的支持。用戶可能會遇到這樣的狀況,例如現有虛擬機的資源需求超過了物理主機上可用的資源上限,或者運維人員爲了作一些維護工做而須要中斷主機執行,在這些狀況下,以一種對終端用戶而言透明的方式將正在運行的虛擬機遷移到另外一臺主機上,是相當重要的。

咱們也在考慮將RancherVM與像Longhorn這樣的複製塊存儲系統進行集成。

RancherVM徹底開源,任何人均可以避免費使用。將來RancherVM還會進一步發展。

相關文章
相關標籤/搜索