本地开发集群新方案 Virtualbox+Vagrant
vagrant 相对于 vmware 而言更轻量级,操作更简便移植性更强,如果我们需要学习k8s或者搭建一些集群的话建议使用 Virtualbox+Vagrant。
Vagrant 是创建虚拟机的工具,Virtualbox 是vagrant 管理工具,而且这两个软件是开源的,不需要我去付费或者破解。
环境准备
vagrant 下载地址:https://www.vagrantup.com
virtualbox 下载地址:https://www.virtualbox.org/wiki/Downloads
下载安装完成后,我们还需要下载vagrant镜像
镜像下载地址:https://app.vagrantup.com/boxes/search
打开cmd 窗口,添加本地镜像:
1 | vagrant box add --name 镜像名称 E:data/centos7.box |
执行 vagarnt init
指令会根据镜像在当前文件夹生成一个Vagrantfile
文件,这个文件是创建虚拟机的配置文件。
打开 virtualbox,管理->常规->默认虚拟电脑位置,设置虚拟机存储文件夹。
打开cmd 输入 ipconfig
查看VirtualBox 的虚拟网卡ip:
1 | 以太网适配器 VirtualBox Host-Only Network: |
修改 Vagrantfile
文件,指定其虚拟机的内网ip,需要和虚拟网卡一个网段:
1 | ### 配置位置可文件中搜索该配置项,有相应的提示 |
在 Vagrantfile
所在文件夹打开powershell或者cmd 执行指令vagrant up
启动一个虚拟机。
待虚拟机启动完成后执行 vagrant ssh
进入虚拟机,该虚拟机的root默认密码为vagrant
,进入时的账号也是vagrant
:
1 |
|
多机启动
我们在搭建一些环境时往往需要启动多台虚拟机,接下来我们将介绍如何创建多台虚拟机并进行相关的配置。
我们修改Vagrantfile
内容:
1 | Vagrant.configure("2") do |config| |
执行 vagrant up
启动node1,node2,node3 三台虚拟机,在启动过程中可能会报挂载失败的错误:
1 | node1: /share => E:/vagrant/data |
安装插件可以解决(如果还报错则卸载插件,换一个更低版本的):
1 | ## 安装插件 |
执行 vagrant status
查看虚拟机运行状态,也可以直接在virtualbox 界面上查看,在下次启动虚拟机的时候就不需要再cmd窗口执行vagrant up指令
,直接在virtualbox界面上选择启动方式。
进入虚拟机的指令:
1 | vagrant ssh '虚拟机名称' |
虚拟机初始化配置
在我们虚拟机启动后,其中dns 服务器地址是有问题的,我们希望在创建虚拟机的时候,进行一些基础的配置,我们可以在Vagrantfile 中添加脚本实现这些配置:
1 | Vagrant.configure("2") do |config| |
在示例中,我通过配置项node.vm.provision "shell"
编写脚本设置了dns 服务器ip。通过这个方式我们可以实现预装docker等操作。
我们还可以指定外部脚本,配置示例:
1 | config.vm.provision "shell", path: "script.sh" |
当然我们还可以制作自己的box 实现一键创建虚拟机。
首先我们在原来的虚拟机中安装好软件并修改相关配置配置文件,然后清除掉private_network的网络规则:
1 | sudo rm -f /etc/udev/rule.d/70-persistent-net.rules |
检查 /etc/ssh/sshd_config文件PasswordAuthentication no 是否被注释掉,没有注释掉的话无法通过 vagrant ssh
登录。
然后执行指令:
1 | vagrant package node1 |
在当前文件夹下得到一个 package.box 。
vagrant package 极大的增强了虚拟机的可移植性,在一定程度上降低了我们的学习成本。
备注
vagrant 常用指令速查表:
1 | # 查看box |
1 | nmcli connection show |