引言
这几天从想搭建一个容器集群开始,然后去官网下载了centos7,到克隆好了镜像,却突然发现连不上网,ping不通百度,然后就陷入了漫长的解决虚拟机联网问题,然后又重新部署一些相关的东西,中间花费了很多时间,另外也吸取了很多的经验,虽然到最后还是没解决主要问题,我最后是切换了模式,但知道了很多东西,所以想在这里记录一下。
VMware介绍与安装
VMware介绍
VMware的安装就不做过多介绍了,各大公众号还有本站也有,主要来讲一讲虚拟机。虚拟机有三种模式,它们分别是:
-
仅主机(Host Only),虚拟主机只能与宿主机联网通信,无法访问外网和宿主机所在局域网的其它主机。
-
桥接(Bridge),在桥接模式下,虚拟主机就像是宿主机所在的局域网中的一个独立的主机,它可以访问到在宿主机所在局域网内的主机所能访问的任何一台机器。不过宿主机要能拥有2个以上的IP地址,并且需要手工为虚拟主机配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。如果你想利用VMware在宿主机所在局域网内新建一个虚拟服务器,为宿主机所在局域网的其它用户提供网络服务,就应该选择桥接模式。
-
NAT(网络地址转换模式),该模式下宿主机的物理网卡就充当了路由器或交换机的角色,默认由宿主机的VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手工修改,该模式宿主机可以ping通虚拟机(但前提是将VMnet8的IP设置成和虚拟机网络为同一网段),虚拟机也能ping通主机,但据说不能ping通宿主机所在局域网的其它主机,但可以连接外网,注意,此模式下虚拟机连接宿主机,宿主机获得的RemoteAddr实际上就是宿主机本身的地址,因为虚拟机访问外部网络实际上是借由宿主机完成的。
-
当VMware为虚拟机设置了网络后宿主机中会有几个虚拟的网络连接,默认情况下,VMnet0被设置成为Bridge模式,VMnet1被设置为Host Only模式,而VMnet8的默认连接方式为NAT模式(不可改)。VMnet2-VMnet7和VMnet9这七块虚拟网卡用户可以自定义(一般用VMware默认的即可)。
可能上面文字很多,有些是我看别人的,然后有些自己也写了点,这都是我这几天踩过来的坑,现在回过头来看看,发现对上述的理解进一步加深,有了很多感想,虽然我没有学过计算机网络,但我尽可能在后面解释一下。
centos安装
这里如果我们没有资源,可以直接去官网下载它提供的两个版本,虽然我感觉很一般,坑很多。
https://www.centos.org/download/
最好选择DVD版,有接近4个g,minimal版本我下完克隆镜像后发现缺少了太多的东西,如果是为了熟悉Linux系统而装那么会学到很多东西,但我只是为了做一个相当于中间件,所以在尝试minimal无果后我用了DVD。
那么下面的下载步骤我就不做过多介绍了,网上有一篇博文挺全的,我基本上是跟着这篇的步骤下载,这里还没有遇到什么坑。
中间有一步要注意一下:
这里需要我们填写虚拟机名称,默认我记得是叫VMware的虚拟机,这个最好不要带中文,因为下面的network需要根据这个来设置一个host name,所以要手动设置一个,我当时是一直下一步,到后面设置又把这个镜像删了重新来。。。怕有什么坑,这里还是没有什么大问题的。
联网问题
这里纠结了整整有接近一天吧,不知道哪一步出了问题,各种地址换来换去,但终是用处不大,然后我就直接换成NAT模式了,可能我中间误删或者误改了什么东西,导致ping不通,所以这里分享一些经验。
如果是按照我上面步骤来的话,基本上当我们启动centos7的时候,宿主机和虚拟机就可以ping通了,开始我也以为到这里基本就没有问题了,所以马上对虚拟机进行了克隆,克隆的话很简单,这里提一下:
VMware 完整克隆(Full Clone)
完全克隆的虚拟机不依赖源虚拟机,是完全独立的虚拟机,它的性能与被克隆虚拟机相同。
由于完整克隆不与父虚拟机共享虚拟磁盘,所以创建完整克隆所需的时间比链接克隆更长。如果涉及的文件较大,完整克隆可能需要数分钟才能创建完成。完整克隆只复制克隆操作时的虚拟机状态,因此无法访问父虚拟机的快照。
VMware 链接克隆(Linked Clone)
依赖于源虚拟机(称为父虚拟机)。由于链接克隆是通过父虚拟机的快照创建而成,因此节省了磁盘空间,而且克隆速度非常快,但是克隆后的虚拟机性能能会有所下降。
对父虚拟机的虚拟磁盘进行的更改不会影响链接克隆,对链接克隆磁盘所做的更改也不会影响父虚拟机。但是如果父虚拟机损坏或快照点删除,链接克隆的虚拟机也不能使用;如果父虚拟机移动位置,需要重新指定父虚拟机的位置,再启动链接克隆虚拟机。
注意:
-
如果制作链接克隆的完整克隆,该完整克隆将成为一个独立的虚拟机,不需要访问链接克隆或是其父虚拟机。
-
无法在未销毁链接克隆的情况下删除链接克隆快照,必须同时删除依赖快照的克隆,才能安全地删除该快照。
所以选择链接克隆,占用空间小,另外就是克隆速度快,基本5秒钟能搞定。确定自己的虚拟机关闭之后,我们开始克隆虚拟机,我们选择工具栏中的“虚拟机”,然后选择其中的“管理”选项,选择“克隆”。然后接着就只要跟着向导就行了。
然后当我准备大刀阔斧的下载相关组件的时候,发现yum根本无法安装?
Cannot find a valid baseurl for repo: base/7/x86_64
这个错误首先看到的是valid baseurl,我猜到是仓库有问题,然而还是去百度了一下,于是就看了无数错误帖,没有一篇讲到了点上,然后这里的一些错误我就不提了(不适用于我这里),我这里的正确步骤为:
# 备份系统的原镜像文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
# 下载新的CentOS-Base.repo 到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 运行makecache生成缓存
yum clean all
yum makecache
这个也好解决,但没有网的问题依旧:
$ ping: www.baidu.com
Name or service not known
出现这个基本证明是虚拟机有问题,我看了网上最简单的方法是去/etc/sysconfig/network-scripts/目录下修改ifcfg文件,这个文件每种虚拟机都有不同的序号,像上面官网的就是ifcfg-ens33,然后如果我上博文中的安装步骤,选择了桥接模式,那么初始设置是这样的:
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="50062bb9-88d0-4db7-9301-8cc151d74423"
DEVICE="ens33"
ONBOOT="yes"
很多篇博客是说虚拟机开始的ONBOOT是no,即没有自启动网卡,另外就是BOOTPROTO改成dhcp模式,这个是动态ip,系统会分配一个可以用的ip地址。
但我这里默认都是这样的,所以上述方法显然没用,然后中间还有一些非常古怪的我就不提了,我也去尝试了一下,感觉要不就是把我系统搞崩,否则牵一发而动全身。
第二种方式就是设置静态IP地址上网了,我们在Windows中进入cmd,输入ipconfig /all查看所有的网络连接状态:
这里比较重要的就是三个画框的地方,如果要改静态IP,那么我们这里还需要算一下子网IP,避免重复:
主机ip与子网ip的运算为与运算,具体的为如下公式:
每个子网只有一个掩码,但需要注意,并不是子网掩码相同就是同一子网
子网号 = IP & 子网掩码
主机号 = IP & 掩码取反
那么针对我这里的地址就可以算:
主机与子网掩码 | 地址 |
---|---|
10.4.25.25 | 00001010-00000100-00011001-00011001 |
255.255.240.0 | 11111111-11111111-11110000-00000000 |
它们相与再转换成十进制为:10.4.16.0。这个就是可以用的ip地址,从第四位的0~255,还有一种简单的方式,直接看默认网关就清楚了该段在哪里。
然后我们就再次修改ifcfg-ens33文件为:
BOOTPROTO="static" # 手动分配ip
IPADDR="10.4.16.161" # 该网卡ip地址就是你要配置的固定IP,如果你要用xshell等工具连接,这个网段最好和你自己的电脑网段一致,否则有可能用xshell连接失败
GATEWAY="10.4.16.1" # 网关
NETMASK="255.255.240.0" # 子网掩码
DNS1="8.8.8.8" # DNS,8.8.8.8为Google提供的免费DNS服务器的IP地址,或者改成上述本机Windows上显示的两个
DNS2="101.226.4.6"
输入service network restart重启,再去配置VMware:
这里给篇博文,因为之前我一怒之下卸载了一遍虚拟机,之前配置的都没了,然后这里就看这个吧,很详细:
关于使用VMware搭建Linux虚拟机配置IP你应知道的一切
然后都配置好了,重新ping www.baidu.com,我发现我这边还是没用,于是又找了半天问题,改了防火墙,改了软连接等等,最终我将VMware改成了nat模式,终极方案,终是成功。
总结
踩的坑有点多,中间这些解决方案肯定是都有用的,我也是按着步骤一步步进行深化,但到底有多少关联就不太清楚了,下一篇我应该会写K8S的配置问题,但发现联想的笔记本实在是太卡了,我就不说一天至少几十次的内存泄漏了。。。没脾气,要换了,到时候再说,等里面东西坏了之后。嗯,就这样。