首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

制作KubeVirt镜像

编程知识
2024年07月23日 16:47

目录

制作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 root@10.244.219.127

Authorized users only. All activities may be monitored and reported.
root@10.244.219.127'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

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

From:https://www.cnblogs.com/fsdstudy/p/18319195
本文地址: http://shuzixingkong.net/article/337
0评论
提交 加载更多评论
其他文章 【实时最新】开源新纪元:Llama 3.1超大杯405B跑分惊艳,首次超越GPT-4o,下载链接曝光!
开源巨擘Llama 3.1崭露头角,性能卓越引发热议 在科技界的瞩目下,Llama 3.1系列模型以其卓越的性能脱颖而出,尤其是其405B超大杯版本,在微软Azure-ML GitHub平台的多项评测中展现出非凡实力,不仅超越了GPT-4o,就连70B版本也能与GPT-4o分庭抗礼。值得注意的是,这
【实时最新】开源新纪元:Llama 3.1超大杯405B跑分惊艳,首次超越GPT-4o,下载链接曝光! 【实时最新】开源新纪元:Llama 3.1超大杯405B跑分惊艳,首次超越GPT-4o,下载链接曝光! 【实时最新】开源新纪元:Llama 3.1超大杯405B跑分惊艳,首次超越GPT-4o,下载链接曝光!
从DDPM到DDIM (一) 极大似然估计与证据下界
从DDPM到DDIM (一) 极大似然估计与证据下界 现在网络上关于DDPM和DDIM的讲解有很多,但无论什么样的讲解,都不如自己推到一遍来的痛快。笔者希望就这篇文章,从头到尾对扩散模型做一次完整的推导。本文的很多部分都参考了 Calvin Luo[1] 和 Stanley Chan[2] 写的经典
从DDPM到DDIM (一) 极大似然估计与证据下界 从DDPM到DDIM (一) 极大似然估计与证据下界
面试题:如何解决缓存和数据库的一致性问题?
所谓的一致性问题是指,在同时使用缓存和数据库的情况下,要确保数据在缓存与数据库中的更新操作保持同步。也就是当对数据进行修改时,无论是先修改缓存还是先修改数据库,最终都要保证两者的数据是一样的,不会出现数据不一样的问题。 1.一致性问题解决方案 缓存和数据库一致性的经典解决方案有以下两个: 使用延迟双
面试题:如何解决缓存和数据库的一致性问题? 面试题:如何解决缓存和数据库的一致性问题?
一文全解:LVM(逻辑卷管理器)
一般而言,在生产环境中无法在最初时就精确地评估每个硬盘分区在日后的使用情况,因此会导致原先分配的硬盘分区不够用。比如,伴随着业务量的增加,用于存放交易记录的数据库目录的体积也随之增加;因为分析并记录用户的行为从而导致日志目录的体积不断变大,这些都会导致原有的硬盘分区在使用上捉襟见肘。硬盘分好区或者部
一文全解:LVM(逻辑卷管理器) 一文全解:LVM(逻辑卷管理器) 一文全解:LVM(逻辑卷管理器)
SpringBoot实战:Spring Boot接入Security权限认证服务
引言 Spring Security 是一个功能强大且高度可定制的身份验证和访问控制的框架,提供了完善的认证机制和方法级的授权功能,是一个非常优秀的权限管理框架。其核心是一组过滤器链,不同的功能经由不同的过滤器。本文将通过一个案例将 Spring Security 整合
SpringBoot实战:Spring Boot接入Security权限认证服务
VUE系列---深度解析 Vue 优化策略
在前端开发中,性能优化一直是一个重要的课题。Vue.js 提供了多种优化策略,帮助开发者构建高性能的应用。本文将深入解析以下几个优化策略: 使用 v-once、v-if 和 v-show 的区别和优化 通过异步组件提升性能 一、v-once、v-if 和 v-show 的区别和优化 1. v-onc
LeetCode102.二叉树的层序遍历
LeetCode题目链接:https://leetcode.cn/problems/binary-tree-level-order-traversal/submissions/548489149/ 题目叙述: 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)
LeetCode102.二叉树的层序遍历
[rCore学习笔记 017]实现批处理操作系统
写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 本章目的 实现批处理操作系统,每当一个应用程序执行完毕,都需要将下一个要执行的应用的代码和数据加载到内存.