使用Minikube和KVM搭建本地测试环境
KVM指的是基于Linux内核的虚拟机(Kernel-based Virtual Machine)。但其实,KVM是Linux内核中的一个提供虚拟化支持的模块。
Prerequisites
基于KVM安装MiniKube需要安装以下列出的依赖,用以和KVM中的虚拟化接口进行数据交换。
- Docker Machine: 一个管理工具,用来管理安装了
Docker Engine的虚拟机,支持AWS, OpenStack, KVM/Libvirt, VMWARE Fusion, VirtualBox.这里被用来wrapMinikube. - Docker Machine KVM2 Driver:
Minikube与KVM连接所需的驱动程序。 - Libvirt: 提供虚拟化管理所需的API库(如存储,网络接口等)。
- QEMU: Hypervisor
- Minikube: 单节点的
Kubernetes集群。 - KubeCtl:
Kubernetes集群管理工具
Environment
- OS: Linux-4.19.12-2
- Minikube: v0.32.0
- docker-machine-driver-kvm2: 0.30.0-1
安装libvirt和QEMU
Libvirt和QEMU是KVM虚拟机得以运行的基础,另外还需要为NAT/DHCP安装所需的网络模块,否则Minikube无法运行。这里所安装的QEMU是不包含GUI的版本,如果需要可以替换QEMU-headless为QEMU.
pacman -Sy libvirt QEMU-headless ebtables dnsmasq
装好软件,启动libvirtd和virtlogd:
systemctl enable libvirtd.service && systemctl start libvirtd.service
systemctl enable virtlogd.service && systemctl start virtlogd.service
安装Docker-machine
pacman -Sy docker-machine
安装Minikube和KubeCtl
在Archlinux中安装Minikube和KubeCtl很简单,用yaourt安装AUR库中的minikube-bin和kubectl-bin即可,还会安装minikube和kubectl的shell自动补齐,所以更推荐这种安装方式。
yaourt -Sy minikube-bin kubectl-bin
安装KVM2驱动
pacman -Sy docker-machine-driver-kvm2
启动Minikube
minikube start --vm-driver kvm2
更改代理设置
因为墙的原因,需要设置代理才能下载Minikube插件,让Minikube正常运行。
修改Minikube配置。
echo '
Enter a proxy for the minikube environment:'
read proxy
python -c "
import json, pathlib
config_file = '$HOME/.minikube/machines/minikube/config.json'
http_proxy = 'HTTP_PROXY=$proxy'
https_proxy = 'HTTPS_PROXY=$proxy'
no_proxy = 'NO_PROXY=registry.docker-cn.com,127.0.0.1,localhost'
registry_mirror = 'https://registry.docker-cn.com'
config = json.loads(pathlib.Path(config_file).read_text())
config['HostOptions']['EngineOptions']['Env'] = [http_proxy, https_proxy, no_proxy]
config['HostOptions']['EngineOptions']['RegistryMirror'] = [registry_mirror]
pathlib.Path(config_file).write_text(json.dumps(config, indent=4))
"
重新启动Minikube后设置生效。