本文分享自华为云社区《CCE集群中容器出网总结》,作者:可以交个朋友。
一 背景
针对CCE集群和CCE turbo集群中的容器访问外部网络进行总结
二 容器出网简介
使用EIP服务绑定特定节点、容器IP地址 或者使用SNAT网关对特定子网进行NAT源地址进行转换从而实现容器出网。
2.1 CCE 标准集群
集群工作节点绑定EIP,位于节点上的POD就可以通过宿主机的网卡进行出网。
集群工作节点对应的Subnet关联SNAT网关,节点通过SNAT网关出网。(建议选择此种方式)
2.2 CCE turbo 集群
POD绑定EIP(节点绑没有用),容器直接出网
POD对应的Subnet关联SNAT网关,pod通过SNAT网关出网。(建议选择此种方式)
三 实践
以CCE turbo集群为例,如果集群中POD需要访问公网,则需要绑定EIP或者配置SNAT。大规模场景下,每个POD配置EIP,会造成资源的大量浪费,已经管理成本的上升。所以大部分情况下都是配置SNAT规则进行容器的出网。
确认POD网段

如下图所示,正在运行的pod使用的是subnet-container01
这个子网

未添加SNAT时访问公网
登录容器,执行命令curl -I -m 10 www.baidu.com

可以发现此时POD没有出网能力,访问公网失败。
给对应容器子网添加SNAT出网规则

容器访问公网
登录容器,执行命令curl -I -m 10 www.baidu.com

访问成功。