每天5分钟复习OpenStack(三)

每天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虚拟机能直接复制?

下面章节将一一揭晓上述答案

相关推荐
佛州小李哥5 小时前
通过亚马逊云科技Bedrock打造自定义AI智能体Agent(上)
人工智能·科技·ai·语言模型·云计算·aws·亚马逊云科技
Linux运维老纪6 小时前
DNS缓存详解(DNS Cache Detailed Explanation)
计算机网络·缓存·云原生·容器·kubernetes·云计算·运维开发
ivwdcwso10 小时前
云计算部署模式全面解析
云计算
.生产的驴1 天前
MYSQL 商城系统设计 商品数据表的设计 商品 商品类别 商品选项卡 多表查询
数据库·mysql·搜索引擎·性能优化·云计算·状态模式·多分类
weixin_307779131 天前
PyDeequ库在AWS EMR启动集群中数据质量检查功能的配置方法和实现代码
大数据·python·spark·云计算·aws
会敲代码的Steve2 天前
本地Harbor仓库搭建流程
运维·分布式·云计算
Archie_IT2 天前
基于云计算、大数据与YOLO设计的火灾/火焰目标检测
大数据·人工智能·yolo·目标检测·云计算
努力的小T2 天前
Linux二进制部署K8s集群的平滑升级教程
linux·运维·服务器·云原生·容器·kubernetes·云计算
Jackilina_Stone3 天前
【huawei】云计算的备份和容灾
安全·云计算·学习笔记·huawei·灾备
weixin_307779133 天前
在AWS上使用KMS客户端密钥加密S3文件,同时支持PySpark读写和Snowflake导入
大数据·数据仓库·python·spark·云计算