Studio环境KVM和Docker¶
安装KVM¶
Ubuntu安装KVM¶
安装软件包:
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst libguestfs-tools ovmf
备注
qemu-kvm
QEMU核心libvirt-*
libvirtd用于管理QEMUvirtinst
安装Guest的工具libguestfs-tools
是Guest文件系统工具,包含了初始化虚拟机的工具命令virt-sysprep
ovmf
是模拟EFI firmwarre的功能,请参考 Using UEFI with QEMU
(可选) 将
自己
的账号添加到libvirt
用户组(18.04版本可能是libvirtd
用户组),以便可以直接运行虚拟机:sudo adduser `id -un` libvirt
备注
在最新的Ubuntu 18.10中安装libvirt,安装执行命令的用户已经自动被加入 libvirt
用户组
检查验证:
virsh list --all
备注
Ubuntu安装libvirt时已经自动激活启动
Arch Linux安装KVM¶
安装:
sudo pacman -S qemu libvirt virt-install \ dnsmasq ebtables firewalld bridge-utils sudo systemctl start firewalld sudo systemctl enable firewalld sudo systemctl start libvirtd sudo systemctl enable libvirtd
备注
安装
bridge-utils
才能具备brctl
工具,这样才能建立virtbr0这个NAT旺桥libvirt需要dnsmasq, ebtables, firewalld 来分配NAT网络IP地址和设置netfilter防火墙规则,否则也启动不了NAT网络。详见 libvirt NAT型网络
参考 How to Create and use Network Bridge on Arch Linux and Manjaro
安装完qemu之后,如果没有重启系统,则此时还没有加载kvm内核模块,可以通过以下命令手工加载:
modprobe kvm_intel
加载virtio模块:
modprobe virtio
嵌套虚拟化¶
在使用 一台
物理主机(MacBook Pro)模拟多个物理服务器来组成集群,部署基于KVM虚拟化的云计算,需要使用 KVM嵌套虚拟化 来实现。在后续 KVM Atlas 实践中,会详介绍如何在一台物理主机上运行支持hypervisor的虚拟机,以实现物理服务器集群模拟。
Docker¶
在MacBook Pro的Host环境,不仅要运行嵌套虚拟户的KVM实现OpenStack的集群模拟,而且要运行Docker来支撑一些底层服务。这是因为,底层服务需要更高的性能,而且要具备隔离以实现模拟分布式集群。
备注
安装Docker CE方法参考 Kubernetes 文档 CRI installation
安装Docker CE:
# remove all previous Docker versions sudo apt remove docker docker-engine docker.io # Install packages to allow apt to use a repository over HTTPS apt-get update && apt-get install apt-transport-https ca-certificates curl software-properties-common # add Docker official GPG key curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # Add Docker repository (for Ubuntu Bionic) 注意:nvidia-docker会检查docker-ce版本,强制要求 ubuntu-bionic # 所以这里必须采用 bionic 仓库安装 docker-ce sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" sudo apt update sudo apt install docker-ce
注意,由于我使用 Docker btrfs 存储驱动 并且 minikube CRI安装排查 要求,需要设置 btrfs
存储驱动和 systemd
作为cgroup驱动,所以执行以下命令:
# Setup daemon
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "btrfs"
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
然后重启docker:
# Restart docker.
systemctl daemon-reload
systemctl restart docker
备注
由于 Docker运行NVIDIA容器 依赖Docker官方最新版本的docker,所以这里不使用发行版提供的docker,而是 安装 docker-ce 。如果没有这个需求,也可以安装Ubuntu发行版的 docker.io
sudo apt install docker.io
(可选) 将
自己
的账号添加到docker
用户组:sudo adduser `id -un` docker
备注
用户加入docker组还是需要重启主机操作系统才能直接使用 docker ps
Arch Linux安装Docker¶
安装Docker:
sudo pacman -S docker
备注
在启动docker服务之前,需要确保系统没有启动VPN连接,因为VPN和Docker的网桥以及overlay网络冲突。这种情况下,需要在启动docker之前先断开VPN。
我遇到一个问题,就是 sysctl -a | grep ip_forward
输出已经显示:
net.ipv4.ip_forward = 1
但是创建的容器不能通外网,导致安装以后