跨网络区域 IP 分配¶
本页介绍在多可用区/多子网场景下,如何使用 Spiderpool 实现跨网络区域的 IP 分配。
适用场景¶
- 集群节点位于不同机房或可用区
- 各区域只能使用特定子网
- 需要同一应用在不同节点分配到对应子网的 IP
原理说明¶
SpiderIPPool 支持 nodeName 与 nodeAffinity,用于限定 IPPool 的可用节点范围。Pod 调度到某个节点时,将从该节点匹配的 IPPool 中分配 IP。
前提条件¶
- 已安装 Spiderpool(参考 安装 Spiderpool)
- 已准备好 Multus 配置(参考 Multus CR 管理)
配置步骤¶
1. 创建跨区域 IPPool¶
为不同节点或区域创建不同的 IPPool:
apiVersion: spiderpool.spidernet.io/v2beta1
kind: SpiderIPPool
metadata:
name: ippool-zone-a
spec:
subnet: 10.6.0.0/16
ips:
- 10.6.168.60-10.6.168.69
gateway: 10.6.0.1
nodeName:
- node-a
---
apiVersion: spiderpool.spidernet.io/v2beta1
kind: SpiderIPPool
metadata:
name: ippool-zone-b
spec:
subnet: 10.7.0.0/16
ips:
- 10.7.168.60-10.7.168.69
gateway: 10.7.0.1
nodeName:
- node-b
2. 为工作负载指定 IPPool¶
通过注解指定多个 IPPool,Spiderpool 会按顺序尝试分配:
metadata:
annotations:
ipam.spidernet.io/ippool: |-
{
"ipv4": ["ippool-zone-a", "ippool-zone-b"]
}
v1.multus-cni.io/default-network: kube-system/macvlan-conf
验证¶
查看 Pod IP 是否落在对应子网内:
注意事项¶
nodeName适合小规模集群,nodeAffinity更适合大规模或按标签管理的场景- IPPool 子网与网关需与节点所在网络一致