最近阿里云买了三台服务器,准备搭建一个k8s集群。三台服务器分别隶属于同地域的三个账号下面,操作过程中遇到了很多问题,再次做以记录。
1.ECS内网互通
要做ecs内网互通比较简单,假设我现在有两台服务器A和B,只需要做到以下三步就行了。
1.在A服务器控制台找到云企业网,开通云企业网业务,并在云企业网主页点击创建实例按钮。页面如下,可能有些朋友觉得页面显示不一样,这里可以点击云企业网管理页面的切换旧版按钮再新建实例。
这里名称随便填,实例类型选择“专有网络VPC”,地域选择服务器所在地就行。网络实例一般没有新增的话只有一个默认的网络实例,选择就是了。填好信息点击确定按钮,实例就创建好了。
2.登录B服务器控制台,搜索专有网络VPC,一般没有主动新建的话只会有一条。
点击实例id,选择上方的云企业网跨账号授权,此时输入A账号的UID和刚才在A账号创建的云企业实例ID,点击确定就行。
3.继续登录A账号,进入刚才云企业创建的实力ID中。点击加载网络实例,选择跨账号,然后填入B账号的信息就可以了。
最后结果如下图,有几台服务器要做网络互通,只需要在其他服务器重复第2,3步就行了。
2.问题排查
设置完以上步骤后去在服务器中尝试ping一下内网地址。如果都ping不通仔细查看一下,可能是以下两个问题。
(1)服务器不在同一个地域
(2)步骤不对
3.安装docker导致内网互ping失败
在刚才操作了步骤1之后,我确认我三台ECS都是互ping的通内网地址的。然后就着手开始在每台服务器中安装docker以及k8s相关的镜像。安装完后再去尝试ping的时候,发现全部ping不通了,此时可以猜想是docker安装期间有操作影响了网络。在每台服务器中都运行route-n查看路由列表。
route -n
发现有两台服务器的docker网端是冲突的,感觉这里可能是导致ping不同的原因,所以这里将docker0对应的网关地址做了调整。
1.修改daemon.json文件。
vi /etc/docker/daemon.json
2.在文件中指定网关地址,这里我也并没有深究如何去地址的取值生成规则,反正随便指定了一个,主要不重复就行了。
{
"bip": "172.27.10.1/24"
}
3.重启docker。
systemctl restart docker
做完以上操作后,互ping地址发现都可以了。
4.总结
总体来说阿里云ECS做内网互通还是比较简单。如果没有安装docker的情况下,一般只要按照文中的步骤1去操作,就可以做到内网之间互相ping通了。如果安装了docker,没有注意docker0的网关,可能就会出现我上面的问题,可以尝试修改docker0的网关地址。如果上面操作都没有用,可以向阿里云提交工单,会有售后人员快速帮你判断问题在哪里,没有必要自己一直去盲目寻找问题在哪。