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 enableExternal: true enableK8sNode: true externalGatewaySwitch: join
|
创建自定义 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 使用默认网关(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 enableExternal: true
|
或者
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 enableExternal: true externalGatewaySwitch: 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 enableExternal: true externalGatewaySwitch: external3
|
创建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 enableK8sNode: true
|
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 defaultBridgeDpu: brp0
|
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 vlan: vlan0
|