前言
在使用容器服务的过程中,很多场景下需要使用到VPC网络。但是,目前在用户跟踪过程中发现,大家对于VPC网络的使用存在一点的误区,偶尔会导致一些意外情况的发生,导致使用受挫。该篇文章不会去详细介绍VPC网络的原理,只从容器服务使用VPC网络的角度来介绍如何在容器服务中正确的使用VPC网络以及相应的注意事项。
准备
VPC网段
为了可以顺利的在容器服务中创建VPC的容器集群,首先我们需要根据实际的情况规划网络。创建VPC网络的时候,您必须指定对应的CIDR来划分对应的子网,如果想了解更多的关于CIDR的信息,参见RFC4632了解更多关于 CIDR 的信息.
每个专有网络只能指定 1 个网段,网段范围如下,其中 172.16.0.0/12 是默认专有网络使用的网段。
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
容器网段
在创建VPC网络的容器服务集群的时候,需要用户指定对应的容器网段,目前容器服务支持的容器网段如下:
- 192.168.1.0/24
- 172.[16-31].1.0/24
网络规划
因为为什么保证容器间的网络互通,我们需要把每个容器网段都添加到路由表中,因此为了避免网段冲突,我们需要提前根据VPC和容器网段对自身的应用服务进行相应的网络规划。
网络规划过程中本着避免冲突的原则,需要从以下几个方面考虑
- 容器网段跟vpc网段不能重合
- 专有云或者混合云场景下,容器网段建议不要跟私有网段重合
- 网段规划
在VPC网段和容器网段中,我们发现172网段属于重合的,因此对于VPC网段和容器网段选择172网段的时候,需要特别注意,下面举例来说明一下:
假设VPC网段选择为 172.16.0.0/12
交换机网段设定为 172.18.1.0/24
那么根据交换的网段定义,归属于该交换机的ECS的IP地址应该是在172.18.1.1-172.18.1.252
如果此时,我们的容器网段也定义为 172.18.1.0/24 就会出现容器的IP和ECS重复的情况,在这种情况下会导致容器间的网络通信出现异常,因此在使用VPC网络的时候,必须注意网络的规划。
- 路由表规划
目前同一个VPC的最大路由表条目是48条,
示例
接下来,我们使用一个完整的实例流程,来看一下整个容器服务VPC网络的集群创建流程
- 创建VPC网络
登录到阿里云VPC网络控制台,点击创建专有网络,在本示例中,我们为了避免和容器网段可能的冲突,选择了创建10.0.0.0/8网段的VPC网络。
- 创建交换机
当VPC创建好以后,我们在该VPC下创建相应的交换机。本示例中,我们选择创建华东2可用区10.1.1.0/24的交换机,前面我们介绍过,创建ECS的时候,我们如果选择该交换机的话,最终ECS的IP地址为 10.1.1.1-10.1.1.252,合计252个IP地址(也就是说该网段的交换机下可以购买252台ECS)
![VPC_007_](https://yqfile.alicdn.com/1cad9de555d07367a7601982ff7637523219c76c.png)
- 查看路由表
当VPC和交换机创建好以后,我们来查看一下路由表的信息
从上图红色框标记可以看到,交换机的网络会被作为默认的系统路由表。
- 创建容器集群
打开容器服务控制台,选择创建集群,选择华东2地域,专有网络,选择我们之前创建好的VPC和交换机。
此时,红色框里我们选择172.18.0.0/24 作为容器的起始网段。那么也就意味着,该集群内的节点上的容器网段为 172.18.[1-254].0/24,每个节点上容器的IP地址为172.18.x.[1-255]
- 数据校验
等待容器集群创建成功后,我们可以通过校验集群节点IP地址,路由表,查看应用容器的IP地址等方式来验证我们之前提到的网络规划的理论。
通过查看容器集群的节点列表中ECS的IP地址,即可验证交换的网段,我们从下图可以看到新购的ECS都归属于10.1.1.0/24这个交换机网段
验证完节点IP地址,我们继续校验路由表,此时系统会向该VPC的路由表里新增网段为172.18.x.0/24的路由信息,下一条为对应的ECS实例ID,如下图
最终,我们验证一下容器的IP是否正确,此时我们通过模板从容器服务控制台部署一个系统自带的示例的wordpress应用,然后通过查看某一个节点上的容器列表,来验证一下容器的IP
通过以上的校验,我们成功的创建出来一个VPC网络的容器集群。
总结
对于VPC网络的容器集群来说,其实也并没有那么的复杂,只要我们仔细研究和规划好自身应用的网络,就可以避免在使用过程中的一些问题。