启用 IP 交换矩阵转发和交换矩阵源 NAT
本主题显示,您可使用瞻博网络的云原生 Contrail® 网络™版本 22.1 或更高版本在 Kubernetes 编排的环境中启用 IP 交换矩阵转发和交换矩阵源 NAT。
云原生 Contrail 网络支持 IP 交换矩阵转发和交换矩阵源 NAT。IP 交换矩阵转发通过外部虚拟网络提供在叠加网络中运行的群集以及到底层网络的路径。结构源 NAT 允许交换矩阵中的网关设备将退出交换矩阵的数据平面节点流量的源 IP 地址转换为公共端 IP 地址。
您可以在云网络环境中使用 IP 交换矩阵转发和交换矩阵源 NAT 来提供对底层网络的访问。这种网络访问在提供时不会像其他底层网络选项那样增加巨大的网络复杂性,例如复杂的 BGP 拓扑或防火墙设置。
IP 交换矩阵转发或交换矩阵源 NAT 提供的底层网络接入使 Pod 内的资源能够直接接入互联网或从底层网络中提取外部元件。
概述:IP 交换矩阵转发
在 Kubernetes 环境中,使用从版本 22.1 开始的云原生 Contrail 支持 IP 交换矩阵转发。
您可在可访问外部网络的虚拟网络内启用 IP 交换矩阵转发。这些虚拟网络需要直接访问底层网络。
可访问外部网络的虚拟网络默认命名为 default-externalnetwork 。如果您愿意,您可以创建自定义的用户定义外部网络名称。启用 IP 交换矩阵转发时,通过此外部虚拟网络直接为在叠加网络中运行的群集提供到底层网络的路径。叠加网络与底层网络之间的这种直接连接使叠加网络中的主机能够访问底层网络。由于 IP 交换矩阵转发使虚拟网络能够同时跨越叠加网络和底层网络,因此不会对遍历两个网络的数据包进行封装和解封。因此,数据包处理效率更高。
IP 交换矩阵转发对于网络流量负载平衡也非常有用。LoadBalancer 服务可自动检测在外部网络流量负载平衡时启用 IP 交换矩阵转发的任何外部虚拟网络。
概述:交换矩阵源 NAT
在 Kubernetes 环境中,使用从版本 22.1 开始的云原生 Contrail 网络支持交换矩阵源 NAT。交换矩阵源 NAT 提供了一种从 Kubernetes 环境中的数据平面节点的流量方法,可直接接入互联网,而无需遍历单独的 NAT 防火墙。您还可以使用源 NAT 在需要时将外部元件拉入 POD 中。
从数据平面节点发往互联网的流量必须遍历网关设备。此网关设备是交换矩阵中的一个成员设备,至少还有一个接口连接到公共网络。启用结构源 NAT 时,网关设备将从数据平面节点将源 IP 地址转换为其自己的公共端 IP 地址。此地址转换允许来自数据平面节点的流量访问互联网。
源 NAT 执行的 IP 地址转换还会更新数据包中的源端口。多个数据平面节点可使用交换矩阵源 NAT 通过单个网关公共 IP 地址到达公共网络。
您需要交换矩阵源 NAT 将退出交换矩阵的流量的 IP 地址转换为互联网。您不会使用 NAT 使用此功能转换传入流量。
示例:配置结构源 NAT
默认情况下,在用户创建的虚拟网络中禁用结构源 NAT。
您可以在任何单个虚拟网络中手动启用结构源 NAT,方法是将对象中的VirtualNetwork变量设置fabricsource NAT:为真实。您可以将此值设置为错误,从而禁用交换矩阵源 NAT。
下面是启用结构源 NAT 的虚拟网络对象的示例:
apiVersion: core.contrail.juniper.net/v1alpha1 kind: VirtualNetwork metadata: namespace: contrail name: virtualnetwork-sample annotations: core.juniper.net/display-name: Sample Virtual Network core.juniper.net/description: VirtualNetwork is a collection of end points (interface or ip(s) or MAC(s)) that can communicate with each other by default. It is a collection of subnets whose default gateways are connected by an implicit router spec: ... fabricsource NAT: true
在创建虚拟网络时,您还可以配置环境以在任何用户创建的虚拟网络中启用交换矩阵源 NAT。如果您希望在创建后在任何用户创建的虚拟网络中启用交换矩阵源 NAT,则在初始部署环境时将资源中的ApiServer变量设置enablesource NAT为真实变量。
在初始部署期间,您必须在资源中 ApiServer 设置此配置。应用部署 YAML 文件后,您无法在环境中更改此设置。如果您想在初始部署后更改单个虚拟网络的结构源 NAT 设置,则必须手动更改该网络的配置。
下面是具有代表性的 YAML 文件配置:
apiVersion: configplane.juniper.net/v1alpha1 kind: ApiServer metadata: ... spec: enablesource NAT: true common: containers: ...
当变量正确时enablesource NAT,在任何用户创建的虚拟网络中都支持交换矩阵源 NAT。当用户创建的虚拟网络通过将变量设置为错误时,enablesource NAT您可以禁用交换矩阵源 NAT。默认情况下,结构源 NAT 禁用。
交换矩阵源 NAT 会自动选择 IP 地址进行转换。在大多数云原生 Contrail 网络用例中,您不需要为交换矩阵源 NAT 配置地址池。但是,可使用 portTranslationPools: 资源中的 GlobalVrouterConfig 层次结构来配置地址池。
示例:使用 IP 交换矩阵转发配置外部网络
默认情况下,IP 交换矩阵转发禁用。
您可以通过在或v6SubnetReference:层次结构中将变量设置fabricForwarding:为真实情况,在任何虚拟网络中v4SubnetReference:启用 IP 交换矩阵转发。
以下是如何在通过 IPv4 网关访问互联网的外部虚拟网络中启用 IP 交换矩阵转发的示例:
kind: VirtualNetwork metadata: namespace: contrail name: external-vn labels: service.contrail.juniper.net/externalNetworkSelector: default-external annotations: core.juniper.net/display-name: Sample Virtual Network core.juniper.net/description: VirtualNetwork is a collection of end points (interface or ip(s) or MAC(s)) that can communicate with each other by default. It is a collection of subnets whose default gateways are connected by an implicit router spec: v4SubnetReference: apiVersion: core.contrail.juniper.net/v1alpha1 kind: Subnet namespace: contrail name: external-subnet fabricForwarding: true
您还可以启用 IP 交换矩阵转发,同时创建具有互联网路径的外部虚拟网络。
通过使用 Contrail 网络的环境中的资源,您可以配置虚拟网络通往外部网络 Kubemanager 的路径。
通过将虚拟网络连接到 IPv4 或 IPv6 网关 IP 子网地址,您可以启用虚拟网络的外部访问。您可使用相同的 Kubemanager 资源为虚拟网络中的外部流量启用 IP 交换矩阵转发。
在初始云原生 Contrail 部署期间,您必须配置外部网络子网和此 IP 交换矩阵转发设置。应用了 YAML 的初始部署之后,您无法配置这些参数。
以下示例显示用于配置 Kubemanager 可创建具有外部网络访问的虚拟网络的资源的具有代表性的 YAML 文件。此示例中的虚拟网络运行 IP 交换矩阵转发。您必须在初始部署期间提交此 YAML 文件。
apiVersion: configplane.juniper.net/v1alpha1 kind: Kubemanager metadata: ... spec: externalNetworkV4Subnet: # Fill V4 Subnet of an external network if any externalNetworkV6Subnet: # Fill V6 Subnet of an external network if any ipFabricFowardingExtSvc: true common: containers: ...
您使用 externalNetworkV4Subnet 此 YAML 文件中的或变量指定外部网络的 IPv4 子网或 externalNetworkV6Subnet: IPv6 子网。子网地址是一个公共端 IP 地址,可通过网关设备从互联网访问。使用此 YAML 文件配置 Kubemanager 资源时,将创建到指定外部网络的新虚拟网络。此虚拟网络在 Contrail 网络的默认名称空间中命名 default-externalnetwork 。
当变量正确时,IP 交换矩阵转发在具有外部网络访问的虚拟网络中ipFabricFowardingExtSvc运行。您可以将变量设置为错误,从而禁用外部子网的 ipFabricFowardingExtSvc IP 交换矩阵转发。