在使用容器服务的过程中。出于业务的需要,用户需要创建VPC集群,但是又不希望每台ECS都绑定公网EIP,一方面是出于业务私密性的保护,另外一方面是出于节约成本的考虑。
基于以上场景,我们可以让集群内的机器,通过一台有EIP的机器来上网。在这个过程中主要使用到了SNAT相关的知识。
- 先找一台同Region内的VPC机器,为该机器配置EIP
- 登陆到配置了EIP的ECS,为机器开启IP转发功能,找到#net.ipv4.ip_forward=1行,去掉注释即可
执行以下命令,让IP转发生效
-
iptables添加SNAT转换 其中192.168.1.0 是内网网段, 192.168.1.95是绑定了EIP的这台机器的内网IP
iptables -t nat -I POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 192.168.1.95
- 去VPC控制台,添加VPC路由器,其中的下一跳ECS是绑定了公网EIP的那台ECS
- 通过以上步骤,我们就完成了集群创建过程中SNAT转发的配置工作。为了验证SNAT是否生效,我们可以去容器服务控制台创建一台摘掉公网EIP的集群。
- 当集群创建成功以后,我们查看集群的主机列表,看到主机的IP是192.168.1.96
- 接下来通过之前配置SNAT的EIP,登录到192.168.1.1进行简单ping测试,如果可以正常访问公网,则说明配置生效
- 通过以上的操作步骤以后,对于没有EIP的容器服务集群,从公网拉取镜像部署应用都没有问题。