CCE客户场景之网络配置 - 集群外同VPC下节点访问容器

举报
Norvel 发表于 2019/05/13 19:48:43 2019/05/13
【摘要】 背景CCE内部通过kubernetes的网络直接访问各个容器的PodIP是很方便的,但是如果涉及到了同VPC下一些集群外虚机VM去访问PodIP就显得十分不自然。或许有人会说,一般PodIP只是集群内部的概念,涉及到了集群外部的话应该使用对外的Service,这种说法应该是比较正确的用法。但是涉及到客户场景时,例如常用的服务注册consul,客户的Pod启动时会将自身的ip注册到consul...

背景

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不同子网下的机器image.png

  • 华为云VPC路由表规则添加

    image.png

    如图所示,该规则适用范围为VPC下所有节点,相比而言没有route add命令那么细颗粒度


防火墙规则

添加完路由后,华为云的机器还有自带的防火墙-安全组规则。因此需要放通相应的安全组规则。

具体需要放通的安全组规则要视情况而定,这里我们需要的是http的80端口,因此在CCE节点的入规则列表将80端口放通即可。

image.png

为了安全起见,远端的范围可以缩小到VPC网段

ECS网卡关闭源地址校验

这一步也是最容易被忽视的,ECS的网卡本身对源地址会有一个校验,CCE的节点回的报文源地址为PodIP,因此会被拦截,需要在CCE的节点上关闭该功能

image.png

验证测试

对于在节点192.168.0.74上的nginx容器,在设置了上述步骤的情况下,可以从集群外的VM上直接访问到PodIP

image.png

image.png

一些思考

  • 规划好内部的网段,使用该方式需要注意内部没有虚拟网段冲突

  • 总的来说,该场景下还是应用VPC-Router网络模式的集群更好一些,使用容器隧道网络并如上设置还是太定制化了

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。