window10上使用virtualbox搭建linux集群(双网卡模式)
1. 背景
进行k8s的练习,需要一个多台虚拟机的集群,要求:
- 虚拟机可以跟宿主机互通
- 虚拟机之间可以互通
- 虚拟机可以上网
因此决定在办公电脑上使用virtualbox(以下简称vbox)搭建多个虚拟机,并使用UbuntuServer或CentoOS作为虚拟机的操作系统。
这里说明下环境:
对象 | 版本 |
---|---|
办公电脑(宿主) | Windows 10 |
VirtualBox | 6.0.8 |
虚拟机系统 | Ubuntu Server 19.04 或 Cent OS 7 |
2. 第一台机器
2.1 准备
在办公电脑上安装好vbox后,在系统的网络连接
中会出现一个叫做VirtualBox Host-Only Ethernet Adapter
的设备,后面我们会用到这个设备。
右键点击这个设备,选择属性
,在弹出的窗口中,双击Internet协议版本4(TCP/IPv4)
,又弹出个窗口,可以看到这个设备的网络配置。下面是我这里的情况:
属性 | 值 |
---|---|
IP地址 | 192.168.56.1 |
网卡2 | 255.255.255.0 |
2.2 创建及配置虚拟机
虚拟机创建过程很简单不讲述,这里主要说网络配置的问题。
虚拟机创建完成后,需要设置网卡,关于vbox的网络模式的信息可以参看官方文档,官方文档里有个对比表把各个模式的能力讲的很清楚。
我们这里使用的是双网卡模式,按照下面这个表格配置网卡的连接方式:
网卡 | 连接方式 |
---|---|
网卡1 | 网络地址转换(NAT) |
网卡2 | 仅主机(Host-Only)网络 |
之所以不使用桥接方式,是因为桥接方式会使机器暴露在公司网络里,而且通常我们使用云服务时也是双网卡的形式。
这里的网卡1
可以让虚拟机访问互联网,同时还不会暴露在公司办公网络里。网卡2
使宿主系统和虚拟机可以互相访问,它对应的就是2.1节里提到的那个网络设备。
2.3 安装Linux
将Linux光盘镜像插入虚拟机,启动虚拟机,进入安装。
2.3.1 Ubuntu Server的安装
安装界面是文本UI,比较方便。除了网络配置,其他尽可能用默认就可以。
注意在网络配置的那一步,会显示有两个网络接口:
接口 | 状态 |
---|---|
enp0s3 | 已经通过dhcp获取了地址(我这里是10.0.2.15 ),这个对应前面的网卡1 |
enp0s8 | 显示为not connected ,对应的是前面的网卡2 |
此时使用键盘上下键选中enp0s8,敲回车,在出现的界面中选在manual
(也就是手动配置这个网络接口的意思)。在弹出的表单中按照下面的表格进行配置:
域 | 取值 | 说明 |
---|---|---|
Address | 192.168.56.21 | IP地址,要跟2.1节里提到的设备的IP地址在同一个子网里,所以IP的D段在2到254内选择。 |
Netmask | 192.158.56.0/24 | 指定子网,我们只用IP的D段就足够了。 |
GateWay | 留空 | 我们不通过这个接口连接互联网,所以不要设置网关。 |
NameServer | 留空 | |
SearchServer | 留空 |
后面步骤就都很简单了,注意这么几点就可以:
- 有一步问你要不要安装SSH Server,最好安装上。
- 填写用户名密码那步,注意把机器名取的清晰些,因为后续还有好几台机器一起做集群。我这里用的
node01
。
2.3.2 Cent OS的安装
安装界面是图形界面,非常方便。注意把时区设置成咱们中国,其他的除了网络配置都尽量使用默认。
网络配置这部分,会显示有两个网络接口。其中enp0s3
对应网卡1
,enp0s8
对应网卡2
。这两个接口开始都是未连接状态(Disconnected)。
对于enp0s3
,首先在界面上设置为打开(On),然后点击Configure
,在配置窗口中的General
选项卡中的Automatically connect....
打上勾,然后Save
保存。保存后就发现这个接口已经通过dhcp获取到地址了(我这里是10.0.2.15
)。
对于enp0s8
,也同样先设置为打开(On),然后点击Configure
,在配置窗口中的General
选项卡中的Automatically connect....
打上勾,在IPv4 Settings
选项卡中将Method设置为Manual
,并按下表添加地址:
域 | 取值 | 说明 |
---|---|---|
Address | 192.168.56.21 | IP地址,要跟2.1节里提到的设备的IP地址在同一个子网里,所以IP的D段在2到254内选择。 |
Netmask | 255.255.255.0 | 指定子网,我们只用IP的D段就足够了。 |
GateWay | 留空 | 我们不通过这个接口连接互联网,所以不要设置网关。 |
注意网络配置窗口最下面有个设置Host Name
的地方,这里我设置成了node01
,因为后续还有好几台机器一起做集群。
2.4 安装后的检查
安装完成后,虚拟机重启,这时可以登录系统了。
可以按下面这样检查下系统:
- 在虚拟机上执行
ping qq.com
,确认虚拟机可以访问互联网。 - 在虚拟机上执行
ping 192.168.56.1
,确认虚拟机可以访问宿主机。注意宿主机可能由于开启了防火墙而无法被ping到
- 在宿主系统执行
ping 192.168.56.21
,确认宿主机可以访问虚拟机。 - 如果虚拟机有安装SSH Server,可以在宿主机用SSH登录192.168.56.21:22。
3 第二台机器
3.1 复制虚拟机
关闭前面步骤创建的那个虚拟机。
在vbox界面上,右键点击那个虚拟机,选择复制
,注意在弹出的选项框里的mac地址复制
要选择全部重新生成
。这样得到了第二台虚拟机。
启动新复制出来的虚拟机,会发现机器名仍然叫做node01
,enp0s8
的IP也还是192.168.56.21
,这跟前面第一台虚拟机冲突了。
Cent OS要先安装net-tools包才有ifconfig这类命令来查看网络。
yum install net-tools -y
3.2 修改新虚拟机的配置
3.2.1 Ubuntu Server的配置修改
使用以下命令修改主机名:sudo hostnamectl set-hostname node02
接下来修改IP,进入/etc/netplan
目录,里面有个50-cloud-init.yaml
的配置文件。编辑这个文件,将里面的192.168.56.21/24
改为192.168.56.22/24
。
改完后重启这台虚拟机,会发现机器名和IP都生效了。
3.2.2 Cent OS的配置修改
使用以下命令修改主机名:sudo hostnamectl set-hostname node02
接下来修改IP,进入/etc/sysconfig/network-scripts
目录,里面有个ifcfg-enp0s8
的配置文件。编辑这个文件,将里面的192.168.56.21
改为192.168.56.22
。
改完后重启这台虚拟机,会发现机器名和IP都生效了。
3.3 修改配置后的检查
此时可根据2.4里的步骤,对这台机器进行检查。
同时也可以把第一台虚拟机启动,确认这两台虚拟机可以通过192.168.0.XXX的IP互相ping通。
按照上面的步骤,可以搞好更多的机器。