一文告诉你,如何在 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,一经查实,立即删除!

相关文章

Flowable 数据库表结构 ACT_RU_EXECUTION

运行时流程执行实例表( act_ru_execution ) 字段名称字段描述数据类型主键为空取值说明ID_ID_nvarchar(64)√ID_REV_乐观锁int√乐观锁PROC_INST_ID_流程实例IDnvarchar(64)流程实例IDBUSINESS_KEY_业务主键IDnvarchar(255)√业务主键IDPARENT_ID_父节点实例IDnvarchar(64)√父…

性能压测工具选型对比

本文是《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 考验的系统技术都会成为真正意义上的基础设施,阿里云飞天系统的云网络平台洛神就是如此。本文作者 —— 阿里…

Flowable 数据库表结构 ACT_RE_PROCDEF

流程定义数据表( act_re_procdef ) 业务流程定义数据表。此表和 ACT_RE_DEPLOYMENT 是多对一的关系,即,一个部署的bar包里可能包含多个流程定义文件,每个流程定义文件都会有一条记录在 ACT_REPROCDEF 表内,每个流程定义的数据&…

数据人看Feed流-架构实践

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

Java-端口

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

Flowable 数据库表结构 ACT_RU_EVENT_SUBSCR

字段名称字段描述数据类型主键为空取值说明ID_事件IDnvarchar(64)√事件IDREV_版本int√乐观锁VersionEVENT_TYPE_事件类型nvarchar(255)事件类型EVENT_NAME_事件名称nvarchar(255)√事件名称EXECUTION_ID_执行实例IDnvarchar(64)√执行实例IDPROC_INST_ID_流程实例IDnvarchar(…

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

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

K8S环境中NAS卷添加noresvport方法

通过K8S使用NAS卷,请区分以下场景: 静态存储卷: 使用阿里云ACK,PV、PVC方式,nfs驱动; 使用阿里云ACK,PV、PVC方式,Flexvolume驱动; 使用阿里云ACK,…

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…

Flowable 数据库表结构 ACT_RE_MODEL

流程设计模型部署表( act_re_model ) 流程设计器设计流程后,保存数据到该表。 字段名称字段描述数据类型主键为空取值说明ID_ID_nvarchar(64)√ID_ID_ID_nvarchar(64)√ID_REV_乐观锁int√乐观锁NAME_名称nvarchar(255)√名称KEY_KEY_nvarchar(255)√分类CATEGORY_…

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

阿里妹导读: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 表示注解在什么地方有…

Flowable 数据库表结构 ACT_RE_DEPLOYMENT

部署信息表( act_re_deployment ) 部署流程定义时需要被持久化保存下来的信息。 字段名称字段描述数据类型主键为空取值说明ID_ID_nvarchar(64)√主键IDNAME_部署名称nvarchar(255)√部署文件名CATEGORY_分类nvarchar(255)√类别DEPLOY_TIME_部署时间datetime√部署时间

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

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

MaxCompute 项目子账号做权限管理

场景: 一个企业使用多款阿里云产品,MaxCompute是其中一个产品,用的是同个主账号,主账号不是由使用MaxCompute的大数据同学管理, 大数据同学使用的是子账号。大数据同学日常需要给MaxCompute项目 操作新增子账号&#…