云计算|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的驱动才可以正确联网,如果是其它的驱动上网会非常困难):

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
1月前
|
安全 Linux 虚拟化
|
4月前
|
Linux 数据安全/隐私保护 Windows
Linux共享Windows目录
Linux共享Windows目录
|
16天前
|
关系型数据库 MySQL Linux
MySQL数据库下载安装教程(Windows&Linux)
本文档详细介绍了MySQL的安装步骤,包括安装前的准备工作、下载安装包、Windows和Linux系统下的具体安装流程,以及如何配置MySQL服务、设置环境变量、启动服务和连接数据库等关键操作。
|
2月前
|
Java Linux
java读取linux服务器下某文档的内容
java读取linux服务器下某文档的内容
42 3
java读取linux服务器下某文档的内容
|
2月前
|
Linux 编译器 C语言
Linux c/c++之多文档编译
这篇文章介绍了在Linux操作系统下使用gcc编译器进行C/C++多文件编译的方法和步骤。
45 0
Linux c/c++之多文档编译
|
2月前
|
运维 网络安全 虚拟化
Windows系统镜像检测修复建议
Windows系统镜像检测修复建议
|
2月前
|
关系型数据库 MySQL Linux
Navicat 连接 Windows、Linux系统下的MySQL 各种错误,修改密码。
使用Navicat连接Windows和Linux系统下的MySQL时可能遇到的四种错误及其解决方法,包括错误代码2003、1045和2013,以及如何修改MySQL密码。
277 0
|
4月前
|
Unix Linux Ruby
在windows和linux上高效快捷地发布Dash应用
在windows和linux上高效快捷地发布Dash应用
|
4月前
|
Linux iOS开发 开发者
跨平台开发不再难:.NET Core如何让你的应用在Windows、Linux、macOS上自如游走?
【8月更文挑战第28天】本文提供了一份详尽的.NET跨平台开发指南,涵盖.NET Core简介、环境配置、项目结构、代码编写、依赖管理、构建与测试、部署及容器化等多个方面,帮助开发者掌握关键技术与最佳实践,充分利用.NET Core实现高效、便捷的跨平台应用开发与部署。
361 3
|
4月前
|
Ubuntu Linux 虚拟化
安装Windows Linux 子系统的方法:适用于windows 11 版本
本文提供了在Windows 11系统上安装Linux子系统(WSL)的详细步骤,包括启用子系统和虚拟化功能、从Microsoft Store安装Linux发行版、设置WSL默认版本、安装WSL2补丁,以及完成Ubuntu的首次安装设置。
1223 2
下一篇
DataWorks