您可以使用 ncp/ip_range 注释为 StatefulSet 指定 IP 地址范围。NCP 将根据命名空间的子网将该范围中的持久性 IP 地址分配给 StatefulSet 中的 Pod。
仅在策略模式下支持此功能。要启用此功能,请在 ncp.ini 的 [K8s] 部分中将 statefulset_ip_range 设置为 True。默认值为 False。设置为 True 后,不得将其重新设置为 False。
指定
ncp/ip_range 注释的示例:
apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: selector: matchLabels: app: nginx # has to match .spec.template.metadata.labels serviceName: "nginx" replicas: 3 # by default is 1 template: metadata: labels: app: nginx # has to match .spec.selector.matchLabels annotations: ncp/ip_range: 192.168.0.10-192.168.0.50 spec: ...
如果在 NCP 检查 IP 范围或从该范围中分配地址时出现错误,将使用
ncp/error.ip_range:<error> 注释 StatefulSet。可能的错误包括:
- INVALID_IP_RANGE - IP 范围没有位于命名空间的任何子网中,IP 范围位于多个子网中,或者现有 Pod 已使用该范围中的 IP 地址。
- IP_RANGE_EXHAUSTED - NCP 无法从该范围中分配 IP 地址,因为已分配了所有地址。