本文分享自华为云社区《【理解云容器网络】5-CCE集群VPC模型容器网络走线介绍》,作者:可以交个朋友。
简介
鉴于在CCE集群使用VPC网络模型,处理遇到的一些网络问题时,需要熟悉不同场景下数据包的流转过程,才能快速的解决问题。本文主要介绍CCE集群VPC网络模式下各种访问场景介绍。
VPC网络模型不同访问场景走线
VPC网络模型下,容器子网不属于VPC网段,跨节点容器互访除了隧道封装还可以通过路由实现,需要为每个节点划分固定的容器子网,比如节点Node1上所有容器ip都在子网172.16.0.0/25内,VPC路由表将目的ip属于172.16.0.0/25子网的数据包全部转给节点Node1处理,Node1收到数据包再根据系统路由表转给具体的容器。同时为了使容器能访问VPC以外的ip地址,在CCE集群内做了Yangtse白名单处理,如果容器访问目的ip在白名单内,容器请求数据包出节点前不会做SNAT;反之会将数据包的源ip转换成节点ip,Yangtse白名单默认有三个网段(10.0.0.0/8,172.16.0.0/12,192.168.0.0/16)。
同节点容器互访
访问说明:
容器的eth0网口是节点eth0的子接口,内部互通是子接口之间的报文转发,这个转发就是内核的虚拟网络的收发处理函数和缓冲队列处理,实际上不经过节点网卡的收发队列和网络命名空间。同节点容器访问容器不涉及SNAT和DNAT
跨节点容器访问容器
访问说明:
发起请求时,源ip为10.0.0.133,目的ip为10.0.0.7。服务端容器接收的数据包,其源地址是10.0.0.133 ,目的地址为10.0.0.7。跨节点容器访问容器不涉及SNAT 和 DNAT
容器访问ClusterIP
访问说明:
发起请求时,源ip为10.0.0.133,目的ip为10.247.4.15。服务端容器接收的数据包,其源地址是192.168.0.74,目的地址为10.0.0.2。容器访问ClusterIP涉及DNAT 和 SNAT。
容器访问外部EIP
访问说明:
发起请求时,源ip为10.0.0.33,目的ip为100.85.116.151,服务端主机接收的数据包源IP为192.168.0.157,目的ip为100.85.116.151。容器访问EIP涉及SNAT转换,不涉及DNAT
节点访问容器
访问说明:
发起请求时,源ip为192.168.0.74,目的ip为10.0.0.2,服务端容器接收的数据包源IP为192.168.0.174,目的ip为10.0.0.2。节点访问容器不涉及SNAT和DNAT转换。
与线下IDC网络打通
访问说明:
VPC网络模型,容器访问VPC外的ip若不在Yangtse白名单(10.0.0.0/8,172.16.0.0/12,192.168.0.0/16)内,请求数据包出节点前会做SNAT,将数据包的源ip转换成节点ip,响应包进入节点后经过conntrack还原,将数据包的目的ip转换成容器ip。如果线下机房想获取云上容器的ip,需要给SRE提单将线下IDC的目标网段加入到Yangtse白名单中。