CCE客户场景之网络配置 - 集群外同VPC下节点访问容器
背景
CCE内部通过kubernetes的网络直接访问各个容器的PodIP是很方便的,但是如果涉及到了同VPC下一些集群外虚机VM去访问PodIP就显得十分不自然。
或许有人会说,一般PodIP只是集群内部的概念,涉及到了集群外部的话应该使用对外的Service,这种说法应该是比较正确的用法。
但是涉及到客户场景时,例如常用的服务注册consul,客户的Pod启动时会将自身的ip注册到consul,这样就会造成整个架构内部使用的均为PodIP,因此讨论该场景还是有必要的。
前提条件
以下讨论场景均为CCE的容器隧道网络集群,VPC-Router集群有天然的路由表规则优势,无需配置即支持该场景
操作步骤
一般而言,同VPC下到虚机VM的网络是打通的,因此自然的想法就是添加路由。即在需要访问PodIP的机器上配置目的地址为容器网段的路由信息,将该报文直接发送到指定节点上。
路由添加
路由添加有两种方式,一种是在linux虚拟机上使用原生的route命令,另一种则是华为云支持的VPC路由表规则添加
route add -net 172.18.0.0/16 gw 192.168.0.74
即让目的IP为172.18.0.0/16网段的报文发送到网关192.168.0.74上去。该方式可以针对特定节点自定义操作,但是在添加同VPC不同子网时,会报如下错误,即不适用于同VPC不同子网下的机器
华为云VPC路由表规则添加
如图所示,该规则适用范围为VPC下所有节点,相比而言没有route add命令那么细颗粒度
防火墙规则
添加完路由后,华为云的机器还有自带的防火墙-安全组规则。因此需要放通相应的安全组规则。
具体需要放通的安全组规则要视情况而定,这里我们需要的是http的80端口,因此在CCE节点的入规则列表将80端口放通即可。
为了安全起见,远端的范围可以缩小到VPC网段
ECS网卡关闭源地址校验
这一步也是最容易被忽视的,ECS的网卡本身对源地址会有一个校验,CCE的节点回的报文源地址为PodIP,因此会被拦截,需要在CCE的节点上关闭该功能
验证测试
对于在节点192.168.0.74上的nginx容器,在设置了上述步骤的情况下,可以从集群外的VM上直接访问到PodIP
一些思考
规划好内部的网段,使用该方式需要注意内部没有虚拟网段冲突
总的来说,该场景下还是应用VPC-Router网络模式的集群更好一些,使用容器隧道网络并如上设置还是太定制化了
- 点赞
- 收藏
- 关注作者
评论(0)