Kube-OVN 中以子网来组织 IP,每个 Namespace 可以归属于不同的子网,Namespace 下的 Pod 会自动从所属的子网中获取 IP 并共享子网的网络配置(CIDR,网关类型,访问控制,NAT控制等)。
为了方便用户的快速上手使用,Kube-OVN 内置了一个默认子网,所有未显式声明子网归属的 Namespace 会自动从默认子网中分配 IP,并使用默认子网的网络信息。其中默认子网使用了分布式网关并对出网流量就行 NAT 转换,其行为和 flannel 的默认行为一致,用户无需额外的配置即可使用到大部分的网络功能。
默认子网查看
默认子网 spec 中的 default 字段为 true,一个集群下只有一个默认子网,且创建后无法更改。
查看默认子网:
- [root@node2 ~]# kubectl get subnet ovn-default -o yaml
- apiVersion: kubeovn.io/v1
- kind: Subnet
- metadata:
- creationTimestamp: "2019-08-06T09:33:43Z"
- generation: 1
- name: ovn-default
- resourceVersion: "1571334"
- selfLink: /apis/kubeovn.io/v1/subnets/ovn-default
- uid: 7e2451f8-fb44-4f7f-b3e0-cfd27f6fd5d6
- spec:
- cidrBlock: 10.16.0.0/16
- default: true
- excludeIps:
- - 10.16.0.1
- gateway: 10.16.0.1
- gatewayType: distributed
- natOutgoing: true
- private: false
- protocol: IPv4
默认子网修改
默认子网的配置需要在安装时指定,请参考配置内置网络
在默认子网下创建 Pod
- [root@node2 yamls]# kubectl run nginx --image=nginx:alpine
- 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.
- deployment.apps/nginx created
- [root@node2 yamls]# kubectl get pod -o wide
- NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
- nginx-74d5899f46-d7qkn 1/1 Running 0 8s 10.16.0.2 node3 <none> <none>