由于不同VPC之间网络不通,Pod无法跨VPC进行网络通信。您可以通过对等连接连通两个VPC,使在本VPC下的Pod中能够访问另一个VPC下的服务。集群的容器网络类型不同,实现跨VPC访问的步骤也不同,具体请参见表1。在本文中,集群所在VPC称为集群VPC,被访问的云服务所在VPC称为目标VPC,被访问的云服务所在子网称为目标子网。
表1 容器网络类型跨VPC访问区别
容器网络类型 |
说明 |
步骤区别 |
容器隧道网络 |
容器隧道网络在节点网络基础上通过隧道封装网络数据包。
从Pod访问不同VPC下的其他服务时,需确保节点子网与目标子网之间的连通性。 |
创建集群VPC和目标VPC的对等连接后,只需要建立节点子网和目标子网之间的路由。 |
VPC网络 |
在VPC网络中,使用VPC路由功能来转发容器的流量。集群VPC的网段与容器网段不能重叠,二者是独立存在的。
从Pod访问不同VPC下的其他服务时,不仅需确保节点子网与目标子网之间的连通性,还要需确保容器网段与目标子网之间的连通性。 |
创建集群VPC和目标VPC的对等连接后,需要建立目标子网与集群节点子网和容器网段之间的路由。 |
云原生网络2.0 |
在云原生网络2.0模型下,容器直接从集群VPC的网段内分配IP地址,即容器子网是集群VPC的某个子网。
从Pod访问不同VPC下的其他云服务时,只需确保容器子网与目标子网之间的连通性。 |
创建集群VPC和目标VPC的对等连接后,只需要建立容器子网和目标子网之间的路由。 |
与CCE进行通信的云服务有:ECS、ELB、RDS、DCS、Kafka、RabbitMQ、ModelArts、DDS等。进行通信时,除了关注相关的网络配置外,还需要关注所访问的云服务是否允许外部访问,如DCS的Redis实例,需要添加白名单才允许访问(如果无法直接在对应服务界面添加白名单,可在对应服务中创建工单寻求帮助)。
本文以访问ECS和访问RDS for MySQL为例,分别介绍3种不同容器网络模型的集群如何实现Pod跨VPC通信。示例中的集群、ECS和RDS for MySQL的网络信息,请参见表2。
表2 网络信息
云服务 |
集群的容器网络模型 |
网络信息 |
CCE
|
容器隧道网络(CCE Standard集群) |
集群VPC
- 名称:vpc-demo1
- 子网:192.168.0.0/18和172.1.0.0/24
节点子网:192.168.0.0/18
容器网段:172.1.1.0/24 |
VPC网络(CCE Standard集群) |
集群VPC
- 名称:vpc-demo1
- 子网:192.168.0.0/18和172.1.0.0/24
节点子网:192.168.0.0/18
容器网段:172.1.1.0/24 |
云原生网络2.0(CCE Turbo集群) |
集群VPC
- 名称:vpc-demo1
- 子网:192.168.0.0/18和172.1.0.0/24
节点子网:192.168.0.0/18
容器子网:172.1.0.0/24 |
ECS |
- |
目标VPC
- 名称:vpc-demo2
- 子网:10.1.0.0/16
ECS所在子网(目标子网):10.1.0.0/16
ECS的IP地址:10.1.1.24 |
RDS for MySQL |
- |
目标VPC
- 名称:vpc-373896-1
- 子网:172.16.0.0/16
RDS for MySQL所在子网(目标子网):172.16.0.0/16
RDS for MySQL的IP地址:172.16.0.167 |
从Pod访问不同的云服务
以在Pod中访问不同VPC网络的ECS和RDS for MySQL为例,介绍Pod如何实现跨VPC通信。
分别介绍容器隧道网络(CCE Standard集群)、VPC网络(CCE Standard集群)和云原生网络2.0(CCE Turbo集群)如何实现在Pod中访问ECS,您可以根据集群类型进行选择。
- 创建集群VPC和目标VPC的对等连接。
- 进入控制台,单击左上角的,在展开的列表中单击“网络 > 虚拟私有云”。
- 在左侧列表单击“对等连接”,在新页面右上角区域,单击“创建对等连接”。
- 根据界面提示设置对等连接参数,相关参数说明请参见表3。
图1 创建对等连接
表3 创建对等连接参数说明
参数 |
说明 |
示例 |
对等连接名称 |
必选参数。
此处填写对等连接的名称。
由中文字符、英文字母、数字、中划线和下划线等构成,一般不超过64个字符。 |
peering-demo |
本端VPC |
必选参数。
此处为对等连接一端的VPC,可以在下拉框中选择已有VPC作为本端VPC。 |
vpc-demo1 |
本端VPC网段 |
此处显示已选择的本端VPC的网段。 |
192.168.0.0/18,172.1.0.0/24 |
账户 |
必选参数。
- 当前账户:当对等连接中的对端VPC和本端VPC位于同一个账户下时,选择该项。
- 其他账户:当对等连接中的对端VPC和本端VPC位于不同账户下时,选择该项。
|
当前账户 |
对端项目 |
当账户选择“当前账户”时,系统默认填充对应的项目,无需您额外操作。
比如vpc-demo1和vpc-demo2均为账户A下的资源,并且位于区域A,那么此处系统默认显示账户A下,区域A对应的项目。 |
- |
对端VPC |
当账户选择“当前账户”时,该项为必选参数。
此处为对等连接另外一端的VPC,可以在下拉框中选择已有VPC作为对端VPC。 |
vpc-demo2 |
对端VPC网段 |
此处显示已选择的对端VPC的网段。
须知:
当您的本端VPC和对端VPC存在网段重叠的情况时,您的对等连接可能不会生效。
|
10.1.0.0/16 |
- 参数填写完成后,单击“立即创建”。
- 在弹出的路由添加提示对话框中,单击“立即添加”,添加节点子网和目标子网的路由。在“添加路由”对话框中,根据界面提示配置相关参数,相关参数说明请参见表4。
图2 添加节点子网和目标子网路由
表4 节点子网和目标子网路由参数说明
参数 |
说明 |
示例 |
虚拟私有云 |
选择对等连接两端中的任意一个VPC。 |
vpc-demo1 |
路由表 |
选择VPC的路由表,路由信息将会添加在该路由表中。
VPC创建完成后自带一个默认路由表,用来控制VPC内子网出方向的流量走向。除了默认路由表,您还可以创建自定义路由表,并关联至子网,则该子网的出方向流量由自定义路由表控制。
- 如果路由表的下拉列表中只有默认路由表,则选择默认路由表即可。
- 如果路由表的下拉列表中同时存在默认路由表和其他自定义路由表,则选择对等连接连通的子网所关联的路由表。
|
rtb-vpc-demo1(默认路由表) |
目的地址 |
对等连接另一端VPC内的地址,可以为VPC网段、子网网段和ECS IP地址等。 |
10.1.0.0/16 |
添加另一端VPC的路由 |
勾选该参数,可同时添加对等连接另一端VPC内的回程路由。
通常情况下,您需要在对等连接两端VPC的路由表中分别添加去程和回程路由,才可以实现通信。 |
勾选 |
虚拟私有云 |
系统默认填写对等连接两端的另一个VPC,您无需选择。 |
vpc-demo2 |
路由表 |
选择VPC的路由表,路由信息将会添加在该路由表中。
VPC创建完成后自带一个默认路由表,用来控制VPC内子网出方向的流量走向。除了默认路由表,您还可以创建自定义路由表,并关联至子网,则该子网的出方向流量由自定义路由表控制。
- 如果路由表的下拉列表中只有默认路由表,则选择默认路由表即可。
- 如果路由表的下拉列表中同时存在默认路由表和其他自定义路由表,则选择对等连接连通的子网所关联的路由表。
|
rtb-vpc-demo2(默认路由表)
|
目的地址 |
对等连接另一端VPC内的地址,可以为VPC网段、子网网段和ECS IP地址等。 |
192.168.0.0/18 |
- 登录Pod,具体请参见登录容器实例,在Pod的CloudShell界面再次输入以下代码,验证是否能从Pod访问ECS。其中,10.1.1.24为被访问ECS的IP地址。
ping 10.1.1.24
如果访问不通,请检查ECS安全组“入方向规则”中是否包含集群节点子网。若没有请添加相关规则,您需要添加相应的安全组规则,具体请参见添加安全组规则。
- Pod有ping命令,若回显内容如下,则说明在Pod中跨VPC访问成功。
PING 10.1.1.24 (10.1.1.24): 56 data bytes
64 bytes from 10.1.1.24: seq=0 ttl=64 time=1.412 ms
64 bytes from 10.1.1.24: seq=1 ttl=64 time=1.400 ms
64 bytes from 10.1.1.24: seq=2 ttl=64 time=1.299 ms
64 bytes from 10.1.1.24: seq=3 ttl=64 time=1.283 ms
--- 10.1.1.24 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
- Pod没有ping命令,需要添加ping命令,回显内容如下。
ping: command not found
下面以容器Nginx:latest为例介绍如何添加ping命令,若已有ping命令可跳过。
- 确保从Pod能够访问公网,请参见从Pod访问公网。
- 更新本地的软件包索引,并安装iputils-ping软件包,该软件包提供了ping命令。
apt-get update
apt-get install iputils-ping
- 重新尝试访问ECS。
ping 10.1.1.24
若回显内容如下,则说明ping命令添加成功,且在Pod中跨VPC访问成功。
PING 10.1.1.24 (10.1.1.24): 56 data bytes
64 bytes from 10.1.1.24: seq=0 ttl=64 time=1.412 ms
64 bytes from 10.1.1.24: seq=1 ttl=64 time=1.400 ms
64 bytes from 10.1.1.24: seq=2 ttl=64 time=1.299 ms
64 bytes from 10.1.1.24: seq=3 ttl=64 time=1.283 ms
--- 10.1.1.24 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
- 创建集群VPC和目标VPC的对等连接。
- 进入控制台,单击左上角的,在展开的列表中单击“网络 > 虚拟私有云”。
- 在左侧列表单击“对等连接”,在新页面右上角区域,单击“创建对等连接”。
- 根据界面提示设置对等连接参数,相关参数说明请参见表5。
图3 创建对等连接
表5 创建对等连接参数说明
参数 |
说明 |
示例 |
对等连接名称 |
必选参数。
此处填写对等连接的名称。
由中文字符、英文字母、数字、中划线和下划线等构成,一般不超过64个字符。 |
peering-demo |
本端VPC |
必选参数。
此处为对等连接一端的VPC,可以在下拉框中选择已有VPC作为本端VPC。 |
vpc-demo1 |
本端VPC网段 |
此处显示已选择的本端VPC的网段。 |
192.168.0.0/18,172.1.0.0/24 |
账户 |
必选参数。
- 当前账户:当对等连接中的对端VPC和本端VPC位于同一个账户下时,选择该项。
- 其他账户:当对等连接中的对端VPC和本端VPC位于不同账户下时,选择该项。
|
当前账户 |
对端项目 |
当账户选择“当前账户”时,系统默认填充对应的项目,无需您额外操作。
比如vpc-demo1和vpc-demo2均为账户A下的资源,并且位于区域A,那么此处系统默认显示账户A下,区域A对应的项目。 |
- |
对端VPC |
当账户选择“当前账户”时,该项为必选参数。
此处为对等连接另外一端的VPC,可以在下拉框中选择已有VPC作为对端VPC。 |
vpc-demo2 |
对端VPC网段 |
此处显示已选择的对端VPC的网段。
须知:
当您的本端VPC和对端VPC存在网段重叠的情况时,您的对等连接可能不会生效。
|
10.1.0.0/16 |
- 参数填写完成后,单击“立即创建”。
- 在弹出的路由添加提示对话框中,单击“立即添加”,添加节点子网和目标子网的路由。在“添加路由”对话框中,根据界面提示配置相关参数,相关参数说明请参见表6。
图4 添加节点子网和目标子网路由
表6 节点子网和目标子网路由参数说明
参数 |
说明 |
示例 |
虚拟私有云 |
选择对等连接两端中的任意一个VPC。 |
vpc-demo1 |
路由表 |
选择VPC的路由表,路由信息将会添加在该路由表中。
VPC创建完成后自带一个默认路由表,用来控制VPC内子网出方向的流量走向。除了默认路由表,您还可以创建自定义路由表,并关联至子网,则该子网的出方向流量由自定义路由表控制。
- 如果路由表的下拉列表中只有默认路由表,则选择默认路由表即可。
- 如果路由表的下拉列表中同时存在默认路由表和其他自定义路由表,则选择对等连接连通的子网所关联的路由表。
|
rtb-vpc-demo1(默认路由表) |
目的地址 |
对等连接另一端VPC内的地址,可以为VPC网段、子网网段和ECS IP地址等。 |
10.1.0.0/16 |
添加另一端VPC的路由 |
勾选该参数,可同时添加对等连接另一端VPC内的回程路由。
通常情况下,您需要在对等连接两端VPC的路由表中分别添加去程和回程路由,才可以实现通信。 |
勾选 |
虚拟私有云 |
系统默认填写对等连接两端的另一个VPC,您无需选择。 |
vpc-demo2 |
路由表 |
选择VPC的路由表,路由信息将会添加在该路由表中。
VPC创建完成后自带一个默认路由表,用来控制VPC内子网出方向的流量走向。除了默认路由表,您还可以创建自定义路由表,并关联至子网,则该子网的出方向流量由自定义路由表控制。
- 如果路由表的下拉列表中只有默认路由表,则选择默认路由表即可。
- 如果路由表的下拉列表中同时存在默认路由表和其他自定义路由表,则选择对等连接连通的子网所关联的路由表。
|
rtb-vpc-demo2(默认路由表)
|
目的地址 |
对等连接另一端VPC内的地址,可以为VPC网段、子网网段和ECS IP地址等。 |
192.168.0.0/18 |
- 当前页面单击“添加路由”,添加集群目标VPC和容器网段的路由。在“添加路由”界面中,“虚拟私有云”填入vpc-demo2,“目的地址”填入集群容器网段172.1.1.0/24,具体请参见图5。
图5 添加容器网段路由
- 登录Pod,具体请参见登录容器实例,在Pod的CloudShell界面再次输入以下代码,验证是否能从Pod访问ECS。其中,10.1.1.24表示被访问ECS的IP地址。
ping 10.1.1.24
如果访问不通,请检查ECS安全组“入方向规则”中是否包含集群节点子网和容器网段。若没有请添加相关规则,您需要添加相应的安全组规则,具体请参见添加安全组规则。
- Pod有ping命令,若回显内容如下,则说明在Pod中跨VPC访问成功。
PING 10.1.1.24 (10.1.1.24): 56 data bytes
64 bytes from 10.1.1.24: seq=0 ttl=64 time=1.412 ms
64 bytes from 10.1.1.24: seq=1 ttl=64 time=1.400 ms
64 bytes from 10.1.1.24: seq=2 ttl=64 time=1.299 ms
64 bytes from 10.1.1.24: seq=3 ttl=64 time=1.283 ms
--- 10.1.1.24 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
- Pod没有ping命令,需要添加ping命令,回显内容如下。
ping: command not found
下面以容器Nginx:latest为例介绍如何添加ping命令,若已有ping命令可跳过。
- 确保从Pod能够访问公网,请参见从Pod访问公网。
- 更新本地的软件包索引,并安装iputils-ping软件包,该软件包提供了ping命令。
apt-get update
apt-get install iputils-ping
- 重新尝试访问ECS。
ping 10.1.1.24
若回显内容如下,则说明ping命令添加成功,且在Pod中跨VPC访问成功。
PING 10.1.1.24 (10.1.1.24): 56 data bytes
64 bytes from 10.1.1.24: seq=0 ttl=64 time=1.412 ms
64 bytes from 10.1.1.24: seq=1 ttl=64 time=1.400 ms
64 bytes from 10.1.1.24: seq=2 ttl=64 time=1.299 ms
64 bytes from 10.1.1.24: seq=3 ttl=64 time=1.283 ms
--- 10.1.1.24 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
- 创建集群VPC和目标VPC的对等连接。
- 进入控制台,单击左上角的,在展开的列表中单击“网络 > 虚拟私有云”。
- 在左侧列表单击“对等连接”,在新页面右上角区域,单击“创建对等连接”。
- 根据界面提示设置对等连接参数,相关参数说明请参见表7。
图6 创建对等连接
表7 创建对等连接参数说明
参数 |
说明 |
示例 |
对等连接名称 |
必选参数。
此处填写对等连接的名称。
由中文字符、英文字母、数字、中划线和下划线等构成,一般不超过64个字符。 |
peering-demo |
本端VPC |
必选参数。
此处为对等连接一端的VPC,可以在下拉框中选择已有VPC作为本端VPC。 |
vpc-demo1 |
本端VPC网段 |
此处显示已选择的本端VPC的网段。 |
192.168.0.0/18,172.1.0.0/24 |
账户 |
必选参数。
- 当前账户:当对等连接中的对端VPC和本端VPC位于同一个账户下时,选择该项。
- 其他账户:当对等连接中的对端VPC和本端VPC位于不同账户下时,选择该项。
|
当前账户 |
对端项目 |
当账户选择“当前账户”时,系统默认填充对应的项目,无需您额外操作。
比如vpc-demo1和vpc-demo2均为账户A下的资源,并且位于区域A,那么此处系统默认显示账户A下,区域A对应的项目。 |
- |
对端VPC |
当账户选择“当前账户”时,该项为必选参数。
此处为对等连接另外一端的VPC,可以在下拉框中选择已有VPC作为对端VPC。 |
vpc-demo2 |
对端VPC网段 |
此处显示已选择的对端VPC的网段。
须知:
当您的本端VPC和对端VPC存在网段重叠的情况时,您的对等连接可能不会生效。
|
10.1.0.0/16 |
- 在弹出的路由添加提示对话框中,单击“立即添加”,添加集群容器子网和目标子网的路由。在“添加路由”界面中,根据界面提示配置相关参数,相关参数说明请参见表8。
图7 添加容器子网和目标子网的路由
表8 容器子网和目标子网路由参数说明
参数 |
说明 |
示例 |
虚拟私有云 |
选择对等连接两端中的任意一个VPC。 |
vpc-demo1 |
路由表 |
选择VPC的路由表,路由信息将会添加在该路由表中。
VPC创建完成后自带一个默认路由表,用来控制VPC内子网出方向的流量走向。除了默认路由表,您还可以创建自定义路由表,并关联至子网,则该子网的出方向流量由自定义路由表控制。
- 如果路由表的下拉列表中只有默认路由表,则选择默认路由表即可。
- 如果路由表的下拉列表中同时存在默认路由表和其他自定义路由表,则选择对等连接连通的子网所关联的路由表。
|
rtb-vpc-demo1(默认路由表) |
目的地址 |
对等连接另一端VPC内的地址,可以为VPC网段、子网网段和ECS IP地址等。 |
10.1.0.0/16 |
添加另一端VPC的路由 |
勾选该参数,可同时添加对等连接另一端VPC内的回程路由。
通常情况下,您需要在对等连接两端VPC的路由表中分别添加去程和回程路由,才可以实现通信。 |
勾选 |
虚拟私有云 |
系统默认填写对等连接两端的另一个VPC,您无需选择。 |
vpc-demo2 |
路由表 |
选择VPC的路由表,路由信息将会添加在该路由表中。
VPC创建完成后自带一个默认路由表,用来控制VPC内子网出方向的流量走向。除了默认路由表,您还可以创建自定义路由表,并关联至子网,则该子网的出方向流量由自定义路由表控制。
- 如果路由表的下拉列表中只有默认路由表,则选择默认路由表即可。
- 如果路由表的下拉列表中同时存在默认路由表和其他自定义路由表,则选择对等连接连通的子网所关联的路由表。
|
rtb-vpc-demo2(默认路由表)
|
目的地址 |
对等连接另一端VPC内的地址,可以为VPC网段、子网网段和ECS IP地址等。 |
172.1.0.0/24 |
- 登录Pod,具体请参见登录容器实例,在Pod的CloudShell界面再次输入以下代码,验证是否能从Pod访问ECS。其中,10.1.1.24表示被访问ECS的IP地址。
ping 10.1.1.24
如果访问不通,请检查ECS安全组“入方向规则”中是否包含集群容器子网。若没有请添加相关规则,您需要添加相应的安全组规则,具体请参见添加安全组规则。
- Pod有ping命令,若回显内容如下,则说明在Pod中跨VPC访问成功。
PING 10.1.1.24 (10.1.1.24): 56 data bytes
64 bytes from 10.1.1.24: seq=0 ttl=64 time=1.412 ms
64 bytes from 10.1.1.24: seq=1 ttl=64 time=1.400 ms
64 bytes from 10.1.1.24: seq=2 ttl=64 time=1.299 ms
64 bytes from 10.1.1.24: seq=3 ttl=64 time=1.283 ms
--- 10.1.1.24 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
- Pod没有ping命令,需要添加ping命令,回显内容如下。
ping: command not found
下面以容器Nginx:latest为例介绍如何添加ping命令,若已有ping命令可跳过。
- 确保从Pod能够访问公网,请参见从Pod访问公网。
- 更新本地的软件包索引,并安装iputils-ping软件包,该软件包提供了ping命令。
apt-get update
apt-get install iputils-ping
- 重新尝试访问ECS。
ping 10.1.1.24
若回显内容如下,则说明ping命令添加成功,且在Pod中跨VPC访问成功。
PING 10.1.1.24 (10.1.1.24): 56 data bytes
64 bytes from 10.1.1.24: seq=0 ttl=64 time=1.412 ms
64 bytes from 10.1.1.24: seq=1 ttl=64 time=1.400 ms
64 bytes from 10.1.1.24: seq=2 ttl=64 time=1.299 ms
64 bytes from 10.1.1.24: seq=3 ttl=64 time=1.283 ms
--- 10.1.1.24 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
分别介绍容器隧道网络(CCE Standard集群)、VPC网络(CCE Standard集群)和云原生网络2.0(CCE Turbo集群)如何实现在Pod中访问RDS for MySQL,您可以根据集群类型进行选择。
- 创建集群VPC和目标VPC的对等连接。
- 进入控制台,单击左上角的,在展开的列表中单击“网络 > 虚拟私有云”。
- 在左侧列表单击“对等连接”,在新页面右上角区域,单击“创建对等连接”。
- 根据界面提示设置对等连接参数,部分参数说明请参见表9。
图8 创建对等连接
表9 创建对等连接参数说明
参数 |
说明 |
示例 |
对等连接名称 |
必选参数。
此处填写对等连接的名称。
由中文字符、英文字母、数字、中划线和下划线等构成,一般不超过64个字符。 |
peering-b34b |
本端VPC |
必选参数。
此处为对等连接一端的VPC,可以在下拉框中选择已有VPC作为本端VPC。 |
vpc-373896-1 |
本端VPC网段 |
此处显示已选择的本端VPC的网段。 |
172.16.0.0/12 |
账户 |
必选参数。
- 当前账户:当对等连接中的对端VPC和本端VPC位于同一个账户下时,选择该项。
- 其他账户:当对等连接中的对端VPC和本端VPC位于不同账户下时,选择该项。
|
当前账户 |
对端项目 |
当账户选择“当前账户”时,系统默认填充对应的项目,无需您额外操作。
比如vpc-demo1和vpc-demo2均为账户A下的资源,并且位于区域A,那么此处系统默认显示账户A下,区域A对应的项目。 |
- |
对端VPC |
当账户选择“当前账户”时,该项为必选参数。
此处为对等连接另外一端的VPC,可以在下拉框中选择已有VPC作为对端VPC。 |
vpc-demo1 |
对端VPC网段 |
此处显示已选择的对端VPC的网段。
须知:
当您的本端VPC和对端VPC存在网段重叠的情况时,那么您的对等连接可能会不生效。
|
192.168.0.0/18,172.1.0.0/24 |
- 参数填写完成后,单击“立即创建”。
- 在弹出的路由添加提示对话框中,单击“立即添加”,添加节点子网和目标子网的路由。在“添加路由”界面中,根据界面提示配置相关参数,相关参数说明请参见表10。
图9 添加节点子网和目标子网路由
表10 节点子网和目标子网路由参数说明
参数 |
说明 |
示例 |
虚拟私有云 |
选择对等连接两端中的任意一个VPC。 |
vpc-373896-1 |
路由表 |
选择VPC的路由表,路由信息将会添加在该路由表中。
VPC创建完成后自带一个默认路由表,用来控制VPC内子网出方向的流量走向。除了默认路由表,您还可以创建自定义路由表,并关联至子网,则该子网的出方向流量由自定义路由表控制。
- 如果路由表的下拉列表中只有默认路由表,则选择默认路由表即可。
- 如果路由表的下拉列表中同时存在默认路由表和其他自定义路由表,则选择对等连接连通的子网所关联的路由表。
|
rtb-d43b(自定义路由表)
|
目的地址 |
对等连接另一端VPC内的地址,可以为VPC网段、子网网段和ECS IP地址等。 |
192.168.0.0/18 |
添加另一端VPC的路由 |
勾选该参数,可同时添加对等连接另一端VPC内的回程路由。
通常情况下,您需要在对等连接两端VPC的路由表中分别添加去程和回程路由,才可以实现通信。 |
勾选 |
虚拟私有云 |
系统默认填写对等连接两端的另一个VPC,您无需选择。 |
vpc-demo1 |
路由表 |
选择VPC的路由表,路由信息将会添加在该路由表中。
VPC创建完成后自带一个默认路由表,用来控制VPC内子网出方向的流量走向。除了默认路由表,您还可以创建自定义路由表,并关联至子网,则该子网的出方向流量由自定义路由表控制。
- 如果路由表的下拉列表中只有默认路由表,则选择默认路由表即可。
- 如果路由表的下拉列表中同时存在默认路由表和其他自定义路由表,则选择对等连接连通的子网所关联的路由表。
|
rtb-vpc-demo1(默认路由表)
|
目的地址 |
对等连接另一端VPC内的地址,可以为VPC网段、子网网段和ECS IP地址等。 |
172.16.0.0/12 |
- 登录Pod,具体请参见登录容器实例,在Pod的CloudShell界面再次输入以下代码,验证是否能从Pod访问RDS for MySQL。其中,172.16.0.167表示被访问RDS for MySQL的IP地址。
ping 172.16.0.167
如果访问不通,请检查RDS for MySQL安全组“入方向规则”中是否包含集群节点子网。若没有请添加相关规则,您需要添加相应的安全组规则,具体请参见添加安全组规则。
- Pod有ping命令,若回显内容如下,则说明在Pod中跨VPC访问成功。
PING 172.16.0.167 (172.16.0.167) 56(84) bytes of data.
64 bytes from 172.16.0.167: icmp_seq=1 ttl=63 time=0.516 ms
64 bytes from 172.16.0.167: icmp_seq=2 ttl=63 time=0.418 ms
64 bytes from 172.16.0.167: icmp_seq=3 ttl=63 time=0.376 ms
--- 172.16.0.167 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1001ms
- Pod没有ping命令,需要添加ping命令,回显内容如下。
ping: command not found
下面以容器Nginx:latest为例介绍如何添加ping命令,若已有ping命令可跳过。
- 确保从Pod能够访问公网,请参见从Pod访问公网。
- 更新本地的软件包索引,并安装iputils-ping软件包,该软件包提供了ping命令。
apt-get update
apt-get install iputils-ping
- 重新尝试访问RDS for MySQL。
ping 172.16.0.167
若回显内容如下,则说明ping命令添加成功,且在Pod中跨VPC访问成功。
PING 172.16.0.167 (172.16.0.167) 56(84) bytes of data.
64 bytes from 172.16.0.167: icmp_seq=1 ttl=63 time=0.516 ms
64 bytes from 172.16.0.167: icmp_seq=2 ttl=63 time=0.418 ms
64 bytes from 172.16.0.167: icmp_seq=3 ttl=63 time=0.376 ms
--- 172.16.0.167 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1001ms
- 创建集群VPC和目标VPC的对等连接。
- 进入控制台,单击左上角的,在展开的列表中单击“网络 > 虚拟私有云”。
- 在左侧列表单击“对等连接”,在新页面右上角区域,单击“创建对等连接”。
- 根据界面提示设置对等连接参数,部分参数说明请参见表11。
图10 创建对等连接
表11 创建对等连接参数说明
参数 |
说明 |
示例 |
对等连接名称 |
必选参数。
此处填写对等连接的名称。
由中文字符、英文字母、数字、中划线和下划线等构成,一般不超过64个字符。 |
peering-b34b |
本端VPC |
必选参数。
此处为对等连接一端的VPC,可以在下拉框中选择已有VPC作为本端VPC。 |
vpc-373896-1 |
本端VPC网段 |
此处显示已选择的本端VPC的网段。 |
172.16.0.0/12 |
账户 |
必选参数。
- 当前账户:当对等连接中的对端VPC和本端VPC位于同一个账户下时,选择该项。
- 其他账户:当对等连接中的对端VPC和本端VPC位于不同账户下时,选择该项。
|
当前账户 |
对端项目 |
当账户选择“当前账户”时,系统默认填充对应的项目,无需您额外操作。
比如vpc-demo1和vpc-demo2均为账户A下的资源,并且位于区域A,那么此处系统默认显示账户A下,区域A对应的项目。 |
- |
对端VPC |
当账户选择“当前账户”时,该项为必选参数。
此处为对等连接另外一端的VPC,可以在下拉框中选择已有VPC作为对端VPC。 |
vpc-demo1 |
对端VPC网段 |
此处显示已选择的对端VPC的网段。
须知:
当您的本端VPC和对端VPC存在网段重叠的情况时,那么您的对等连接可能会不生效。
|
192.168.0.0/18,172.1.0.0/24 |
- 参数填写完成后,单击“立即创建”。
- 在弹出的路由添加提示对话框中,单击“立即添加”,添加节点子网和目标子网的路由。在“添加路由”界面中,根据界面提示配置相关参数,相关参数说明请参见表12。
图11 添加节点子网和目标子网路由
表12 节点子网和目标子网路由参数说明
参数 |
说明 |
示例 |
虚拟私有云 |
选择对等连接两端中的任意一个VPC。 |
vpc-373896-1 |
路由表 |
选择VPC的路由表,路由信息将会添加在该路由表中。
VPC创建完成后自带一个默认路由表,用来控制VPC内子网出方向的流量走向。除了默认路由表,您还可以创建自定义路由表,并关联至子网,则该子网的出方向流量由自定义路由表控制。
- 如果路由表的下拉列表中只有默认路由表,则选择默认路由表即可。
- 如果路由表的下拉列表中同时存在默认路由表和其他自定义路由表,则选择对等连接连通的子网所关联的路由表。
|
rtb-d43b(自定义路由表)
|
目的地址 |
对等连接另一端VPC内的地址,可以为VPC网段、子网网段和ECS IP地址等。 |
192.168.0.0/18 |
添加另一端VPC的路由 |
勾选该参数,可同时添加对等连接另一端VPC内的回程路由。
通常情况下,您需要在对等连接两端VPC的路由表中分别添加去程和回程路由,才可以实现通信。 |
勾选 |
虚拟私有云 |
系统默认填写对等连接两端的另一个VPC,您无需选择。 |
vpc-demo1 |
路由表 |
选择VPC的路由表,路由信息将会添加在该路由表中。
VPC创建完成后自带一个默认路由表,用来控制VPC内子网出方向的流量走向。除了默认路由表,您还可以创建自定义路由表,并关联至子网,则该子网的出方向流量由自定义路由表控制。
- 如果路由表的下拉列表中只有默认路由表,则选择默认路由表即可。
- 如果路由表的下拉列表中同时存在默认路由表和其他自定义路由表,则选择对等连接连通的子网所关联的路由表。
|
rtb-vpc-demo1(默认路由表)
|
目的地址 |
对等连接另一端VPC内的地址,可以为VPC网段、子网网段和ECS IP地址等。 |
172.16.0.0/12 |
- 当前页面单击“添加路由”,“虚拟私有云”填入vpc-373896-1,“目的地址”填入集群容器网段172.1.1.0/24,添加目标VPC与集群容器网段的路由,具体请参见图12。
图12 添加容器网段路由
- 登录Pod,具体请参见登录容器实例,在Pod的CloudShell界面再次输入以下代码,验证是否能从Pod访问RDS for MySQL。其中,172.16.0.167表示被访问RDS for MySQL实例的IP地址。
ping 172.16.0.167
如果访问不通,请检查RDS for MySQL实例安全组“入方向规则”中是否包含集群节点子网和容器网段。若没有请添加相关规则,您需要添加相应的安全组规则,具体请参见添加安全组规则。
- Pod有ping命令,若回显内容如下,则说明在Pod中跨VPC访问成功。
PING 172.16.0.167 (172.16.0.167) 56(84) bytes of data.
64 bytes from 172.16.0.167: icmp_seq=1 ttl=63 time=0.516 ms
64 bytes from 172.16.0.167: icmp_seq=2 ttl=63 time=0.418 ms
64 bytes from 172.16.0.167: icmp_seq=3 ttl=63 time=0.376 ms
--- 172.16.0.167 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1001ms
- Pod没有ping命令,需要添加ping命令,回显内容如下。
ping: command not found
下面以容器Nginx:latest为例介绍如何添加ping命令,若已有ping命令可跳过。
- 确保从Pod能够访问公网,请参见从Pod访问公网。
- 更新本地的软件包索引,并安装iputils-ping软件包,该软件包提供了ping命令。
apt-get update
apt-get install iputils-ping
- 重新尝试访问RDS for MySQL。
ping 172.16.0.167
若回显内容如下,则说明ping命令添加成功,且在Pod中跨VPC访问成功。
PING 172.16.0.167 (172.16.0.167) 56(84) bytes of data.
64 bytes from 172.16.0.167: icmp_seq=1 ttl=63 time=0.516 ms
64 bytes from 172.16.0.167: icmp_seq=2 ttl=63 time=0.418 ms
64 bytes from 172.16.0.167: icmp_seq=3 ttl=63 time=0.376 ms
--- 172.16.0.167 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1001ms
- 创建集群VPC和目标VPC的对等连接。
- 进入控制台,单击左上角的,在展开的列表中单击“网络 > 虚拟私有云”。
- 在左侧列表单击“对等连接”,在新页面右上角区域,单击“创建对等连接”。
- 根据界面提示设置对等连接参数,部分参数说明请参见表13。
图13 创建对等连接
表13 创建对等连接参数说明
参数 |
说明 |
示例 |
对等连接名称 |
必选参数。
此处填写对等连接的名称。
由中文字符、英文字母、数字、中划线和下划线等构成,一般不超过64个字符。 |
peering-b34b |
本端VPC |
必选参数。
此处为对等连接一端的VPC,可以在下拉框中选择已有VPC作为本端VPC。 |
vpc-373896-1 |
本端VPC网段 |
此处显示已选择的本端VPC的网段。 |
172.16.0.0/12 |
账户 |
必选参数。
- 当前账户:当对等连接中的对端VPC和本端VPC位于同一个账户下时,选择该项。
- 其他账户:当对等连接中的对端VPC和本端VPC位于不同账户下时,选择该项。
|
当前账户 |
对端项目 |
当账户选择“当前账户”时,系统默认填充对应的项目,无需您额外操作。
比如vpc-demo1和vpc-demo2均为账户A下的资源,并且位于区域A,那么此处系统默认显示账户A下,区域A对应的项目。 |
- |
对端VPC |
当账户选择“当前账户”时,该项为必选参数。
此处为对等连接另外一端的VPC,可以在下拉框中选择已有VPC作为对端VPC。 |
vpc-demo1 |
对端VPC网段 |
此处显示已选择的对端VPC的网段。
须知:
当您的本端VPC和对端VPC存在网段重叠的情况时,那么您的对等连接可能会不生效。
|
192.168.0.0/18,172.1.0.0/24 |
- 参数填写完成后,单击“立即创建”。
- 在弹出的路由添加提示对话框中,单击“立即添加”,添加集群容器子网和目标子网的路由。在“添加路由”界面中,根据界面提示配置相关参数,相关参数说明请参见表14。
图14 添加容器网段路由
表14 容器子网和目标子网路由参数说明
参数 |
说明 |
示例 |
虚拟私有云 |
选择对等连接两端中的任意一个VPC。 |
vpc-373896-1 |
路由表 |
选择VPC的路由表,路由信息将会添加在该路由表中。
VPC创建完成后自带一个默认路由表,用来控制VPC内子网出方向的流量走向。除了默认路由表,您还可以创建自定义路由表,并关联至子网,则该子网的出方向流量由自定义路由表控制。
- 如果路由表的下拉列表中只有默认路由表,则选择默认路由表即可。
- 如果路由表的下拉列表中同时存在默认路由表和其他自定义路由表,则选择对等连接连通的子网所关联的路由表。
|
rtb-d43b(自定义路由表)
|
目的地址 |
对等连接另一端VPC内的地址,可以为VPC网段、子网网段和ECS IP地址等。 |
172.1.1.0/24 |
添加另一端VPC的路由 |
勾选该参数,可同时添加对等连接另一端VPC内的回程路由。
通常情况下,您需要在对等连接两端VPC的路由表中分别添加去程和回程路由,才可以实现通信。 |
勾选 |
虚拟私有云 |
系统默认填写对等连接两端的另一个VPC,您无需选择。 |
vpc-demo1 |
路由表 |
选择VPC的路由表,路由信息将会添加在该路由表中。
VPC创建完成后自带一个默认路由表,用来控制VPC内子网出方向的流量走向。除了默认路由表,您还可以创建自定义路由表,并关联至子网,则该子网的出方向流量由自定义路由表控制。
- 如果路由表的下拉列表中只有默认路由表,则选择默认路由表即可。
- 如果路由表的下拉列表中同时存在默认路由表和其他自定义路由表,则选择对等连接连通的子网所关联的路由表。
|
rtb-vpc-demo1(默认路由表)
|
目的地址 |
对等连接另一端VPC内的地址,可以为VPC网段、子网网段和ECS IP地址等。 |
172.16.0.0/12 |
- 登录Pod,具体请参见登录容器实例,在Pod的CloudShell界面再次输入以下代码,验证是否能从Pod访问RDS for MySQL。其中,172.16.0.167表示被访问RDS for MySQL实例的IP地址。
ping 172.16.0.167
如果访问不通,请检查RDS for MySQL实例安全组“入方向规则”中是否包含集群容器子网。若没有请添加相关规则,您需要添加相应的安全组规则,具体请参见添加安全组规则。
- Pod有ping命令,若回显内容如下,则说明在Pod中跨VPC访问成功。
PING 172.16.0.167 (172.16.0.167) 56(84) bytes of data.
64 bytes from 172.16.0.167: icmp_seq=1 ttl=63 time=0.516 ms
64 bytes from 172.16.0.167: icmp_seq=2 ttl=63 time=0.418 ms
64 bytes from 172.16.0.167: icmp_seq=3 ttl=63 time=0.376 ms
--- 172.16.0.167 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1001ms
- Pod没有ping命令,需要添加ping命令,回显内容如下。
ping: command not found
下面以容器Nginx:latest为例介绍如何添加ping命令,若已有ping命令可跳过。
- 确保从Pod能够访问公网,请参见从Pod访问公网。
- 更新本地的软件包索引,并安装iputils-ping软件包,该软件包提供了ping命令。
apt-get update
apt-get install iputils-ping
- 重新尝试访问RDS for MySQL。
ping 172.16.0.167
若回显内容如下,则说明ping命令添加成功,且在Pod中跨VPC访问成功。
PING 172.16.0.167 (172.16.0.167) 56(84) bytes of data.
64 bytes from 172.16.0.167: icmp_seq=1 ttl=63 time=0.516 ms
64 bytes from 172.16.0.167: icmp_seq=2 ttl=63 time=0.418 ms
64 bytes from 172.16.0.167: icmp_seq=3 ttl=63 time=0.376 ms
--- 172.16.0.167 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1001ms
在Pod中访问不通的排查思路
若Pod出现访问网络不通的情况,可以参考表15进行排查。如果以下思路均不能解决您的问题,请提交工单联系华为云客服为您解答。
集群的容器网络模型不同,在Pod的访问过程中所涉及网段也不同,具体区别请参见表1。在以下内容中,容器网段特指集群容器网络模型为VPC网络,之后不再单独说明。
表15 在Pod中访问不通具体排查思路
排查路径 |
问题 |
解决方案 |
被访问的服务安全组规则 |
在该部分可能存在以下问题:
- 安全组规则的入方向规则未允许节点网段或容器网段访问。
- 入方向规则允许节点网段和容器网段访问,协议未配置正确。
须知:
ping命令使用ICMP协议进行网络连通性测试。换言之,安全组规则至少需要开通相应的ICMP协议端口,ping命令才能访问成功。
|
|
对等连接 |
两端VPC网段重叠。 |
该问题可以分为两种情况,具体请参见对等连接中本端VPC和对端VPC网段重叠。
- 如果集群节点网段所在子网与被访问服务所在子网不重叠,您可以创建指向子网的对等连接。
- 如果集群节点网段所在子网与被访问服务所在子网重叠,您需要重新规划网络。
|
路由 |
在该部分可能存在以下问题:
- 如果添加两端VPC路由时,使用的是自定义路由表,则需要注意自定义路由表是否关联相应子网(集群VPC路由表应关联节点子网,被访问服务路由表关联被访问服务所在子网)。
- 未建立被访问服务子网与容器网段的路由。
|
|
白名单 |
如果被访问服务设置白名单,白名单未添加节点网段或容器网段。 |
对于此类问题,您需要添加容器和节点网段到白名单。具体白名单的设置步骤,请在对应服务的帮助文档中查找。 |
域名解析 |
当访问外部域名时,Pod先使用集群的域名解析功能解析被访问目标的地址,后经过Pod侧的网络策略再进行访问,此时可能出现域名无法解析的情况,常见的报错有:
- Name or service not known。
- Temporary failure in name resolution。
- Unable to resolve hostname。
- DNS resolution failed。
- Could not resolve MYHOST (nodename nor servname known),这里的MYHOST是无法解析的域名。
|
您需要排查DNS异常原因,可参考CCE提供的DNS概述文档进行排查。 |
网络策略(仅适用于容器隧道网络) |
如果您在容器隧道网络类型的集群中配置了网络策略,并且Pod所在的命名空间也设置了网络策略,则该网络策略可能会限制Pod中访问的目标地址。 |
如果该网络策略限制Pod中的访问,则需要修改网络策略,具体可参考配置网络策略限制Pod访问的对象。 |