通常云服務(wù)商提供的多為基礎(chǔ)鏡像主機,無法定制系統(tǒng)環(huán)境。
本篇主要為了解決項目上云過程有自定義鏡像需求以達到快速部署集群需求以節(jié)約時間成本的場景
如:項目鏡像需要集成k8s、agent腳本等各種集成場景。
本篇為新手入門向的基礎(chǔ)教程,詳細命令可參考:
libvirt命令幫助手冊——筑夢之路_筑夢之路的博客-CSDN博客
準備環(huán)節(jié):
一個VNC工具,強烈建議用mobax
一個vmware
1,電腦上裝個vmware,并且用鏡像起個linux系統(tǒng)。建議單獨給這個臺機器再單獨掛個50G的盤把一會起虛機用鏡像放里面(注意在處理器那里打開虛擬化)
)
Index of /centos-vault/7.6.1810/isos/x86_64/?上古鏡像下載地址
附,阿里云鏡像站CENTOS7.9鏡像下載地址:https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso
2.建議裝個GUI界面,系統(tǒng)安裝結(jié)束,進入系統(tǒng),這里用要改用阿里的yum源的話建議先用原來yum源install一個wget,install -y install wget
然后直接
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或自行更改/etc/yum.repos.d源(可以使用rm -rf /etc/yum.repos.d/*清空原系統(tǒng)自帶yum源)
注(如沒有,可無視這段跳到3.):如果你像我一樣還沒yum wget就先把yum的.repo文件全刪了,導(dǎo)致vmware-tools也沒法安裝,就建議改一下vmware當(dāng)前虛擬機的網(wǎng)卡配置,改成僅主機模式和你個人電腦在同一個網(wǎng)絡(luò)內(nèi),然后配置一下linux的/etc/sysconf/network-scripts/目錄下的ifcfg-xxx;我這里是ifcfg-ens33,網(wǎng)卡配置文件。
然后BOOTPROTO=如果是none的話改成static(靜態(tài)IP)
prefix改成24或者其他,只要別是默認的32位掩碼就行..
onboot=yes(開機時候啟動本網(wǎng)卡)
IPADDR=192.168.110.110(改一個IP,和你本機電腦的vmware虛擬網(wǎng)卡要在同一個網(wǎng)段)
然后wq!保存
systemctl restart network重啟網(wǎng)卡
再配一下你個人電腦vmware的虛擬網(wǎng)卡就OK,注意掩碼別搞錯,或者和虛擬機IP沖突建議用24掩碼,就是255.255.255.0,能ping通就OK,然后用xshell或者xmoba ssh過去可以復(fù)制粘貼yum源了,灰常方便。
3.yum kvm虛擬化組件
這里命令照搬參考CentOS7 KVM環(huán)境下制作qcow2格式鏡像 - 云+社區(qū) - 騰訊云
簡單解釋一哈kvm:kvm(底層虛擬化)qemu(輔助kvm虛擬化)libvirt(承載于kvm-qemu之上負責(zé)管理虛擬機) virt(最小化虛擬機控制臺)
yum -y install qemu-kvm qemu-img kvm qemu-kvm-tools libvirt bridge-utils
yum install virt-*
systemctl enable libvirtd (默認啟動虛擬機管理服務(wù))
systemctl start libvirtd (啟動服務(wù))
echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf (ip轉(zhuǎn)發(fā))
sysctl -p (重新加載本機系統(tǒng)參數(shù))
4.上傳要做的qcow2鏡像源iso文件到這臺主機(我上傳到的目錄是/data)
試了一下沒有辦法直接調(diào)用qume-kvm 軟連接一下
ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm
創(chuàng)建一個給一會啟動的虛擬機存儲的地方 我這里創(chuàng)建的40G?一會鏡像也這么大
(設(shè)定的大小決定上云后系統(tǒng)盤大小,以預(yù)防系統(tǒng)盤滿了無法寫入擴容增加成本,建議40G+,)
qemu-img create -f qcow2 CentOS7.6_x86.qcow2 40G
這里寫三種虛擬機網(wǎng)絡(luò)的情況:
1.default (默認)2.bridge(網(wǎng)橋)3.bridge(網(wǎng)橋模式訪問公網(wǎng))
其中網(wǎng)卡啟動時候使用default比較無腦就帶過了
重點在bridge適用場景更廣一些,和宿主機共享同一網(wǎng)絡(luò),可操作性性更高
(一)default (默認)情況
啟動虛擬機(藍色背景文字,請根據(jù)自己路徑或情況寫)
virt-install --name centos7.6 --ram 2048 --vcpus 2 --os-type linux --os-variant rhel7.6 --arch=x86_64 \
--network network=default,model=virtio --disk path=/data/CentOS7.6_x86.qcow2,format=qcow2 --location /data/CentOS-7-x86_64-Minimal-1810.iso\
--console pty,target_type=serial\
--graphics vnc,listen=0.0.0.0,port=7788
這里我用mobax啟動虛擬機時候啟動X服務(wù)自動彈出VNC;或者用其他vnc工具連接宿主機的7788端口都可以,下文就不贅述了。
(二)bridge (網(wǎng)橋)情況
本段網(wǎng)橋配置參考版權(quán)聲明:CSDN博主「wayees」,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_41248237/article/details/115443878
首先確定宿主機的virbr0 NAT網(wǎng)卡是否正常
ifconfig?virbr0? ?沒有ifconfig可以用 ip a?看看有沒有這張網(wǎng)卡就可以
沒起來的話就 ifup 網(wǎng)卡名 起來
確定virbr0網(wǎng)卡正常之后 因為在裝組件的時候不會自動生成他的配置文件 故需要手動寫入一下網(wǎng)卡的配置文件
vi /etc/sysconfig/network-scripts/ifcfg-br0
?
BOOTPROTO=static
NAME=br0
DEVICE=br0
TYPE=Bridge
IPADDR=(建議和你個人電腦相同的網(wǎng)段)
NETMASK=255.255.255.0(根據(jù)網(wǎng)絡(luò)場景寫)
GATEWAY=(根據(jù)網(wǎng)絡(luò)場景寫)
ONBOOT=yes
然后配置宿主機原生lo之外的另一張網(wǎng)卡,我這里網(wǎng)卡名叫ens33
配置ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0
systemctl restart network 重啟網(wǎng)卡
virt-install --name centos7.6 --ram 2048 --vcpus 2 --os-type linux --os-variant rhel7.6 --arch=x86_64 \
--network bridge=br0,model=virtio --disk path=/data/CentOS7.6_x86.qcow2,format=qcow2 --location /data/CentOS-7-x86_64-Minimal-1810.iso\
--console pty,target_type=serial\
--graphics vnc,listen=0.0.0.0,port=7788
注:網(wǎng)橋模式的虛擬機可以配置虛擬機網(wǎng)卡和宿主機br0同一網(wǎng)段IP,同時宿主機和個人電腦也是同一個網(wǎng)段,便可以達到個人電腦可以訪問到虛擬機效果
#宿主機
BOOTPROTO=static
NAME=br0
DEVICE=br0
TYPE=Bridge
IPADDR=192.168.110.110
NETMASK=255.255.255.0(根據(jù)網(wǎng)絡(luò)場景寫)
#GATEWAY=(根據(jù)網(wǎng)絡(luò)場景寫)
ONBOOT=yes
--------------------
#虛擬機
BOOTPROTO=static
NAME=ens3
DEVICE=ens3
TYPE=Ethernet
IPADDR=192.168.110.111
NETMASK=255.255.255.0(根據(jù)網(wǎng)絡(luò)場景寫)
#GATEWAY=(根據(jù)網(wǎng)絡(luò)場景寫)
ONBOOT=yes
隨后重啟虛擬機網(wǎng)卡
我的環(huán)境(供參考)
宿主機br0:192.168.110.110
虛擬機ens3 :192.168.110.111,
個人電腦vm網(wǎng)卡:192.168.110.252
?左側(cè)宿主機? ? ? ? 右側(cè)個人電腦
能ping通 此刻個人電腦可以訪問到虛擬機
(三)bridge(網(wǎng)橋模式訪問公網(wǎng))
將VMware宿主機的br0網(wǎng)卡變更為可以訪問到公網(wǎng)的狀態(tài)
可以在物理直連模式使用網(wǎng)關(guān)上網(wǎng),我這里用的NAT模式
宿主機能夠上網(wǎng)之后開始配置虛擬機上網(wǎng)
虛擬機也有多種情況可配置上網(wǎng),NAT、直連網(wǎng)關(guān)等等
這里只記錄橋接這一種情況
vi /etc/sysconfig/network-scripts/ifcfg-br0? 如(二)寫一下配置文件 ,不同點在于模式改為DHCP
BOOTPROTO=DHCP
NAME=br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
接下來如(二)將vm自帶的網(wǎng)卡ens33綁到br0? ? ↓
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0
systemctl restart network重啟網(wǎng)卡后
啟動主機 ?詳見(二)的virt-install bridge模式主機拉起命令
安裝步驟這里就略過了,進入后查看ens3網(wǎng)卡配置
然后測試ping 8.8.8.8
network根據(jù)自己情況可以選擇網(wǎng)橋或者其他模式;
5.根據(jù)自己情況對虛擬機定制一下配置,可以改改yum文件或者關(guān)閉selinux之類的。
6.清一下虛擬機歷史記錄history -c,然后poweroff關(guān)機即可
7.宿主機 用virsh list --all看虛擬機名字
virt-sysprep -d 虛擬機名 清一下機器信息
而后對鏡像進行空隙壓縮
virt-sparsify --compress /data/CentOS7.6_x86.qcow2 /data/centos.7.6.qcow2
virt-sparsify --compress /xxx/源鏡像.qcow2?/xxxx/壓縮生成鏡像.qcow2
8.測試壓縮后鏡像是否能啟動virt-install --virt-type kvm --name Centos7.6?--memory 2048 --vcpus=4 ?--import --disk path=/data/centos.7.6.qcow2,format=qcow2 ?--graphics vnc,listen=0.0.0.0,port=7788?--os-type=linux
(如提示ERROR ? ?internal error: qemu unexpectedly closed the monitor: Cannot set up guest memory 'pc.ram': Cannot allocate memory
Domain installation does not appear to have been successful,則代表本宿主機啟動虛擬機所需的內(nèi)存不足,須將memory調(diào)小)
測試了一下登陸沒問題,這一步我的vnc卡住了..
在宿主機virsh shutdown?虛機名 可以給虛機關(guān)機,同理virsh start 主機名?可以把離線的主機拉起來
virt-sysprep -d 主機名 再清一哈
彈出VNC的login界面,即代表測試無誤。
附vritsh基礎(chǔ)指令
virsh list --all 可以查看當(dāng)前主機上所有虛擬機
將虛機拉起:virsh start?虛機名————僅在虛機關(guān)機的情況下
關(guān)機:virsh shutdown 虛機名————正常關(guān)機
斷電:virsh destroy 虛機名————可以理解為強制關(guān)機 直接把虛機干碎關(guān)機
刪除虛擬機:virsh undefine?虛機名? ? 將虛擬機從宿主機刪除
9.到此qcow2就搞完了,拖出去用就可以。
-------------------------------
(擴展部分)windows鏡像有安裝virito的需求
這里用2008r2的標準版做例子
(一)啟動部分
virt-install --name win2008 \
--ram 2048 --vcpus=2 \
--os-type=windows \
--os-variant=win2k8r2 \
--disk path=/data/winserver08.qcow2,format=qcow2,bus=virtio \
--network bridge=br0,model=virtio \
--cdrom=/data/cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1_x64_dvd_617598.iso \
--disk path=/data/virtio-win-0.1-81.iso,device=cdrom \
--graphics vnc,port=7788 \
--noautoconsole \
--autostart
可以看到這里網(wǎng)卡和硬盤都用的virtio模式↓
--disk path=/data/winserver08.qcow2,format=qcow2,bus=virtio \
--network bridge=br0,model=virtio \
并且再在掛載安裝cdrom的iso的基礎(chǔ)上,需要掛載virtio驅(qū)動的鏡像,以在安裝過程中加載virtio驅(qū)動(要不一會連驅(qū)動器都認不出來),這一行↓
--disk path=/data/virtio-win-0.1-81.iso,device=cdrom \
需要注意的是virtio的新版本不支持如:win2008、XP...等老版本系統(tǒng),如果是要給老版本裝如windows2008這種則需要下載如:virtio-win-0.1-81等老版本。
下載地址:Index of /groups/virt/virtio-win/deprecated-isos/stable
還有比較新的:
Index of /groups/virt/virtio-win/direct-downloads/archive-virtio
然后拉起來就OK
(二)啟動過程報錯
這里我的報錯了,提示驅(qū)動器里沒有boot驅(qū)動,一般是沒有加載到 系統(tǒng).iso導(dǎo)致的,和啟動順序有關(guān)系
于是先把機器關(guān)一下
virsh destroy 虛機名
(因為多驅(qū)動器的關(guān)系,關(guān)一次可能關(guān)不上,隔幾秒再關(guān)一次就好啦)
然后virsh edit 虛擬機名
觀察devices的disk啟動順序
可以看到包含系統(tǒng).iso的dev順序是hdb,而hda則是virtio.iso,也就是說會先讀virtio.iso,但是里面沒有系統(tǒng),所以報錯是正常的。
由此,我們需要修改一下順序(這里我改過,然后保存了,再次打開了他上下順序顛倒了一下)
再修改boot的模式由hd變更為cdrom(因為這里掛載iso是以cdrom掛載的):
變更為
再把機器拉起來
virsh start 虛擬機
vnc連一下,現(xiàn)在可以正常加載系統(tǒng)了
(三)驅(qū)動加載
到選擇 選擇安裝系統(tǒng)位置 這一步時,點擊加載驅(qū)動程序
選擇 瀏覽 找到我們掛載的virtio所在的盤符
選取與自己系統(tǒng)版本對應(yīng)的目錄以及操作系統(tǒng)位數(shù)(這里我是win2008R2 x64位所以會選win7/amd64)
對應(yīng)關(guān)系我是從這看的..
1325078 – Add TargetOSVersion to driver inf files
加載scsi的然后 下一步,等一會
就可以看到盤啦,正常分區(qū)加載系統(tǒng)就ok
等系統(tǒng)裝好后,進設(shè)備管理器更新一下還沒被加載的驅(qū)動。
下面這兩個都更新加載一下
手動選擇virito的盤內(nèi),自己對應(yīng)的驅(qū)動目錄
安裝
這里因為用到的這三種,裝好之后可以看到這三個
然后關(guān)機
(四)還原虛擬機啟動信息(可選)
cdrom還原回hd
disk部分把兩個cdrom的iso對應(yīng)的<disk>內(nèi)容刪掉就OK
再把機器拉起來看一下有沒有報錯,以及兩個iso的cdrom沒有自動掛載上就ok了
文章來源:http://www.zghlxwxcb.cn/news/detail-805149.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-805149.html
到了這里,關(guān)于windows個人電腦上用vmware作為宿主機制作qcow2鏡像的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!