云上IP地址规划:CIDR怎么选?怎么避免冲突?

去年一个客户,VPC建完后跑了两年,业务发展很快。突然有一天,新服务部署不上去了,报错“IP地址不足”。查了一下,他们当年选了/24网段,一共256个IP。去掉每个子网保留的5个,只剩251个。VPC里有ECS、RDS、Redis、NAT网关、负载均衡,还有K8s节点。K8s一个节点就消耗一个IP,节点多了就爆了。
更麻烦的是,VPC建完CIDR不能改。要扩大IP池,只能重建VPC,把几十个服务全迁过去。折腾了一周。
这是云上IP规划最常见的悲剧:一开始随手填,后面哭着改。
今天聊聊云上IP地址规划。不是那种“CIDR是什么”的入门课,而是帮你理清楚:CIDR怎么选才够用?怎么避免和本地IDC冲突?哪些服务会消耗IP?
01 CIDR选多大?
很多人在云上建VPC,随手选一个/24(256个IP),觉得“肯定够”。这是第一个坑。
VPC内IP消耗比你想象的多:
每台ECS/EC2:至少1个主IP
每个负载均衡:至少1个IP
每个NAT网关:至少1个IP
每个RDS实例:至少1个IP
每个Redis实例:至少1个IP
K8s节点:每个节点1个IP
VPN/专线网关:占用IP
一个中等规模的业务,几十个K8s节点,加上数据库、缓存、负载均衡,IP很容易用完。
CIDR选型建议:
| 业务规模 | 推荐CIDR | 可用IP数 | 说明 |
|---|---|---|---|
| 个人/小型测试 | /24 | 251 | 适合非生产、短期项目 |
| 中小型企业 | /20 | 4091 | 推荐,预留扩展空间 |
| 大型企业/多环境 | /16 | 65531 | 适合多VPC、大规模部署 |
| 超大规模 | /8(不推荐) | 1677万 | 太大,路由表效率低 |
那家客户后来重建VPC时选了/16(10.0.0.0/16),再也不担心IP不够了。
02 避开冲突:云上IP和本地IP不能重叠
混合云场景下,VPC要和本地数据中心通过VPN或专线连通。如果两边的IP段重叠,路由没法配。
冲突典型场景:
本地IDC用了10.0.0.0/8
云上VPC也选了10.0.0.0/8
VPN/专线建立后,到10.0.0.0/8的流量不知道该走云内还是去本地
怎么避免:
规划前,先问网络团队:“本地用了哪些IP段?”
避开本地段,选不重叠的CIDR,如172.16.0.0/12或192.168.0.0/16
多个VPC之间也不能重叠,否则VPC对等连接配不了
那家客户本地IDC用了10.0.0.0/8,云上VPC选了172.16.0.0/12,没有冲突。
03 按环境划分:不要把所有鸡蛋放一个篮子
不要把生产、测试、开发环境塞进同一个VPC。不隔离,安全风险大,变更影响面广。
推荐多VPC结构:
生产VPC:/16(如10.0.0.0/16)
预发/测试VPC:/16(如10.1.0.0/16)
开发VPC:/16(如10.2.0.0/16)
每个环境独立,互不影响。也方便按环境做独立的安全策略。
如果VPC数量有限制,可在同一VPC内用不同CIDR段隔离。但网络策略控制更复杂。
04 子网划分:按可用区和用途拆分
一个VPC内要划分多个子网。
按可用区:每个可用区一套子网,实现高可用。
按用途:
公网子网(public):负载均衡、NAT网关、堡垒机
应用子网(private):ECS/EC2
数据子网(data):RDS、Redis
预留IP数:每个子网固定消耗5个IP(AWS等云厂商)。子网不是越多越好,太多会浪费IP。1个VPC建议不超过20-30个子网。
那家客户按环境分VPC,按可用区和用途分子网,结构清晰,后续运维也方便。
05 特殊IP消耗:K8s是个吞IP大户
K8s集群对IP的消耗经常被低估。
节点IP:每个Worker节点1个VPC IP
Pod IP:默认从VPC CIDR分配,每个Pod占1个IP。200个Pod就是200个IP
Service IP:从VPC CIDR分配,每个Service占1个IP
如果VPC CIDR规划小了,K8s跑起来很快就把IP吃光。
解法:
Pod IP用独立的Pod CIDR(AWS EKS支持),不占用VPC主CIDR
节点选择较大的实例规格,减少节点数
预留充足IP空间
06 一个真实案例:从/24重建到/16
一个客户,初创时选了/24(10.0.1.0/24)。两年后,K8s集群从5个节点扩到50个节点,加上RDS、Redis、ELB,IP不够用了。
改造方案:
新建VPC:CIDR选10.0.0.0/16
按环境分VPC:生产、测试分开
按可用区分子网:每个可用区一套
应用分批迁移,域名切流
耗时一周,迁移完成。运维负责人说:“当初随手选的/24,后来用一周来还债。早知道选大一点。”
写在最后
IP地址规划,看起来是“创建时填个数”的小事。但一旦建好,想改代价极大。
那家客户的运维负责人后来总结:“CIDR选大不选小,/16打底;避开本地段,不冲突;按环境分VPC,按用途分子网;K8s是大户,IP预留要算好。”
你的VPC,IP还够用吗?今天就去看看。