可以配置 LoadBalancer 类型的 Kubernetes 服务,以便根据入站请求的源 IP 地址允许负载均衡器流量,以及仅允许本地 pod 流量。

最低要求

可以在满足以下最低要求的 Tanzu Kubernetes 集群上,将 externalTrafficPolicyLoadBalancerSourceRanges 功能与 LoadBalancer 类型的 Kubernetes 服务结合使用:
组件 最低要求 更多信息
vCenter Server 和 ESXi vSphere 7.0 Update 2 请参见发行说明
主管集群 v1.19.1+vmware.2-vsc0.0.8-17610687 请参见通过执行 vSphere 命名空间更新来更新 主管集群
负载均衡器

NSX-T Data Center v3.1

请参见vSphere with Tanzu 的网络连接
Tanzu Kubernetes 版本 Tanzu Kubernetes 最新版本之一。 请参见验证 Tanzu Kubernetes 集群的更新兼容性

关于对本地流量策略和源 IP 范围的支持

如果使用 NSX-T Data Center 网络连接,可以配置 LoadBalancer 类型的 Kubernetes 服务,允许外部流量策略和负载均衡器源 IP 范围。通过 externalTrafficPolicy 功能,可以将 pod 流量限制到本地节点。通过 LoadBalancerSourceRange 功能,可以指定要允许或阻止的源 IP 地址。

仅允许本地流量的服务示例

以下负载均衡器服务规范配置 externalTrafficPolicy 参数设置为 Local 的负载均衡器实例。结果是,pod 流量仅路由到运行本地 pod 的节点。

apiVersion: v1
kind: Service
metadata:
  name: local-only
spec:
  selector:
    app: testApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  externalTrafficPolicy: Local
  type: LoadBalancer

该功能使用 NSX-T 运行状况检查监控器。从 NSX-T 管理的角度来看,了解此功能的内部操作十分重要。

NSX-T 运行状况检查监控器监视 kube-proxy 为与 LoadBalancer 类型的服务对应的服务器池分配的 Kubernetes 运行状况检查 NodePort。NSX-T 运行状况检查监控器向目标运行状况检查 NodePort 发送 HTTP GET 请求。没有本地 pod 正在运行时,节点上的 kube-proxy 返回 HTTP 状态代码 500。没有本地 pod 的节点将由 NSX-T 标记为“关闭”,并如此显示在 NSX Manager 中。流量将仅路由到运行本地 pod 的节点。

基于源 IP 范围允许流量的服务示例

以下负载均衡器服务规范配置具有一系列允许的源 IP CIDR 的 loadBalancerSourceRanges 参数。仅允许来自这些源 IP 范围的入站请求;将丢弃所有其他入站流量。

apiVersion: v1
kind: Service
metadata:
  name: allow-based-on-source-IPs
spec:
  selector:
    app: testApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  loadBalancerSourceRanges:
  - 10.0.0.0/24
  - 10.1.0.0/24
  type: LoadBalancer