16.2 安全组与集群网络

上一节总结了两种形态ACK集群的组成原理,以及安全组在集群中所处的位置。简单来说,安全组就是管理网络出入流量的防火墙。

安全组规则对出方向的数据包基于目的地址来做限制,而对入方向的数据包则基于源地址来做限制。ACK集群内部的通信对象包括集群节点和部署在集群上的容器组,而外部通信对象可以是任意外网地址。

云服务器没有太多特殊的地方,只是简单地连接在VPC局域网内的ECS上,而容器组Pod连接在基于Veth网口对、虚拟网桥、VPC路由表所搭建的和VPC相互独立的虚拟三层网络上。

总结一下,有两种通信实体和三种通信方式,共六种通信场景,如表16-1所示。

表16-1

前三种场景如图16-1所示,以节点为通信实体之一。第一种场景是节点与其上的Pod通信,这种场景和安全组无关;第二种场景是节点与其他节点或Pod通信,在这种场景下,因为节点在相同VPC下,且Pod访问Pod网段以外的地址都会经过SNAT,所以这种场景和安全组无关;第三种场景是节点与VPC之外的实体通信,这种情况下出入方向通信都与安全组有关。

图16-1 节点的通信

后三种场景如图16-2所示,以容器组Pod为通信实体之一。第四种场景是Pod在节点内部与Pod和ECS通信,这种场景和安全组无关;第五种场景是Pod跨节点与其他节点或Pod通信,这种场景下,如果源地址和目的地址都是Pod,则需要安全组入规则放行,其他情况与场景二类似;第六种场景是Pod与VPC之外的实体通信,这与场景三类似。

图16-2 容器组的通信

虽然以上场景有些复杂,但是经过总结后发现,与安全组有关的通信,从根本上说只有两种情况:一种是Pod之间跨节点通信,另一种是节点或Pod与外网互访。这里的外网可以是公网,也可以是与集群互联互通的IDC或者其他VPC。