在K8S上使用RancherVM,以容器的方式跑虚机

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: RancherVM是一个开源的、轻量化的虚拟机管理工具,让用户能够和运行Docker容器一样,打包和运行虚拟机。 RancherVM项目自几年前推出以来,得到了大量用户的积极反馈。用户也在过去几年时间里为Rancher Labs工程团队提出了不少极有价值的意见与建议,尤其是对节点集群上的虚拟机的管理这一方面的需求。

RancherVM是一个开源的、轻量化的虚拟机管理工具,让用户能够和运行Docker容器一样,打包和运行虚拟机。

RancherVM项目自几年前推出以来,得到了大量用户 的积极反馈。用户也在过去几年时间里为Rancher Labs工程团队提出了不少极有价值的意见与建议,尤其是对节点集群上的虚拟机的管理这一方面的需求。

如今,用户可以在Kubernetes上使用RancherVM了! 现在的RancherVM中添加了资源调度、基于浏览器的VNC客户端、IP地址发现、基于密钥的身份验证以及新版本的用户界面。本文将带你一探究竟!


RancherVM设计思路

RancherVM在深层次上大量使用了Docker容器化以及容器镜像仓库。虚拟机基础镜像被打包成Docker镜像发布到任意Docker镜像仓库中。RancherVM还自带了很多存储在Docker Hub中的、大受欢迎的操作系统镜像。用户可以在各种公有和私有镜像仓库中进行自由选择,甚至可以运行自己的私有镜像仓库:https://docs.docker.com/regis...

现在,每个虚拟机都运行在Kubernetes pod中,我们称之为VM pod。Kubernetes控制器负责管理vm pod的生命周期,授予用户启动或关闭虚拟机、修改机器的cpu和内存分配的权限等等。

持久化存储

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集群中。

474865fd945103953fec4ef0ef3f47a78b9382d5

GUI

部署完成后,你可以通过查询前端Kubernetes服务找到UI端点:

eec077ff41c165a97ecfb185aa1320d2999e4513

现在你可以导航到<node_ip>:30874来访问UI。

如果想要启动SSH远程访问,你还可以添加你的公钥。在Credentials界面上,单击Create,添加你的公钥,起上一个好名字后,然后单击OK。

f93005f07c2dce1427086f36c39e9db7c2793d9f

创建实例也非常简单。在Instances界面上单机Create。你会看到一个需要填写的表格。你需要添加自己的公钥或者启用NoVNC网络服务器。单击OK就可以了!

f372e20a84249afcc411fa5ea504cff7e0d74c06

过一会你就可以看到虚拟机运行起来了,并且分配了IP地址。

8306813431f52c0b74f6bba4460166364602b6d7

现在你可以使用自己的私钥通过SSH连接到机器。用户名是依你所部属的操作系统而异的。比如Ubuntu用户的用户名是Ubuntu,CentOS用户是Centos,Fedora用户是Fedora等等。

出于安全考虑,在默认情况下,基于密码的SSH连接是禁用的。如果你选择放弃将公钥添加到虚拟机规范中,你可以使用NoVNC来访问机器。单击NoVNC按钮打开浏览器内的控制台。如果是Rancher提供的镜像,那么用户名是rancher,密码是rancher。

Dashboard提供了当前系统中CRDs的概要情况:

e756a9632431bbf910bbcdeabf62269ae3358cf0

CLI

使用kubectl的用户,可以通过操作CRD从命令行来管理系统。这里有一些从命令行向系统添加凭证和虚拟机的示例:https://github.com/rancher/vm...

并不是所有的修改都会立即生效,有时可能需要停止之后再启动虚拟机才能响应一些规范的更改,比如CPU/内存分配的变更。

RancherVM的下一步开发计划

在未来的几周内,RancherVM将增加对实时迁移的支持。用户可能会遇到这样的情况,例如现有虚拟机的资源需求超过了物理主机上可用的资源上限,或者运维人员为了做一些维护工作而需要中断主机执行,在这些情况下,以一种对终端用户而言透明的方式将正在运行的虚拟机迁移到另一台主机上,是至关重要的。

我们也在考虑将RancherVM与像Longhorn这样的复制块存储系统进行集成。

本文转自中文社区-在K8S上使用RancherVM,以容器的方式跑虚机

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
1月前
|
缓存 Kubernetes Docker
容器服务ACK常见问题之容器服务ACK ingress websocket配置失败如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
1月前
|
存储 运维 Kubernetes
容器服务ACK常见问题之容器服务ACK 淘宝源过期了如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
22天前
|
Kubernetes 容器
k8s容器时间与服务器时间不一致问题
k8s容器时间与服务器时间不一致问题
18 0
|
10天前
|
JSON Kubernetes Go
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
21 0
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
|
24天前
|
Kubernetes API 调度
总结归纳Kubernetes | 一站式速查知识,助您轻松驾驭容器编排技术(水平扩展控制)
总结归纳Kubernetes | 一站式速查知识,助您轻松驾驭容器编排技术(水平扩展控制)
47 0
|
1月前
|
Kubernetes SDN 微服务
微服务与 Kubernetes 容器云的边界
【2月更文挑战第30天】该文探讨了微服务与Kubernetes集群的关系,主要关注是否应跨多集群部署。理想的状况是每个微服务对应一个Kubernetes集群,配置和注册中心在同一集群内,以减少网络延迟。
|
1月前
|
存储 Kubernetes 监控
容器服务ACK常见问题之容器服务ACK启动时readiness告警如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
1月前
|
存储 监控 Kubernetes
容器服务ACK常见问题之cmonitor-agent容器一直没起来如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
1月前
|
存储 Kubernetes 监控
容器服务ACK常见问题之容器服务ACK worker节点选择不同地域失败如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
1月前
|
弹性计算 运维 Kubernetes
容器服务ACK常见问题之线上的K8s一直waiting如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。

热门文章

最新文章