Kube-OVN 支持通过 annotation ovn.kubernetes.io/ip_pool 给 Workload(Deployment/StatefulSet/DaemonSet/Job/CronJob)设置固定 IP。Workload 下的 Pod 会自动选择 ovn.kubernetes.io/ip_pool 中指定的 IP 并保证不会冲突。

Deployment 固定 IP 示例

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. namespace: ls1
  5. name: starter-backend
  6. labels:
  7. app: starter-backend
  8. spec:
  9. replicas: 2
  10. selector:
  11. matchLabels:
  12. app: starter-backend
  13. template:
  14. metadata:
  15. labels:
  16. app: starter-backend
  17. annotations:
  18. ovn.kubernetes.io/ip_pool: 10.16.0.15,10.16.0.16,10.16.0.17
  19. spec:
  20. containers:
  21. - name: backend
  22. image: nginx:alpine

对 Workload 使用固定 IP 需要注意一下几点:

  1. ovn.kubernetes.io/ip_pool 中的 IP 应该属于所在子网的 CIDR 内
  2. ovn.kubernetes.io/ip_pool 中的 IP 不能和已使用的 IP 冲突
  3. ovn.kubernetes.io/ip_pool 中的 IP 数量小于 replicas 数量时,多出的 Pod 将无法创建。你需要根据 Workload 的更新策略以及扩容规划调整 ovn.kubernetes.io/ip_pool 中 IP 的数量