一文告诉你,如何在 Kubernetes 的容器引擎中运行 KVM 和 VMware VM!

作者 | Gilson Melo

译者 | 天道酬勤 责编 | 徐威龙

封图| CSDN下载于视觉中国

随着微服务的出现,人们通常会问:“是否有可能通过Kubernetes上的微服务在基于内核的虚拟机(KVM)或VMware 中运行我的旧虚拟机,还是需要将它们迁移到容器上?” 这个问题的一个可能的答案是:KubeVirt

KubeVirt项目将Kubernetes变成用于应用程序容器和虚拟机工作负载的编排引擎。它解决了已经采用或想要采用Kubernetes的开发团队的需求,但是它们具有现有的基于虚拟机的工作负载,因此无法轻松地放入容器中。该技术提供了一个统一的开发平台,开发人员可以在其中构建、修改和部署驻留在公共共享环境中的应用程序容器和虚拟机中的应用程序。

注意:KubeVirt可以在外部云提供商(例如Oracle云基础架构)上进行测试,但是此设置尚不适合生产!

开始

适用于Kubernetes的Oracle云基础架构容器引擎(有时称为OKE)提供了可靠且可扩展的集成工作流平台,用于在云中构建、测试、部署和监视代码。用于Kubernetes的容器引擎可帮助你在云中部署、管理和扩展Kubernetes集群。借助它,你可以通过将Kubernetes与在Oracle 云基础架构上运行的服务相结合来构建动态的容器化应用程序。

KubeVirt可以部署在容器引擎上,用于具有裸机或虚拟机形状的Kubernetes工作者节点。如果你的群集工作器节点配备有虚拟机形状,则KubeVirt以嵌套模式运行你的旧KVM或VMware VM。

要求

 

必须安装和配置Oracle云基础架构命令行界面(CLI)和Kubernetes的容器引擎kubectl CLI。有关更多信息,请参见用于Kubernetes的Container Engine文档:https://docs.cloud.oracle.com/iaas/Content/ContEng/Concepts/contengoverview.htm。你还可以使用Cloud Shell,这是一个可从Oracle云基础架构控制台访问的基于浏览器的终端。  CLI已预先安装并在Cloud Shell中配置。

部署

 

请按照以下步骤为Kubernetes的容器引擎部署KubeVirt。 

步骤一:部署KubeVirt管理员

1. 运行用于Kubernetes集群和NodePool节点的容器引擎。

2. 设置要在命令上使用的版本环境变量:

export KUBEVIRT_VERSION=$(curl -s https://api.github.com/repos/kubevirt/kubevirt/releases | grep tag_name | grep -v -- - | sort -V | tail -1 | awk -F':' '{print $2}' | sed 's/,//' | xargs)
echo $KUBEVIRT_VERSION

3. 使用kubectl工具,部署KubeVirt运算符:

kubectl create -f https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-operator.yaml
4. 确保KubeVirt管理员正在运行:
[root@kvmvbox ~]# kubectl get pods -n kubevirt
virt-operator-6b5455546b-56dvx     1/1     Running   0          39h
virt-operator-6b5455546b-5pwdj     1/1     Running   0          39h

5.检查虚拟化扩展。当你将Oracle Cloud Infrastructure VM形状与Oracle Linux映像一起使用时,这些形状应默认情况下启用嵌套虚拟化,并且cpuinfo文件应具有VMX标志。使用egrep命令进行检查。

egrep 'svm|vmx' /proc/cpuinfo

步骤二:部署KubeVirt

1.通过创建专用的自定义资源来部署KubeVirt:

kubectl create -f https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-cr.yaml

2.检查部署:      

步骤三:安装virtctl

另一个二进制文件可快速访问虚拟机的串行和图形端口,并处理启动和停止操作。该工具称为virtctl,你可以从KubeVirt的发行页面中检索它:

curl -L -o virtctl \
https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/virtctl-${KUBEVIRT_VERSION}-linux-amd64
chmod +x virtctl

步骤四:测试KubeVirt 

现在是时候测试KubeVirt和Kubernetes的容器引擎了,测试方法是运行遗留的KVM或VMware VM以及容器。KubeVirt提供了一些实验室,让你在尝试遗留的KVM或VMware VM之前对其进行测试。

第一个实验是使用 KubeVirt,它引导你完成在Kubernetes上创建VM实例的过程,然后向你展示如何使用virtctl与其控制台进行交互。       

第二个实验是使用容器化数据导入器(CDI)进行实验,向你展示如何使用CDI将VM映像导入到持久卷声明(PVC)中,然后如何定义VM以使用PVC。

 

在容器引擎中运行KVM和VMware VM

如果你打算划在Kubernetes的容器引擎中运行KVM或VMware VM,则必须首先将磁盘转换为原始格式。有两个免费的实用程序可以帮助你做到这一点:Oracle VirtualBox VBoxManage和QEMU磁盘映像实用程序。

  • VBoxManage是Oracle VM VirtualBox的CLI。你可以使用它从主机OS的命令行控制Oracle VM VirtualBox。  VBoxManage提供了虚拟化引擎的所有功能,它使你可以将磁盘转换为不同的格式。

在CLI中使用以下命令将VM磁盘转换为原始格式:

VBoxManage clonehd --format RAW kvm_qcow2_OR_VMware_vmdk_disk disk-name.img
  • QEMU磁盘映像实用程序,称为QEMU-img,还可以将磁盘转换为其他格式。例如,要在运行Oracle Linux的计算机上安装它,请运行以下命令:

sudo yum install qemu-img然后,运行以下命令以将VM磁盘转换为原始格式:
qemu-img convert kvm_qcow2_OR_VMware_vmdk_disk -O raw disk-name.img转换磁盘后,你可以使它们可供在用于Kubernetes的容器引擎中使用。你有以下几种选择:
  • 将磁盘上载到工作程序节点,并使用hostpath运行它。

  • 创建原始磁盘的Docker映像,并将其上传到Oracle Cloud Infrastructure Registry之类的公共注册表中。

  • 克隆磁盘并使用它创建持久卷声明。

所有这些选项都在KubeVirt GitHub存储库和KubeVirt文档中进行了说明。

 

演示案例

 

下面是KubeVirt与用于Kubernetes的容器引擎一起使用的快速示例。在此演示中,我们使用Microsoft Windows 2012 KVM VM映像,该映像已转换为原始格式并上传到工作节点。

现在,它可以与同一pod子网CIDR中的其他本机Nginx容器一起运行。  Windows操作系统现在可以使用内部负载平衡器IP地址访问Nginx网页。

因此,Windows KVM VM的行为类似于Kubernetes窗格,这使其可以与其他用于Kubernetes服务的容器引擎进行本地交互。       

如果有不清楚的地方或其他意见,欢迎评论告诉我们。

原文:https://dzone.com/articles/kvm-vmware-vms-in-container-engine-for-kubernetes

同时,欢迎所有开发者扫描下方二维码填写《开发者与AI大调研》,只需2分钟,便可收获价值299元的「AI开发者万人大会」在线直播门票!

推荐阅读:在容器上构建持续部署及最佳实践初探在Kubernetes上部署一个简单的、类PaaS的平台,原来这么容易!全球呼吸机告急!医疗科技巨头美敦力“开源”设计图和源代码互联网之父确诊新冠,一代传奇:任谷歌副总裁、NASA 访问科学家微软为一人收购一公司?破解索尼程序、写黑客小说,看他彪悍的程序人生!2020年,这20个大家都认识的加密交易所过得怎么样?真香,朕在看了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

性能压测工具选型对比

本文是《Performance Test Together》(简称PTT)系列专题分享的第二期,该专题将从性能压测的设计、实现、执行、监控、问题定位和分析、应用场景等多个纬度对性能压测的全过程进行拆解,以帮助大家构建完整的性能压测的理论体系&…

adb-基础命令

查看连接 adb devices --查看连接的手机安装APP adb install -r apk在电脑路径 -- 安装APP adb install -r 替换已存在的应用程序,也就是说强制安装 adb install -g 为应用程序授予所有运行时的权限 -l 锁定该应用程序 -r 替换已存在的应用程序&…

大数据架构如何做到流批一体?

阿里妹导读:大数据与现有的科技手段结合,对大多数产业而言都能产生巨大的经济及社会价值。这也是当下许多企业,在大数据上深耕的原因。大数据分析场景需要解决哪些技术挑战?目前,有哪些主流大数据架构模式及其发展&…

一群阿里人如何用 10 年自研洛神云网络平台?技术架构演进全揭秘!

【CSDN 编者按】逍遥子曾说,对阿里人来说「打仗是最好的团建,参加过双 11 的叫战友」,同样,参加过多次双 11 考验的系统技术都会成为真正意义上的基础设施,阿里云飞天系统的云网络平台洛神就是如此。本文作者 —— 阿里…

数据人看Feed流-架构实践

背景 Feed流:可以理解为信息流,解决的是信息生产者与信息消费者之间的信息传递问题。 我们常见的Feed流场景有: 1 手淘,微淘提供给消费者的首页商品信息,用户关注店铺的新消息等 2 微信朋友圈,及时获取朋友…

Java-端口

windows 查看端口 netstat -ano # 查看所有端口 netstat -ano | findstr "8080" # 查看含有8080的行,查看指定端口 tasklist | findstr "20100" # 查看指定端口的进程 Ctrl Shift Esc # 打开任务管理器public class TestInetSocketAddr…

“出道” 5 年采用率达 78%,Kubernetes 的成功秘诀是什么?

作者 | Matt Asay译者 | 天道酬勤 责编 | 徐威龙封图| CSDN下载于视觉中国很难相信Kubernetes直到2015年中期(首次提交后的一年)才达到1.0版本,因为容器编排平台目前已经在云原生计算基金会(CNCF)调查的企业中生产了78…

Java-内置注解

注解: Java.Annotation (注释 comment) // 什么是注解 public class Test01 extends Object{// Override 重写的注解Overridepublic String toString() {return super.toString();} }// SuppressWarnings 镇压警告,写了就没有 变量没有使用的警告了Sup…

使用Quick BI连接AnalyticDB for PostgreSQL数据源

本文介绍如何通过阿里云Quick BI连接AnalyticDB for PostgreSQL数据库。 在Quick BI中新建AnalyticDB for PostgreSQL数据源 登录Quick BI控制台。单击工作空间>数据源,进入数据源管理页面。单击新建数据源>AnalyticDB for PostgreSQL。在添加AnalyticDB fo…

开源背后 | 面对端侧推理引擎的挑战,阿里工程师如何应对?

阿里妹导读:MNN(Mobile Neural Network)已于今年5月7日在 Github 上正式开源。淘宝无线开发专家——陈以鎏(离青)在 GMTC 全球大前端技术大会为大家分享了 MNN 开发、开源中的思考与总结,通过淘宝在移动 AI…

财报上新不久的Mobvista,还内藏何种“惊艳”?

本文为CSDN博主「L-JingJing」的原创文章 原文链接:https://blog.csdn.net/sch881226/article/details/105362679 就在不久前,Mobvista刚刚发布了2019年的财报数据。我们观察到其程序化广告收入已高达22.3亿元,同比增长40.8%;经…

Java-元注解

// 测试 元注解 public class Test02 {MyAnnotationpublic void test(){} } // 定义一个注解 // Target 表示注解可以用在哪些地方 ElementType.METHOD 是方法 ElementType.TYPE是类 Target(value {ElementType.METHOD, ElementType.TYPE})// Retention 表示注解在什么地方有…

容器十年 ——一部软件交付编年史

作者| 张磊,阿里云容器平台高级技术专家,CNCF Ambassador (CNCF 官方大使),Kubernetes 项目资深成员与维护者,曾就职于 Hyper、微软研究院(MSR),现在负责 Kubernetes 技术…

Java-自定义注解

// 自定义注解 public class Test03 {// 注解可以显示赋值, 如果没有默认值,我们就必须给注解赋值MyAnnotation2(name"wang")public void test1(){}// 当只有 一个值 为value 时, 可以不用写 value""MyAnnotation3("…

如何带领团队“攻城略地”?优秀的架构师这样做

阿里妹导读:架构师是一个既能掌控整体又能洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。看似完美的“人格模型”背后,是艰辛的探索。今天,阿里巴巴技术专家九摩将多年经验,进行系统性地总结,帮助更…

资深程序员总结:分析Linux进程的6个方法,我全都告诉你

来源 | 后端技术学堂封图| CSDN下载于视觉中国操作系统「进程」是学计算机都要接触的基本概念,抛开那些纯理论的操作系统底层实现,在Linux下做软件开发这么多年,每次程序运行出现问题,都要一步一步分析进程各种状态,去…

蚂蚁金服胡喜:金融服务将成为开源的下个前沿领域

近日,全球知名开源组织云原生计算基金会 CNCF 宣布,蚂蚁金服正式成为 CNCF 黄金会员。为什么蚂蚁金服会拥抱开源,科技公司和开源社区如何实现双赢且可持续发展?蚂蚁金服副CTO胡喜在TechCrunch上发表专栏阐述了自己的见解。 自诞生…

Java-反射概述

// 什么叫反射 public class Test02 {public static void main(String[] args) throws ClassNotFoundException {// 通过反射获取类的 Class 对象Class c1 Class.forName("reflection.User");Class c2 Class.forName("reflection.User");Class c3 Class…

PLSQL 设置日期格式为年月日不显示时分秒

在这里插入代码片nls_date_format YYYY-MM-DDnls_timestamp_format YYYY-MM-DD

云原生应用 Kubernetes 监控与弹性实践

前言 云原生应用的设计理念已经被越来越多的开发者接受与认可,而Kubernetes做为云原生的标准接口实现,已经成为了整个stack的中心,云服务的能力可以通过Cloud Provider、CRD Controller、Operator等等的方式从Kubernetes的标准接口向业务层…