美文网首页
ubuntu KVM配置

ubuntu KVM配置

作者: 痕迹_dark | 来源:发表于2019-07-22 20:02 被阅读0次

ubuntu KVM 安装及配置


环境准备

本地操作系统ubuntu 18.04 TLS一台

软件安装

安装kvm及相关软件

duke@duke-System:~$ sudo apt install -y qemu qemu-kvm libvirt-bin bridge-utils virt-manager
duke@duke-System:~$ sudo systemctl start libvirtd
duke@duke-System:~$ sudo systemctl status libvirtd
duke@duke-System:~$ sudo systemctl enable libvirtd

启动默认NAT网络

duke@duke-System:~$ sudo virsh net-autostart default

创建模板虚拟机

磁盘准备

duke@duke-System:~$ cd /mnt/kvm
duke@duke-System:~$ qemu-img create -f qcow2 disk-1.img 20G
duke@duke-System:~$ qemu-img create -f qcow2 disk-1.img 30G

镜像文件准备

duke@duke-System:~$ wget https://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso

虚拟机模板xml文件

node-1.xml

<domain type='kvm'>
    <name>node-1</name> //虚拟机名称
    <memory unit='GiB'>4</memory> //最大内存,单位M
    <currentMemory unit='GiB'>4</currentMemory> //可用内存,单位M
    <vcpu>2</vcpu> //虚拟cpu个数
    <os>
        <type arch='x86_64' machine='pc'>hvm</type>
        <boot dev='cdrom'/> //ISO文件启动
    </os>
    <features>
        <acpi/>
        <apic/>
        <pae/>
    </features>
    <clock offset='localtime'/>
    <on_poweroff>destroy</on_poweroff>
    <on_reboot>restart</on_reboot>
    <on_crash>destroy</on_crash>
    <devices>
        <emulator>/usr/bin/qemu-system-x86_64</emulator> //KVM启动程序,ubuntu版本
        <disk type='file' device='disk'>
            <driver name='qemu' type='qcow2'/>
            <source file='/mnt/kvm/kubernetes-node-1-1.img'/> //目的镜像路径
            <target dev='sda' bus='scsi'/>
            <address type='drive' controller='0' bus='0' target='0' unit='0'/> //硬盘使用virtio-scsi驱动,模拟scsi硬盘,建议使用
        </disk>
        <disk type='file' device='disk'>
            <driver name='qemu' type='qcow2'/>
            <source file='/mnt/kvm/kubernetes-node-1-2.img'/> //目的镜像路径
            <target dev='sdb' bus='scsi'/>
            <address type='drive' controller='0' bus='0' target='0' unit='1'/> //硬盘使用virtio-scsi驱动,模拟scsi硬盘,建议使用
        </disk>
        <controller type='scsi' index='0' model='virtio-scsi'/> //使用virtio-scsi配置,必须
        <disk type='file' device='cdrom'>
            <driver name='qemu' type='raw'/>
            <source file='/mnt/kvm/CentOS-7-x86_64-DVD-1810.iso'/>
            <target dev='hda' bus='ide'/>
            <readonly/>
            <address type='drive' controller='0' bus='1' target='0' unit='0'/>
        </disk>
        <interface type='network'> //虚拟机网络连接方式,默认NAT
            <source network='default'/>
            <model type='virtio'/>
            <mac address='00:16:3E:64:01:00'/> //为虚拟机分配mac地址,务必唯一,否则dhcp获得同样ip,引起冲突
            <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> 
        </interface>
        <input type='mouse' bus='ps2'/>
        <graphics type='vnc' port='5900' autoport='yes' listen = '0.0.0.0' keymap='en-us'/>//vnc方式登录,端口号自动分配,自动加1,可以通过virsh vncdisplay来查询
        <video>
            <model type='cirrus' vram='9216' heads='1'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
        </video>
        <memballoon model='virtio'>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
        </memballoon>
        <serial type='pty'>
            <target port='0'/>
        </serial>
        <console type='pty'>
            <target type='serial' port='0'/>
        </console>
    </devices>
</domain>

创建第一台虚拟机

duke@duke-System:~$ virsh define node-1.xml
duke@duke-System:~$ virsh start node-1.xml

安装操作系统

通过VNC连接第一台虚拟机端口,一般为tcp:5900

安装操作系统

修改虚拟机启动配置

duke@duke-System:~$ virsh edit node-1

找到如下配置

    <os>
        <type arch='x86_64' machine='pc'>hvm</type>
        <boot dev='cdrom'/> 
    </os>

改成

    <os>
        <type arch='x86_64' machine='pc'>hvm</type>
        <boot dev='hd'/> 
    </os>

重启模板虚拟机

duke@duke-System:~$ virsh destroy node-1
duke@duke-System:~$ virsh start node-1

初始化操作系统

登录node-1操作系统

修改selinux

[root@localhost ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

添加ttyS0配置

在/etc/default/grub中GRUB_CMDLINE_LINUX中添加console=ttyS0

[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
[root@localhost ~]# systemctl enable serial-getty@ttyS0.service
[root@localhost ~]# systemctl start serial-getty@ttyS0.service

配置yum源

[root@localhost ~]# cd /etc/yum.repos.d
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost ~]# curl -o  /etc/yum.repos.d/CentOS-7.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]# yum clean all
[root@localhost ~]# yum repolist

安装基础软件包

[root@localhost ~]# yum install -y wget net-tools

删除firewalld防火墙

[root@localhost ~]# yum remove -y firewalld

清除记录并关机

[root@localhost ~]# history -c
[root@localhost ~]# shutdown -h now

从模板中创建虚拟机

生成虚拟机配置文件

kubernetes-master-1.xml

<domain type='kvm'>
        <name>kubernetes-master-1</name> //虚拟机名称
        <memory unit='GiB'>4</memory> //最大内存,单位M
        <currentMemory unit='GiB'>4</currentMemory> //可用内存,单位M
        <vcpu>2</vcpu> //虚拟cpu个数
        <os>
                <type arch='x86_64' machine='pc'>hvm</type>
                <boot dev='hd'/> //硬盘启动
        </os>
        <features>
                <acpi/>
                <apic/>
                <pae/>
        </features>
        <clock offset='localtime'/>
        <on_poweroff>destroy</on_poweroff>
        <on_reboot>restart</on_reboot>
        <on_crash>destroy</on_crash>
        <devices>
                <emulator>/usr/bin/qemu-system-x86_64</emulator> //KVM启动程序,ubuntu版本
                <disk type='file' device='disk'>
                        <driver name='qemu' type='qcow2'/>
                        <source file='/mnt/kvm/kubernetes-master-1-1.img'/> //目的镜像路径
                        <target dev='sda' bus='scsi'/>
                        <address type='drive' controller='0' bus='0' target='0' unit='0'/> //硬盘使用virtio-scsi驱动,模拟scsi硬盘
                </disk>
                <disk type='file' device='disk'>
                        <driver name='qemu' type='qcow2'/>
                        <source file='/mnt/kvm/kubernetes-master-1-2.img'/> //目的镜像路径
                        <target dev='sdb' bus='scsi'/>
                        <address type='drive' controller='0' bus='0' target='0' unit='1'/> //硬盘使用virtio-scsi驱动,模拟scsi硬盘
                </disk>
                <controller type='scsi' index='0' model='virtio-scsi'/>
                <interface type='network'> //虚拟机网络连接方式,默认NAT
                        <source network='default'/>
                        <model type='virtio'/>
                        <mac address='00:16:3E:64:02:00'/> //为虚拟机分配mac地址,务必唯一,否则dhcp获得同样ip,引起冲突
                        <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> 
                </interface>
                <input type='mouse' bus='ps2'/>
                <graphics type='vnc' port='5900' autoport='yes' listen = '0.0.0.0' keymap='en-us'/>//vnc方式登录,端口号自动分配,自动加1,可以通过virsh vncdisplay来查询
                <video>
                        <model type='cirrus' vram='9216' heads='1'/>
                        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
                </video>
                <memballoon model='virtio'>
                        <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
                </memballoon>
                <serial type='pty'>
                        <target port='0'/>
                </serial>
                <console type='pty'>
                        <target type='serial' port='0'/>
                </console>
        </devices>
</domain>

kubernetes-node-1

<domain type='kvm'>
        <name>kubernetes-node-1</name> //虚拟机名称
        <memory unit='GiB'>4</memory> //最大内存,单位M
        <currentMemory unit='GiB'>4</currentMemory> //可用内存,单位M
        <vcpu>2</vcpu> //虚拟cpu个数
        <os>
                <type arch='x86_64' machine='pc'>hvm</type>
                <boot dev='hd'/> //硬盘启动
        </os>
        <features>
                <acpi/>
                <apic/>
                <pae/>
        </features>
        <clock offset='localtime'/>
        <on_poweroff>destroy</on_poweroff>
        <on_reboot>restart</on_reboot>
        <on_crash>destroy</on_crash>
        <devices>
                <emulator>/usr/bin/qemu-system-x86_64</emulator> //KVM启动程序,ubuntu版本
                <disk type='file' device='disk'>
                        <driver name='qemu' type='qcow2'/>
                        <source file='/mnt/kvm/kubernetes-node-1-1.img'/> //目的镜像路径
                        <target dev='sda' bus='scsi'/>
                        <address type='drive' controller='0' bus='0' target='0' unit='0'/> //硬盘使用virtio-scsi驱动,模拟scsi硬盘
                </disk>
                <disk type='file' device='disk'>
                        <driver name='qemu' type='qcow2'/>
                        <source file='/mnt/kvm/kubernetes-node-1-2.img'/> //目的镜像路径
                        <target dev='sdb' bus='scsi'/>
                        <address type='drive' controller='0' bus='0' target='0' unit='1'/> //硬盘使用virtio-scsi驱动,模拟scsi硬盘
                </disk>
                <controller type='scsi' index='0' model='virtio-scsi'/>
                <interface type='network'> //虚拟机网络连接方式,默认NAT
                        <source network='default'/>
                        <model type='virtio'/>
                        <mac address='00:16:3E:64:01:00'/> //为虚拟机分配mac地址,务必唯一,否则dhcp获得同样ip,引起冲突
                        <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> 
                </interface>
                <input type='mouse' bus='ps2'/>
                <graphics type='vnc' port='5900' autoport='yes' listen = '0.0.0.0' keymap='en-us'/>//vnc方式登录,端口号自动分配,自动加1,可以通过virsh vncdisplay来查询
                <video>
                        <model type='cirrus' vram='9216' heads='1'/>
                        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
                </video>
                <memballoon model='virtio'>
                        <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
                </memballoon>
                <serial type='pty'>
                        <target port='0'/>
                </serial>
                <console type='pty'>
                        <target type='serial' port='0'/>
                </console>
        </devices>
</domain>

kubernetes-node-2

<domain type='kvm'>
        <name>kubernetes-node-2</name> //虚拟机名称
        <memory unit='GiB'>4</memory> //最大内存,单位M
        <currentMemory unit='GiB'>4</currentMemory> //可用内存,单位M
        <vcpu>2</vcpu> //虚拟cpu个数
        <os>
                <type arch='x86_64' machine='pc'>hvm</type>
                <boot dev='hd'/> //ISO文件启动
        </os>
        <features>
                <acpi/>
                <apic/>
                <pae/>
        </features>
        <clock offset='localtime'/>
        <on_poweroff>destroy</on_poweroff>
        <on_reboot>restart</on_reboot>
        <on_crash>destroy</on_crash>
        <devices>
                <emulator>/usr/bin/qemu-system-x86_64</emulator> //KVM启动程序,ubuntu版本
                <disk type='file' device='disk'>
                        <driver name='qemu' type='qcow2'/>
                        <source file='/mnt/kvm/kubernetes-node-2-1.img'/> //目的镜像路径
                        <target dev='sda' bus='scsi'/>
                        <address type='drive' controller='0' bus='0' target='0' unit='0'/> //硬盘使用virtio-scsi驱动,模拟scsi硬盘
                </disk>
                <disk type='file' device='disk'>
                        <driver name='qemu' type='qcow2'/>
                        <source file='/mnt/kvm/kubernetes-node-2-2.img'/> //目的镜像路径
                        <target dev='sdb' bus='scsi'/>
                        <address type='drive' controller='0' bus='0' target='0' unit='1'/> //硬盘使用virtio-scsi驱动,模拟scsi硬盘
                </disk>
                <controller type='scsi' index='0' model='virtio-scsi'/>
                <interface type='network'> //虚拟机网络连接方式,默认NAT
                        <source network='default'/>
                        <model type='virtio'/>
                        <mac address='00:16:3E:64:03:00'/> //为虚拟机分配mac地址,务必唯一,否则dhcp获得同样ip,引起冲突
                        <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> 
                </interface>
                <input type='mouse' bus='ps2'/>
                <graphics type='vnc' port='5900' autoport='yes' listen = '0.0.0.0' keymap='en-us'/>//vnc方式登录,端口号自动分配,自动加1,可以通过virsh vncdisplay来查询
                <video>
                        <model type='cirrus' vram='9216' heads='1'/>
                        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
                </video>
                <memballoon model='virtio'>
                        <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
                </memballoon>
                <serial type='pty'>
                        <target port='0'/>
                </serial>
                <console type='pty'>
                        <target type='serial' port='0'/>
                </console>
        </devices>
</domain>

复制并初始化img文件

duke@duke-System:/mnt/kvm$ cp kubernetes-node-1-1.img kubernetes-node-2-1.img
duke@duke-System:/mnt/kvm$ cp kubernetes-node-1-1.img kubernetes-master-1-1.img
duke@duke-System:/mnt/kvm$ sudo virt-sysprep -a kubernetes-node-2-1.img 
duke@duke-System:/mnt/kvm$ sudo virt-sysprep -a kubernetes-master-1-1.img 

启动虚拟机

duke@duke-System:/mnt/kvm$ virsh define kubernetes-master-1.xml
duke@duke-System:/mnt/kvm$ virsh define kubernetes-node-1.xml
duke@duke-System:/mnt/kvm$ virsh define kubernetes-node-2.xml
duke@duke-System:/mnt/kvm$ virsh start kubernetes-master-1
duke@duke-System:/mnt/kvm$ virsh start kubernetes-node-1
duke@duke-System:/mnt/kvm$ virsh start kubernetes-node-2

相关文章

网友评论

      本文标题:ubuntu KVM配置

      本文链接:https://www.haomeiwen.com/subject/wtdglctx.html