首页 > 其他分享 >制作KubeVirt镜像

制作KubeVirt镜像

时间:2024-07-23 17:59:19浏览次数:18  
标签:KubeVirt root 虚拟机 kubevirt master 镜像 openeuler 制作

目录

制作KubeVirt镜像

我们现在已经安装好了Kubevirt并且也运行了第一个虚拟机,但是这个虚拟机并不是我们想要的,我们现在想要自定义镜像

Kubernetes版本 1.28.2

1. 准备磁盘文件

openEuler的qcow2文件下载地址

我这里构建的是openeuler虚拟机,qcow2的文件我可以直接在各大镜像站下载到,下载完后是一个压缩文件,我们还需要解压

[root@master ~]# wget https://mirrors.tuna.tsinghua.edu.cn/openeuler/openEuler-22.03-LTS-SP4/virtual_machine_img/x86_64/openEuler-22.03-LTS-SP4-x86_64.qcow2.xz
[root@master ~]# xz -d openEuler-22.03-LTS-SP4-x86_64.qcow2.xz

这样一个磁盘文件我们就准备好了,当然也可以通过其他的方式去获取,例如通过KVM创建一个虚拟机然后把磁盘文件拿出来,或者通过openstack来得到qcow2文件

2. 编写Dockerfile

我们需要将这个磁盘文件传到容器镜像内部

[root@master ~]# mkdir -p kubevirt/images
[root@master ~]# cd kubevirt/images
[root@master images]# cp ~/openEuler-22.03-LTS-SP4-x86_64.qcow2 .
[root@master images]# ls
openEuler-22.03-LTS-SP4-x86_64.qcow2

文件放在这个地方,然后我们开始编写dockerfile

FROM openeuler/openeuler:22.03
ADD openEuler-22.03-LTS-SP4-x86_64.qcow2 /disk/openEuler-22.03-LTS-SP4-x86_64.qcow2

就只需要写这2行就可以了然后开始构建镜像

3. 构建镜像

[root@master images]# docker build -t openeuler2203-sp4:v1 .

接下来等待构建完成

4. 上传镜像到仓库(可选)

如果你没有私有镜像仓库的话,这一步可以不做,直接将镜像导出然后使用ctr导入(等会会说)

我们现在需要将镜像上传到私有仓库,所以我们得先修改镜像tag

[root@master images]# docker tag openeuler2203-sp4:v1 harbor.test.com/openeuler2203-sp4:v1
[root@master images]# docker push harbor.test.com/openeuler2203-sp4:v1

推送镜像之前得先登录,自行登录就好了,这里镜像就上传好了

5. 导出镜像

如果你没有私有仓库的话,就做这一步

[root@master images]# docker save -o openeuler.tar openeuler2203-sp4:v1
[root@master images]# ctr -n k8s.io image import  openeuler.tar

导入完成之后我们就可以使用这个镜像来启动虚拟机了,接下来我们准备一个虚拟机的启动模板

6. 虚拟机yaml文件

[root@master images]# vim oe-vm.yaml


apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
  name: openeuler
spec:
  running: false
  template:
    metadata:
      labels:
        kubevirt.io/domain: openeuler
    spec:
      domain:
        devices:
          disks:
          - name: rootfs
            disk:
              bus: virtio
          - name: cloudinit
            disk:
              bus: virtio
          interfaces:
          - name: default
            bridge: {}
        resources:
          requests:
            memory: 1Gi
          limits:
            memory: 1Gi
      networks:
      - name: default
        pod: {}
      volumes:
        - name: rootfs
          containerDisk:
            image: openeuler2203-sp4:v1
             # 这个地方填写刚刚传进去的磁盘文件名
            path: /disk/openEuler-22.03-LTS-SP4-x86_64.qcow2                    
        #- name: cloudinit
        #  cloudInitNoCloud:
        #    userData: |-
        #      #cloud-config
        #      password: openeuler
        #      chpasswd: { expire: False }
        #      ssh_pwauth: True
        #      packages:
        #       - nginx
        #     runcmd:
        #       - systemctl enable nginx
        #       - systemctl start nginx

最后面这一段是cloud-init,但是openeuler默认没有安装这个服务,所以写上也没用,换成其他的系统是完全OK的,这里的cloud-init是让他执行一些个性化的操作,我这里就是写的安装nginx并修改root的密码,在我这里不生效,所以我注释了

7. 启动虚拟机

我们准备好了镜像以及yaml文件,那么我们现在可以开始启动虚拟机了

[root@master images]# kubectl apply -f oe-vm.yaml
[root@master kubevirt]# kubectl get vms
NAME        AGE     STATUS    READY
openeuler   41s     Stopped   False

接下来我们启动这个虚拟机

[root@master kubevirt]# virtctl start openeuler
VM openeuler was scheduled to start
[root@master kubevirt]# kubectl get vms
NAME        AGE     STATUS    READY
openeuler   1m17s   Running   True

现在他已经变成running了,我们就可以连接进去了

[root@master kubevirt]# virtctl console openeuler
Successfully connected to openeuler console. The escape sequence is ^]

openeuler login: root
Password: 

Authorized users only. All activities may be monitored and reported.


Welcome to 5.10.0-216.0.0.115.oe2203sp4.x86_64

System information as of time: 	Tue Jul 23 09:32:59 AM UTC 2024

System load: 	0.38
Memory used: 	3.7%
Swap used: 	0.0%
Usage On: 	4%
IP address: 	10.244.219.127
Users online: 	1


[root@openeuler ~]#

这个镜像的默认密码是openEuler12#$

或者直接通过ssh连接,他的IP地址是10.244.219.127

[root@master kubevirt]# ssh [email protected]

Authorized users only. All activities may be monitored and reported.
[email protected]'s password: 

也是可以连接上的

8. 启动虚拟机报错

[root@master kubevirt]# kubectl apply -f oe-vm.yaml 
Warning: kubevirt.io/v1alpha3 is now deprecated and will be removed in a future release.
The request is invalid: spec.template.spec.volumes[2]: HostDisk feature gate is not enabled

如果你报这个错的话是因为没有开启这个hostDisk特性,我们将他打开就好了

[root@master kubevirt]# kubectl edit -n kubevirt kv kubevirt 


spec:
  configuration:
    developerConfiguration:
      featureGates:
      - HostDisk

找到这一段,将内容改成这样,然后保存退出即可解决报错

标签:KubeVirt,root,虚拟机,kubevirt,master,镜像,openeuler,制作
From: https://www.cnblogs.com/fsdstudy/p/18319195

相关文章

  • 我如何为 yolov5 制作 gui,从 pytorch 和 opencv 加载到 tkinker?
    请帮助我,我不明白如何使用yolo和tkinker作为gui来制作用于实时检测的gui。以及如何将边界框从pytorch渲染到tkinker?这里是代码:importtorchfrommatplotlibimportpyplotaspltimportnumpyasnpimportcv2model=torch.hub.load('ultralytics/yolov5......
  • 自编译制作docker版本的onlyoffice镜像
    笔记记录自编译制作docker版本的onlyoffice镜像一、环境:1、win11安装Ubuntu20.04.6.LTS2、需要开代理文件参考:https://helpcenter.onlyoffice.com/installation/docs-community-compile.aspx二、准备1、sudoapt-getupdate2、sudoapt-getinstall-ygitpythonopenssh-......
  • Kubevirt
    目录Kubevirt部署1.简介2.核心概念3.部署kubevirt3.1部署kubevirtoperator3.2开启嵌套虚拟机3.2.1intel3.2.2AMD3.3继续部署kubevirt3.4安装virtctl4.运行第一个虚拟机Kubevirt部署KubeVirt官网地址1.简介KubeVirt是一个用于在Kubernetes集群中运行和管理虚拟......
  • docker 基础镜像损坏
    dockerrun以后查看日志,提示报错,服务不能正常启动.#dockerlogs-f6413standard_init_linux.go:211:execuserprocesscaused"nosuchfileordirectory"standard_init_linux.go:211:execuserprocesscaused"nosuchfileordirectory"st......
  • 抖音私信卡片制作教程,使用W外链创建抖音/快手/小红书卡片
    在数字营销和社交媒体日益繁荣的今天,利用外部链接(W外链平台)为抖音平台创建卡片已成为一种有效的推广手段。抖音卡片不仅可以直接将观众导向目标网页或产品,还能提高用户的参与度和品牌的曝光度。下面,我们将详细介绍如何使用W外链平台创建抖音卡片。 一、了解W外链平台和抖音卡......
  • 用python制作终端向上滑动的效果
    我正在开发一个项目,需要时需要过渡效果。我正在通过CRT终端模拟器“cool-retro-term”运行这个python项目。我想让它像老式CRT终端一样,屏幕平滑地向上滑动所有字符以呈现下一行或刷新屏幕。像这样:终端滑动效果不是单独打印的字符,而是屏幕的滚动。到目......
  • 在 PyQt6 中,为小部件制作动画背景的好方法是什么?
    在QT中,您可以使用QLabel和QMovie来播放gif。我希望其他小部件位于动画背景前面,但您不能将其他小部件放置在QLabel中。例如,我有这个对话框。每个小部件都放置在QFramemain_frame中这就是我想要实现的目标,这里我使用静态图像作为main_frame上的背景。我想获得相......
  • 【Linux】基础I/O——动静态库的制作
    我想把我写的头文件和源文件给别人用1.把源代码直接给他2.把我们的源代码想办法打包为库1.制作静态库1.1.制作静态库的过程我们先看看怎么制作静态库的! makefile所谓制作静态库需要将所有的.c源文件都编译为(.o)目标文件。使用ar指令将所有目标文件打包为静态库。......
  • 389.权志龙明星主题网页 大学生期末大作业 Web前端网页制作 html5+css+js
    欢迎光临仙女的网页世界!这里有Web前端网页制作的各行各业的案例,样式齐全新颖,并持续更新!感谢CSDN,提供了这么好的知识学习、技术交流的平台,让我们在这里相遇,小伙伴们,来吧,让我们一起开启Web前端网页制作的奇妙之旅!说起Web前端,大学开启这扇技术之门以来,一切起始于兴趣爱好和......
  • Packer构建openStack镜像
    目录使用Packer自动化构建镜像使用Packer自动化构建镜像openstack插件安装:OpenStack|Integrations|Packer|HashiCorpDeveloperopenstack插件用法示例:OpenStackBuilder|Integrations|Packer|HashiCorpDeveloper安装openstack插件packerpluginsinstallgit......