您可以將類型為 LoadBalancer 的 Kubernetes 服務設定為根據傳入請求的來源 IP 位址來允許負載平衡器流量,並僅允許本機網繭流量。

最低需求

您可以將 externalTrafficPolicyLoadBalancerSourceRanges 功能與滿足下列最低需求的 Tanzu Kubernetes 叢集上類型為 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 功能,可以將網繭流量限制在本機節點。透過 LoadBalancerSourceRange 功能,可以指定要允許或封鎖的來源 IP 位址。

僅限本機流量的服務範例

下列負載平衡器服務規格會設定負載平衡器執行個體,將 externalTrafficPolicy 參數設定為 Local。結果就是,網繭流量僅路由至正在執行本機網繭的節點。

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 健全狀況檢查監視器會監視 Kubernetes 健全狀況檢查 NodePort,該服務是 kube-proxy 針對與 LoadBalancer 類型的服務相對應的伺服器集區所配置的。NSX-T 健全狀況檢查監視器會傳送 HTTP GET 要求至目標健全狀況檢查 NodePort。如果沒有執行中的本機網繭,節點上的 kube-proxy 會傳回 HTTP 狀態碼 500。沒有本機網繭的節點將被 NSX-T 標記為 [關閉],並照此顯示在 NSX Manager 中。流量僅路由至正在執行本機網繭的節點。

允許以來源 IP 範圍為基礎的流量的服務範例

下列負載平衡器服務規格為 loadBalancerSourceRanges 參數設定允許的來源 IP CIDR 陣列。將僅允許來自這些來源 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