RancherVM是一个开源的、轻量化的虚拟机管理工具,让用户可以和运行Docker容器同样,打包和运行虚拟机。前端
RancherVM项目自几年前推出以来,获得了大量用户的积极反馈。用户也在过去几年时间里为Rancher Labs工程团队提出了很多极有价值的意见与建议,尤为是对节点集群上的虚拟机的管理这一方面的需求。node
现在,用户能够在Kubernetes上使用RancherVM了! 如今的RancherVM中添加了资源调度、基于浏览器的VNC客户端、IP地址发现、基于密钥的身份验证以及新版本的用户界面。本文将带你一探究竟!git
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须要一个运行中的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与像Longhorn这样的复制块存储系统进行集成。
RancherVM彻底开源,任何人均可以避免费使用。将来RancherVM还会进一步发展。