云计算|OpenStack|社区版OpenStack安装部署文档(十三--- 自制镜像---Linux和Windows镜像)

简介: 云计算|OpenStack|社区版OpenStack安装部署文档(十三--- 自制镜像---Linux和Windows镜像)

前言:

接上篇文章

云计算|OpenStack|社区版OpenStack(实务操作---cloud-init的使用)

我们可以使用官方的镜像,通过cloud-init快速的使用openstack,但这样是有问题的,比如,以centos镜像为例,某些时候可能需要高版本的内核,或者其它的一些特殊定制,这个时候使用官方镜像就不太合适了,因为改动比较多,可能会存在使用失败的风险(比如,某个项目需要特别定制的环境)虽然使用cloud-init可能会达成目标,但复杂程度可能会很高。因此,自制镜像还是非常有必要的。

另外,官方并不提供Windows的镜像(Linux的所有版本镜像都是提供的),如果想在openstack中创建Windows系统的kvm虚拟机,无疑,只有自制镜像这一个方法了。

一,

自制openstack可以使用的Linux镜像

网上有非常多得自制Linux版kvm镜像的,没什么好说的,Linux基本都是支持virtio驱动的,在这里就不重复以往的内容了

kvm环境搭建:https://zskjohn.blog.csdn.net/article/details/124658437

kvm安装centos:https://zskjohn.blog.csdn.net/article/details/124656132

只是需要注意几点:1,kvm环境很重要,尽量使用高内核版本那个kvm  2,虚拟网卡br0也是很重要的 3,安装包文件也就是ISO文件尽量从官网下载

4,虚拟机安装完毕后,需要使用libguestfs工具包里的工具压缩节约磁盘空间,方便虚拟机在其它系统内运行。

#######附:--os-variant参数如何设定?找对应的,填写short ID,比如,要安装的是winserver 2021,那就写win2k12

[root@k8s-node2 opt]# osinfo-query os
 Short ID             | Name                                               | Version  | ID                                      
----------------------+----------------------------------------------------+----------+-----------------------------------------
 alpinelinux3.5       | Alpine Linux 3.5                                   | 3.5      | http://alpinelinux.org/alpinelinux/3.5  
 alpinelinux3.6       | Alpine Linux 3.6                                   | 3.6      | http://alpinelinux.org/alpinelinux/3.6  
 alpinelinux3.7       | Alpine Linux 3.7                                   | 3.7      | http://alpinelinux.org/alpinelinux/3.7  
 alpinelinux3.8       | Alpine Linux 3.8                                   | 3.8      | http://alpinelinux.org/alpinelinux/3.8  
 alt.p8               | ALT p8 StarterKits                                 | p8       | http://altlinux.org/alt/p8.starterkits  
 alt.p9               | ALT p9 StarterKits                                 | p9       | http://altlinux.org/alt/p9.starterkits  
 alt.sisyphus         | ALT regular                                        | sisyphus | http://altlinux.org/alt/sisyphus        
 alt8.0               | ALT 8 Education                                    | 8.0      | http://altlinux.org/alt/8.0             
 alt8.1               | ALT 8.1                                            | 8.1      | http://altlinux.org/alt/8.1
####后面的略略略。。。。。。。。。。。。。。。。       
 win2k12              | Microsoft Windows Server 2012                      | 6.3      | http://microsoft.com/win/2k12           
 win2k12r2            | Microsoft Windows Server 2012 R2                   | 6.3      | http://microsoft.com/win/2k12r2         
 win2k16              | Microsoft Windows Server 2016                      | 10.0     | http://microsoft.com/win/2k16           
 win2k19              | Microsoft Windows Server 2019                      | 10.0     | http://microsoft.com/win/2k19           
 win2k3               | Microsoft Windows Server 2003                      | 5.2      | http://microsoft.com/win/2k3            
 win2k3r2             | Microsoft Windows Server 2003 R2                   | 5.2      | http://microsoft.com/win/2k3r2   
####后面的略略略。。。。。。。。。。。。。。。。          

二,

自制openstack可以使用的Windows镜像

window镜像比较麻烦,麻烦点在于一个是磁盘驱动和网卡驱动的选择和安装,另一个是系统的激活问题,比如,win7激活可能需要工具,如何上传工具到虚拟机里?

Windows xp 虚拟机的安装:https://zskjohn.blog.csdn.net/article/details/126357233

Windows 7 旗舰版 虚拟机的安装:kvm安装Windows7旗舰版_晚风_END的博客-CSDN博客_kvm windows

####注:操作系统的安装ISO文件必须是纯净版的,而纯净版的操作系统是没有virtio驱动文件的,因此,可以下载其它云计算爱好者自制的集成了virtio驱动的文件,例如virtio_cn_windows_7_professional_with_sp1_vl_build_x64_dvd_u_677816.iso这样的文件,其内自带virtio驱动

下面以cn_windows_server_2012_r2_vl_x64_dvd_2979220.iso为例,在安装一遍(下载地址:MSDN, 我告诉你 - 做一个安静的工具站):

1,kvm环境

[root@k8s-node2 opt]# virsh -c qemu:///system
Welcome to virsh, the virtualization interactive terminal.
Type:  'help' for help with commands
       'quit' to quit
virsh # version
Compiled against library: libvirt 4.5.0
Using library: libvirt 4.5.0
Using API: QEMU 4.5.0
Running hypervisor: QEMU 1.5.3

2,

系统内核

[root@k8s-node2 opt]# uname -a
Linux k8s-node2 5.4.228-1.el7.elrepo.x86_64 #1 SMP Thu Dec 15 18:03:40 EST 2022 x86_64 x86_64 x86_64 GNU/Linux

3,

网络概况:

[root@k8s-node2 opt]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN qlen 1000
    link/ether 00:0c:29:85:c7:73 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::20c:29ff:fe85:c773/64 scope link 
       valid_lft forever preferred_lft forever
3: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether 00:0c:29:85:c7:73 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.13/24 brd 192.168.0.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe85:c773/64 scope link 
       valid_lft forever preferred_lft forever
5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
    link/ether 52:54:00:51:64:c3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
    link/ether 52:54:00:51:64:c3 brd ff:ff:ff:ff:ff:ff
8: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
    link/ether 02:42:15:7f:11:d9 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

4,

直接执行安装命令:

创建虚拟磁盘

[root@k8s-node2 opt]# qemu-img create -f qcow2 /opt/win2k12r2.qcow2 15G
Formatting '/opt/win2k12r2.qcow2', fmt=qcow2 size=16106127360 encryption=off cluster_size=65536 lazy_refcounts=off 

执行安装(这里是挂载两个光驱,硬盘模式要指定为IDE,如果是virtio将不能认到硬盘):

virt-install --name=win2k12r2 --ram 2048 --vcpus=2 --os-type=windows --os-variant win2k12r2 --disk path=/opt/win2k12r2.qcow2,bus=ide,size=15,format=qcow2  --accelerate --disk device=cdrom,path=/opt/cn_windows_server_2012_r2_vl_x64_dvd_2979220.iso --disk device=cdrom,path=/opt/virtio-win-0.1.102.iso   --vnc --vncport=5955 --vnclisten=0.0.0.0 --network bridge=br0 --force --autostart  --boot cdrom

驱动等待进入这个界面的时候在挂载:

接上面图片,下一步:

选择第四个数据中心安装,如果选择不带gui的,安装完成后将会是黑屏,只有一个cmd窗口:

接受许可:

因为是IDE,所以直接认到了,下一步

把E盘的网卡驱动选择了,隐藏那个√去掉:

等待安装完成:

此时登陆虚拟机,可以看到网卡驱动是virtio了(如果不是virtio,显示的是e1000,那么,需要修改xml文件指定为virtio):

安装完毕后,关闭虚拟机,重新编辑xml配置文件,将两个光驱卸载掉,再次重新启动:

cp /etc/libvirt/qemu/win2k12r2.xml ./

删除的内容:

    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/opt/cn_windows_server_2012_r2_vl_x64_dvd_2979220.iso'/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/opt/virtio-win-0.1.102.iso'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>

再次启动虚拟机:

[root@k8s-node2 opt]# virsh create win2k12r2.xml 
Domain win2k12r2 created from win2k12r2.xml

设置密码,就可以使用了

最后一步,压缩镜像:(一般压缩完了的话,可以小一半)

virt-sparsify --compress /opt/win2k12r2.qcow2 newwin2k12r2.img

当然,此镜像没有安装 cloudbase-init 服务,但不影响在私有云上运行

##########附:系统激活

可以有N种方式,不过秘钥激活成功率比较低,KMS工具还是比较可靠

虚拟机安装完毕后,开启远程连接服务,上传KMS工具即可。

密钥 Windows Server 2012 R2(ServerStandard)
安装密钥:
NB4WH-BBBYV-3MPPC-9RCMV-46XCB
产品密钥:
MMPXK-NBJDQ-JPM34-WX3FM-G276W

在openstack上运行此镜像,连接到控制台后,查看网卡信息应该如下:

可以ping通外网(virtio的驱动才可以正确联网,如果是其它的驱动上网会非常困难):

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
13天前
|
Kubernetes Linux Windows
第二章 Linux和windows部署helm 客户端
第二章 Linux和windows部署helm 客户端
44 0
|
13天前
|
Linux Shell Windows
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
|
13天前
|
安全 Linux Shell
全面对比linux和windows,选择哪个系统比较好
全面对比linux和windows,选择哪个系统比较好
128 0
|
13天前
|
Rust Linux iOS开发
|
13天前
|
Java Linux Windows
java在Linux执行命令Java在Windows执行命令
java在Linux执行命令Java在Windows执行命令
19 0
|
13天前
|
iOS开发 MacOS Windows
|
13天前
|
弹性计算 运维 安全
阿里云服务器Windows和Linux操作系统区别对比
阿里云服务器Windows和Linux操作系统区别对比,性能有差异吗?有,同配置下Linux性能要优于Windows,但这与阿里云无关,仅仅是linux和windows之间的区别。另外,阿里云提供的windows和linux操作系统均为正版授权,用户不需要额外支付许可费用,如何选择?看用户自己的应用程序情况。
|
13天前
|
NoSQL Linux Redis
Redis的介绍,以及Redis的安装(本机windows版,虚拟机Linux版)和Redis常用命令的介绍
Redis的介绍,以及Redis的安装(本机windows版,虚拟机Linux版)和Redis常用命令的介绍
34 0
|
13天前
|
前端开发 Linux iOS开发
【Flutter前端技术开发专栏】Flutter在桌面应用(Windows/macOS/Linux)的开发实践
【4月更文挑战第30天】Flutter扩展至桌面应用开发,允许开发者用同一代码库构建Windows、macOS和Linux应用,提高效率并保持平台一致性。创建桌面应用需指定目标平台,如`flutter create -t windows my_desktop_app`。开发中注意UI适配、性能优化、系统交互及测试部署。UI适配利用布局组件和`MediaQuery`,性能优化借助`PerformanceLogging`、`Isolate`和`compute`。
【Flutter前端技术开发专栏】Flutter在桌面应用(Windows/macOS/Linux)的开发实践
|
13天前
|
Linux Python Windows
Python虚拟环境virtualenv安装保姆级教程(Windows和linux)
Python虚拟环境virtualenv安装保姆级教程(Windows和linux)