跳转至

跨网络区域 IP 分配

本页介绍在多可用区/多子网场景下,如何使用 Spiderpool 实现跨网络区域的 IP 分配。

适用场景

  • 集群节点位于不同机房或可用区
  • 各区域只能使用特定子网
  • 需要同一应用在不同节点分配到对应子网的 IP

原理说明

SpiderIPPool 支持 nodeNamenodeAffinity,用于限定 IPPool 的可用节点范围。Pod 调度到某个节点时,将从该节点匹配的 IPPool 中分配 IP。

前提条件

配置步骤

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 是否落在对应子网内:

kubectl get pod -o wide

注意事项

  • nodeName 适合小规模集群,nodeAffinity 更适合大规模或按标签管理的场景
  • IPPool 子网与网关需与节点所在网络一致

评论