如何在Ubuntu Linux上使用KVM云镜像

时间:2020-01-09 10:39:51  来源:igfitidea点击:

如何在Ubuntu Linux服务器上运行kvm的情况下下载和使用云镜像?
如何在Ubuntu Linux 16.04 LTS服务器上完全安装而不需要创建虚拟机?
如何在Ubuntu上使用KVM云镜像?
基于内核的虚拟机(KVM)是Linux内核的虚拟化模块,可将其转变为虚拟机监控程序。
您可以使用libvirt和KVM的Ubuntu虚拟化前端从命令行使用KVM创建Ubuntu云镜像。

本快速教程说明如何安装和使用uvtool,该工具为Ubuntu云镜像下载,libvirt和cloud-init提供了统一且集成的VM前端。

步骤1安装KVM

您必须已安装并配置了kvm。
如下使用apt命令/apt-get命令:

$ sudo apt install qemu-kvm libvirt-bin virtinst bridge-utils cpu-checker
$ kvm-ok
## configure bridged networking as described here
$ sudo vi /etc/network/interfaces
$ sudo systemctl restart networking
$ sudo brctl show

步骤2安装uvtool

执行以下apt命令/apt-get命令:

$ sudo apt install uvtool

步骤3下载适用于KVM的Ubuntu云镜像

您需要使用uvt-simplestreams-libvirt命令。
它维护一个libvirt卷存储池,作为从Simplestreams源获得的镜像子集的本地镜像,例如Ubuntu云镜像。
要使用所有当前的amd64镜像更新uvtools libvirt卷存储池,请运行:

$ uvt-simplestreams-libvirt sync arch=amd64

要仅更新/获取Ubuntu 16.04 LTS(xenial/amd64)镜像,请运行:

$ uvt-simplestreams-libvirt --verbose sync release=xenial arch=amd64

输出示例:

Adding: com.ubuntu.cloud:server:16.04:amd64 20161121.1

Grab开发版本,即Bionic(18.04 LTS):

$ uvt-simplestreams-libvirt --verbose sync \
--source http://cloud-images.ubuntu.com/daily \
release=bionic arch=amd64

输出示例:

Adding: com.ubuntu.cloud.daily:server:18.04:amd64 20160124

传递query选项来查询本地镜像:

$ uvt-simplestreams-libvirt query

输出示例:

release=xenial arch=amd64 label=release (20161121.1)

现在,我有一个用于Ubuntu xenial的镜像,并创建了VM。

步骤4建立SSH金钥

您需要ssh密钥才能登录到KVM VM。
如果根本没有任何密钥,请使用ssh-keygen命令创建一个新密钥。

$ ssh-keygen

有关更多信息,请参见如何在Linux/Unix系统和Linux/UNIX上设置SSH密钥:生成SSH密钥。

步骤5使用云镜像创建Ubuntu VM

现在该创建名为vm1的VM了,即创建一个Ubuntu Linux 16.04 LTS VM:

$ uvt-kvm create vm1

默认情况下,vm1使用以下特征创建:

  • 内存/内存:512M
  • 磁盘大小:8GiB
  • CPU:1个vCPU内核

要控制ram,disk,cpu和其他特征,请使用以下语法:

$ uvt-kvm create vm1 \
--memory MEMORY \
--cpu CPU \
--disk DISK \
--bridge BRIDGE \
--ssh-public-key-file /path/to/your/SSH_PUBLIC_KEY_FILE \
--packages PACKAGES1, PACKAGES2, .. \
--run-script-once RUN_SCRIPT_ONCE \
--password PASSWORD

其中:

  • --password PASSWORD:设置ubuntu用户的密码,并允许使用ubuntu用户登录(不建议使用ssh键)。
  • --run-script-once RUN_SCRIPT_ONCE:首次启动时,以root身份在VM上运行RUN_SCRIPT_ONCE脚本,但是再也不会启动。在这里给出完整的路径。这对于在VM上运行自定义任务(例如设置安全性或其他设置)很有用。
  • --packages PACKAGES1,PACKAGES2,..:在第一次启动时安装逗号分隔的软件包。

您还可以指定Ubuntu版本和arch:

$ uvt-kvm create bionic-server release=bionic arch=amd64 \
--memory 1024 \
--cpu 1 \
--disk 40 \
--ssh-public-key-file ~/.ssh/id_rsa.pub

要获取帮助,请运行:

$ uvt-kvm -h
$ uvt-kvm create -h

如何删除虚拟机?

要销毁/删除名为vm1的VM,请运行(请小心使用以下命令,因为将没有确认框):

$ uvt-kvm destroy vm1

要查找vm1的IP地址,请运行:

$ uvt-kvm ip vm1

192.168.122.52

列出所有运行的虚拟机

$ uvt-kvm list

输出示例:

vm1
freebsd11.1

步骤6如何登录名为vm1的虚拟机

语法为:

$ uvt-kvm ssh vm1

输出示例:

Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-101-generic x86_64)

* Documentation:  https://help.ubuntu.com
* Management:     https://landscape.canonical.com
* Support:        https://ubuntu.com/advantage

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.

Last login: Thu Dec  7 09:55:06 2016 from 192.168.122.1

另一个选择是从macOS/Linux/Unix/Windows客户端使用常规ssh命令:

$ ssh [email protected]
$ ssh -i ~/.ssh/id_rsa [email protected]

输出示例:创建vim后,您可以照常使用virsh命令:

$ virsh list