Kube-OVN 中以子网来组织 IP,每个 Namespace 可以归属于不同的子网,Namespace 下的 Pod 会自动从所属的子网中获取 IP 并共享子网的网络配置(CIDR,网关类型,访问控制,NAT控制等)。

为了方便用户的快速上手使用,Kube-OVN 内置了一个默认子网,所有未显式声明子网归属的 Namespace 会自动从默认子网中分配 IP,并使用默认子网的网络信息。其中默认子网使用了分布式网关并对出网流量就行 NAT 转换,其行为和 flannel 的默认行为一致,用户无需额外的配置即可使用到大部分的网络功能。

默认子网查看

默认子网 spec 中的 default 字段为 true,一个集群下只有一个默认子网,且创建后无法更改。

查看默认子网:

  1. [root@node2 ~]# kubectl get subnet ovn-default -o yaml
  2. apiVersion: kubeovn.io/v1
  3. kind: Subnet
  4. metadata:
  5. creationTimestamp: "2019-08-06T09:33:43Z"
  6. generation: 1
  7. name: ovn-default
  8. resourceVersion: "1571334"
  9. selfLink: /apis/kubeovn.io/v1/subnets/ovn-default
  10. uid: 7e2451f8-fb44-4f7f-b3e0-cfd27f6fd5d6
  11. spec:
  12. cidrBlock: 10.16.0.0/16
  13. default: true
  14. excludeIps:
  15. - 10.16.0.1
  16. gateway: 10.16.0.1
  17. gatewayType: distributed
  18. natOutgoing: true
  19. private: false
  20. protocol: IPv4

默认子网修改

默认子网的配置需要在安装时指定,请参考配置内置网络

在默认子网下创建 Pod

  1. [root@node2 yamls]# kubectl run nginx --image=nginx:alpine
  2. kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
  3. deployment.apps/nginx created
  4. [root@node2 yamls]# kubectl get pod -o wide
  5. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
  6. nginx-74d5899f46-d7qkn 1/1 Running 0 8s 10.16.0.2 node3 <none> <none>