vpc使用

ovn-Kubernetes 支持多租户隔离级别的 VPC 网络。不同 VPC 网络相互独立,可以分别配置 Subnet 网段, 路由策略,安全策略,出网网关,EIP 等配置。

VPC 主要用于有多租户网络强隔离的场景,部分 Kubernetes 网络功能在多租户网络下存在冲突。 例如节点和 Pod 互访,NodePort 功能,基于网络访问的健康检查和 DNS 能力在多租户网络场景暂不支持。 为了方便常见 Kubernetes 的使用场景,Kube-OVN 默认 VPC 做了特殊设计,该 VPC 下的 Subnet 可以满足 Kubernetes 规范。用户自定义 VPC 支持本文档介绍的静态路由,EIP 和 NAT 网关等功能。 常见隔离需求可通过默认 VPC 下的网络策略和子网 ACL 实现,在使用自定义 VPC 前请明确是否需要 VPC 级别的隔离,并了解自定义 VPC 下的限制。 在 Underlay 网络下,物理交换机负责数据面转发,VPC 无法对 Underlay 子网进行隔离。

vpc 参数介绍

vpc 参数用法介绍

1
2
3
4
5
6
7
8
9
apiVersion: ovn.yusur.tech/v1
kind: Vpc
metadata:
name: vpc1
spec:
cidrBlock: 10.1.0.0/16/24 #必选 规定vpc 大网段,支持多个段写法,16表示大网段,24表示subnet的子网掩码, 格式必须是x.x.x.x/x/x
enableExternal: true #可选 流量是否能出vpc,可结合bgp,宣告vpc内网段到tor,支持以vpc 内的ip地址出k8s集群,vpc 启用 enableExternal 会自动创建 lrp 关联到上述指定的公网
enableK8sNode: true #可选 vpc流量是否能相互访问k8s node节点
externalGatewaySwitch: join # 可选, vpc 出外网链接那个sw,默认链接join,可配置右边网关的sw 名称如:external3

创建自定义 VPC

创建完全隔离vpc

1
2
3
4
5
6
apiVersion: ovn.yusur.tech/v1
kind: Vpc
metadata:
name: vpc1
spec:
cidrBlock: 10.1.0.0/16/24 #必选 规定vpc 大网段,支持多个段写法,16表示大网段,24表示subnet的子网掩码

创建vpc 使用默认网关(ovn-k8s的GR_xx网关)

1
2
3
4
5
6
7
apiVersion: ovn.yusur.tech/v1
kind: Vpc
metadata:
name: vpc1
spec:
cidrBlock: 10.1.0.0/16/24 #必选 规定vpc 大网段,支持多个段写法,16表示大网段,24表示subnet的子网掩码
enableExternal: true #可选 流量是否能出vpc,可结合bgp,宣告vpc内网段到tor,支持以vpc 内的ip地址出k8s集群,vpc 启用 enableExternal 会自动创建 lrp 关联到上述指定的公网

或者

1
2
3
4
5
6
7
8
apiVersion: ovn.yusur.tech/v1
kind: Vpc
metadata:
name: vpc1
spec:
cidrBlock: 10.1.0.0/16/24 #必选 规定vpc 大网段,支持多个段写法,16表示大网段,24表示subnet的子网掩码
enableExternal: true #可选 流量是否能出vpc,可结合bgp,宣告vpc内网段到tor,支持以vpc 内的ip地址出k8s集群,vpc 启用 enableExternal 会自动创建 lrp 关联到上述指定的公网
externalGatewaySwitch: join # 可选, vpc 出外网链接那个sw,默认链接join。

创建vpc 使用自定义网关

前提:external3 网关sw 必须提前创建完成,参考创建自定义网关

1
2
3
4
5
6
7
8
apiVersion: ovn.yusur.tech/v1
kind: Vpc
metadata:
name: vpc1
spec:
cidrBlock: 10.1.0.0/16/24 #必选 规定vpc 大网段,支持多个段写法,16表示大网段,24表示subnet的子网掩码
enableExternal: true #可选 流量是否能出vpc,可结合bgp,宣告vpc内网段到tor,支持以vpc 内的ip地址出k8s集群,vpc 启用 enableExternal 会自动创建 lrp 关联到上述指定的公网
externalGatewaySwitch: external3 # 可选, vpc 出外网链接那个sw,默认链接join。

创建vpc与k8s node节点互通

1
2
3
4
5
6
7
apiVersion: ovn.yusur.tech/v1
kind: Vpc
metadata:
name: vpc1
spec:
cidrBlock: 10.1.0.0/16/24 #必选 规定vpc 大网段,支持多个段写法,16表示大网段,24表示subnet的子网掩码
enableK8sNode: true #可选 流量是否能相互访问k8s node节点

VPC 内容器访问外部网络需要通过 VPC 网关,VPC 网关可以打通物理网络和租户网络,并提供 浮动 IP,SNAT 和 DNAT 功能。

准备 underlay 公网网络

1
2
3
4
5
6
7
apiVersion: ovn.yusur.tech/v1
kind: ProviderNetwork
metadata:
name: external3
spec:
defaultBridge: brenp0s10 # 复用非dpu节点brenp0s10,用于非dpu节点
defaultBridgeDpu: brp0 # 复用dpu节点brp0,用于dpu节点
1
2
3
4
5
6
7
apiVersion: ovn.yusur.tech/v1
kind: Vlan
metadata:
name: vlan0
spec:
id: 0
provider: external3
1
2
3
4
5
6
7
8
9
10
11
apiVersion: ovn.yusur.tech/v1
kind: Subnet
metadata:
name: external3
spec:
cidrBlock: 172.16.10.0/24
excludeIps:
- 172.16.10.1..172.16.10.206
gateway: 172.16.10.1
vpc: default # 必须写default
vlan: vlan0 # 必须设置vlan