每天5分鐘複習OpenStack(三)

2023-10-17 15:02:18

每天5分鐘複習OpenStack(三)

為什麼要拉起kvm 虛擬機器器要熟悉這些操作? 作為一個運維工程師,將來有大量的時間是在製作映象,映象的製作就是在kvm虛擬化環境拉起kvm 管理的虛擬機器器的過程,安裝一些必要的agent,如 QGA,cloud-init 等,完成之後shutdown 關機,其qcow2的磁碟檔案就是映象。

拉起第一臺KVM 虛擬機器器
1、環境說明

• 安裝vmware軟體

• 安裝系統,系統版本 Centos7.6 版本 1810

• vmware 網路設定 NAT 模式 網段192.168.48.0/24 虛擬機器器IP 192.168.48.11

• 虛擬機器器預設最小化安裝,對分割區沒有要求 下面提供一個初始化指令碼用來系統優化新安裝的系統

2、環境初始化

主要功能是:

  • 修改主機名為自己的IP 、

  • 關閉selinux firewalld

  • 載入netfilter 模組是為了在linux Bridge 上增加NAT 功能。

  • 修改網路卡名為ethX

  • 關閉SSH登入的反向解析。

#!/bin/bash

#1. 設定使用者名稱
name=`ip -o -4  addr |awk -F '/| +'  '/eth0/{print $4}' |tr '.' '-'`
hostnamectl set-hostname $name

# 2. 關閉selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

# 3. 關閉防火牆,開啟轉發
systemctl stop firewalld
systemctl disable firewalld
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
modprobe br_netfilter
echo "net.bridge.bridge-nf-call-arptables = 0 " >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-iptables = 0" >> /etc/sysctl.conf
echo br_netfilter  >> /etc/modules-load.d/modules.conf
sysctl -p

#4. 關閉NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManager

#5. 修改網路卡名字
grep biosdevname=0 /etc/default/grub || sed -ie 's/rhgb quiet/net.ifnames=0 #biosdevname=0 rhgb quiet/' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg

#ssh 優化
sed -i 's/#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config
systemctl restart sshd

#8. 重啟reboot
#########重啟伺服器###########
read -p "是否重啟伺服器 y/n" sure
if [ $sure == "y" ];then
    reboot
fi

3、安裝KVM 基礎環境安裝包

yum install qemu-kvm  virt-manager  virt-install vim  libvirt bc wget  -y

4、啟動libvirtd 服務 下載安裝映象檔案

systemctl start libvirtd
systemctl enable libvirtd
mkdir -pv  /data/{iso,images}

5、 下載阿里雲7.6的映象iso檔案

wget  https://mirrors.aliyun.com/centos-vault/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso?spm=a2c6h.25603864.0.0.39ec12cfDiobIj  \
-O  /data/iso/CentOS-7-x86_64-Minimal-1810.iso

6、拉起kvm 虛擬機器器test

kvm001.raw 檔案系統會自動生成
vnc的方式登入,因此需要找到vnc對應的埠
啟動檔案為ISO,因此需要手動安裝系統,將來熟悉後可以採用ks檔案來實現自動化的安裝。

vnc 登入的方式

virt-install \
--name=test --ram 1024 --vcpus=1 \
--disk path=/data/images/kvm001.raw,size=50,format=raw,bus=virtio \
--cdrom=/data/iso/CentOS-7-x86_64-Minimal-1810.iso --network bridge=virbr0,model=virtio \
--graphics vnc,listen=0.0.0.0 --noautoconsole

自動安裝系統的方式

需要提前準備ks檔案,ks檔案製作網上例子很多,這裡暫時不表。

也可以去掉ks.cfg 的部分,直接使用預設的console=tty0 來手動安裝。

(注意有些特殊的作業系統如尤拉系統,預設其沒有開啟VNC服務,則vnc的方式無法系統安裝,預設進入系統安裝頁面後VNC登陸就顯示斷開,此時只能使用console的方式)

virt-install \
     --name test \
     --memory=1024 \
     --vcpus=2 \
     --os-type linux \
     --location /data/iso/CentOS-7-x86_64-Minimal-1810.iso \
     --disk path=/data/images/test.qcow2,size=30,format=qcow2  \
     --network bridge=virbr0 \
     --graphics=none \
     --console pty,target_type=serial \
     --initrd-inject ks.cfg \
     --extra-args 'inst.ks=file:/ks.cfg console=tty0 console=ttyS0,115200n8'

根據虛擬機器器名字test 檢視程序號,通過程序檢視監聽埠號為5900+本地IP=192.168.48.11 則登入地址192.168.48.11:5900

VNC 安裝登入作業系統

等待系統安裝完成後,重啟系統後,通過virsh list --all狀態為shutdown

5、virsh常用管理命令

1 啟動虛擬機器器

virsh start test 
virsh autostart test

6、給虛擬機器器加上管理地址,方便ssh登入,重啟網路卡,使預設路由生效。

7、設定宿主機使虛擬機器器能存取公網

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

預設情況下虛擬機器器的流量都直接傳送到閘道器192.168.122.1 ,而閘道器IP就在宿主機上,因此加上對應iptables 規則後,虛擬機器器就能存取公網了。

思考:

  1. 192.168.122.0/24 網段是系統自定義的,如何改變改網段

  2. 在實際生產環境會設定各種網橋,這些網橋都是隻在本地物理機上生效,怎麼跨主機讓相同網路的虛擬機器器能相互存取呢?

  3. 各個網橋的流量怎麼隔離了

  4. 每個虛擬機器器都使用光碟安裝太麻煩,有沒有簡單方法使用kvm虛擬機器器能直接複製?

下面章節將一一揭曉上述答案