可以配置 LoadBalancer 类型的 Kubernetes 服务,以便根据入站请求的源 IP 地址允许负载均衡器流量,以及仅允许本地 pod 流量。
最低要求
externalTrafficPolicy
和
LoadBalancerSourceRanges
功能与 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