配置 IPPool

IPPool 是比 Subnet 更细粒度的 IPAM 管理单元。 您可以通过 IPPool 将子网段细分为多个单元,并将每个单元绑定到一个或多个命名空间。

说明

创建 IPPool

以下是一个示例:

apiVersion: kubeovn.io/v1
kind: IPPool
metadata:
  name: pool-1
spec:
  subnet: ovn-default
  ips:
  - "10.16.0.201"
  - "10.16.0.210/30"
  - "10.16.0.220..10.16.0.230"
  namespaces:
  - ns-1
  1. IPPool 所属的子网。
  2. IP 范围。支持的格式:<IP>、<CIDR> 和 <IP1>..<IP2>。同时支持 IPv4 和 IPv6。
  3. IPPool 绑定的可选命名空间。绑定命名空间中的 Pod 只会从绑定的 IPPool 中获取 IP,而不会从子网中的其他范围获取 IP。

使用 IPPool

要从 IPPool 中随机分配 IP,只需将 IPPool 绑定到所需的命名空间。 创建绑定命名空间中的 Pod 时,其 IP 将从相应的 IPPool 中分配。

NOTE

将 IPPool 绑定到命名空间之前,请确保只有 IPPool 所属的子网绑定到了该命名空间。

您还可以通过 annotation 将 IPPool 分配给 Pod:

apiVersion: v1
kind: Pod
metadata:
  name: pod-1
  annotations:
    ovn.kubernetes.io/ip_pool: pool-1
spec:
  containers:
  - name: web
    image: nginx:latest

对于工作负载,请在 Deployment、StatefulSet 等资源的 Pod 模板中使用 annotation:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
      annotations:
        ovn.kubernetes.io/ip_pool: pool-1
    spec:
      containers:
      - name: web 
        image: nginx:latest

注意事项

  1. 为确保与 Fixed Addresses 功能兼容,IPPool 的名称不能是 IP 地址。
  2. 允许使用超出子网范围的 IP 地址,但这些 IP 不会生效。
  3. 属于同一子网的不同 IPPool 不能具有重叠的 IP 范围。
  4. .spec.ips 字段可根据需要随时更新。任何更改都会立即生效。
  5. IPPool 会继承子网的预留 IP。从 IPPool 中随机分配 IP 地址时,将跳过 IPPool 范围内的预留 IP。
  6. 从子网中随机分配 IP 地址时,将排除该子网中所有 IPPool 的 IP 范围。
  7. 同一命名空间可以绑定多个 IPPool。

商标声明

NGINX® 是 F5, Inc. 在美国及其他国家/地区的注册商标。

Alauda 是独立供应商。本产品与 F5, Inc. 没有任何关联,也未获得其认可或赞助。所有商标均归其各自所有者所有,此处使用这些商标仅用于识别目的。