PKS 内置了 VMware 新一代虚拟化网络产品 NSX-T,为容器提供微分段、负载均衡、安全策略等高级网络和安全功能,并且支持除 vSphere 以外的其他 Hypervisor。NSX-T 的项目代号为“变形金刚 (Transformer)”,所以通常把它称之为 NSX-T,以区别于传统的基于 vSphere 的 NSX。
NSX-T 可以通过 K8s 的容器网络接口 (Container Network Interface) 来向容器提供虚拟化的网络服务,PKS 的用户可以方便地通过命令行来创建和管理由 NSX-T 提供的虚拟网络服务对象,如:分布式防火墙、逻辑交换机、网络安全策略等等,例如:
- 创建命名空间 :在创建容器 Namespace 的同时,NSX-T 会自动创建一个分布式路由器和逻辑交换机,从网络层面上把这个 Namespace 隔离开来。
- 网络策略:创建网络策略命令会在分布式防火墙上创建一组对应的安全策略,根据安全策略定义的规则来阻止指定的网络流量。
- 应用部署:具体的应用部署之后,NSX-T 就会根据安全策略中的规则来控制对于应用容器的流量访问,PKS 自来的 traceflow 功能可以方便地查看两个窗口或服务之间的流量关系。
- 网络策略:删除相关的网络策略后,就会在相关的分布式防墙上删除相应的网络策略。
- 负载均衡器 Ingress:NSX-T 也为容器应用提供了负载均衡服务 Ingress,Ingress 具有层7的网络路由功能。
通过 NSX-T 和 Ingress 负载均衡器相配合,可以实现层 7 的路由功能,在演示中我们看到 Ingress 服务可以通过 URL 的后缀 coffee (10.40.14.35/coffee) 或 tea (10.40.14.35/tea)来把访问请求导向具体的容器服务,因为 Ingress 支持这种基于 HTTP 协议的负载均衡服务。
接下来请大家看一段关于 PKS 中 NSX-T 虚拟化网络功能的演示,主要包括了以下几个场景:
- 创建命名空间:在 PKS 集群中创建 namespace bar,可以看到 NSX-T 在后台自动创建了一个逻辑路由器和交换机来为命名空间 bar 提供一个独立的网段;
- 利用网络策略来控制网络通讯:创建网络策略来阻止带有 db 和 nginx 标签的 Pod 之间的通讯, NSX-T 提供的 Traceflow 工具可以让管理员直观地看到多个 Pod 指定端口之间的通讯被阻止了;
- 通过 Ingress 控制器来均衡负载:部署一个 Ingress 控制器来分配 coffee 和 tea 服务之间的工作负载,Ingress 具有层7 的网绺路由能力,能够通过 URL 上的服务名字 (coffee 或 tea) 来把网络包专递给相应的服务。