您可以建立 CRD (CustomResourceDefinitions) 來監控 NSX 負載平衡器的使用量,並建立額外的 NSX 第 7 層負載平衡器,以處理預設負載平衡器無法處理的入口工作負載。這些 CRD 不適用於調整針對 Kubernetes 負載平衡器服務建立的第 4 層負載平衡器。

在管理程式模式中,從 NCP 2.5.1 開始支援此功能。在原則模式中,從 NCP 3.0.1 開始支援此功能。

如果您有共用的第 1 層拓撲,則必須在 nsx-ncp-config ConfigMap 中的 [nsx_v3] 下方設定 tier0_gateway 才能使用此功能。

這些 CRD 為:
  • NSXLoadBalancerMonitor - 此 CRD 可用來報告 NSX 負載平衡器的使用量統計資料。在原則模式中,此 CRD 將僅監控使用負載平衡器 CRD 建立的命名空間負載平衡器。
  • LoadBalancer - 此 CRD 可用來建立新的 NSX 負載平衡器。此資源的定義位於 NCP YAML 檔案中。在原則模式和 TKGI 部署中,這是命名空間資源。在管理程式模式部署中,這是叢集範圍內的資源。
(僅限 NCP 3.1) 在管理程式模式中,執行下列步驟以啟用此功能:
  • [k8s] 區段中的 enable_lb_crd 選項設定為 True
  • 使用下列命令套用 NCP YAML 檔案:

    kubectl apply -f ncp-<platform>.yaml

(僅限 NCP 3.1) 在原則模式中,執行下列步驟以啟用此功能:
  • [k8s] 區段中的 enable_lb_crdenable_vnet_crd 選項設定為 True
  • 使用下列命令套用原則版本的 NCP YAML 檔案:

    kubectl apply -f ncp-<platform>-policy.yaml

(僅限 NCP 3.1) 在管理程式模式中,若要建立新的 NSX 負載平衡器,請套用可定義負載平衡器 CRD 的 YAML 檔案。例如,
apiVersion: vmware.com/v1alpha1
kind: LoadBalancer
metadata:
    name: cluster1-lbs0
spec:
    httpConfig: {}
(僅限 NCP 3.1) 在原則模式中,必須使用 VirtualNetwork 來建立 LoadBalancer。例如,
apiVersion: vmware.com/v1alpha1
kind: VirtualNetwork
metadata:
    name: vnet
---
apiVersion: vmware.com/v1alpha1
kind: LoadBalancer
metadata:
    name: cluster1-lbs0
spec:
    virtualNetworkName: vnet # Set to match VirtualNetwork object name
    httpConfig: {}

從 NCP 3.1.1 開始,在管理程式模式和原則模式中啟用此功能的程序是相同的。

(NCP 3.1.1 及更新版本) 執行下列步驟以啟用此功能:
  • [k8s] 區段中的 enable_lb_crd 選項設定為 True
  • 使用下列命令套用 NCP YAML 檔案:

    kubectl apply -f ncp-<platform>.yaml

(NCP 3.1.1 及更新版本) 若要建立新的 NSX 負載平衡器,請套用可定義負載平衡器 CRD 的 YAML 檔案。例如,
apiVersion: vmware.com/v1alpha1
kind: LoadBalancer
metadata:
    name: cluster1-lbs0
spec:
    httpConfig: {}

此 YAML 檔案將建立小型的 NSX 負載平衡器,以及一組沒有持續性、SSL 或 X 轉送設定的第 7 層虛擬伺服器。虛擬伺服器的 IP 是透過針對負載平衡器設定的預設外部集區配置。依預設支援的連接埠為 80 和 443。如果自訂連接埠包含在 HTTP 主機標頭中,則支援非標準連接埠。請注意,只有非 TLS 入口才支援自訂連接埠。

若要檢查負載平衡器 CRD 的建立狀態,請執行下列命令:
kubectl get lb <name of the LoadBalancer> -o yaml
結果看起來應如下所示:
status:
 conditions:
 - status: "True"
   type: Ready
 httpVirtualIP: <realized virtual IP>

此結果指出建立已成功。如果建立失敗,status 將會是 False,並且不會有虛擬 IP。

您也可以自訂 NSX 負載平衡器和虛擬伺服器的設定。若要設定虛擬伺服器的 IP 和連接埠:
spec:
    httpConfig:
        virtualIP: <ip address, default to auto-allocate>
        port: <port number, default to 80>
若要指定工作階段相似性和 X 轉送模式:
spec:
    httpConfig:
         xForwardedFor: <INSERT or REPLACE, default to None>
         affinity:
             type: <source_ip or cookie, default to None>
             timeout: <timeout number, default to 10800>
若要設定 TLS 設定:
spec:
    httpConfig:
        tls:
            port: <tls port number, default to 443>
            secretName: <name of secret, default to None>
            secretNamespace: <namespace of secret, default to None>
請注意,即使您將 HTTP 和 HTTPS 連接埠設為非預設值,因為有 Kubernetes 限制,入口印表機會在顯示入口狀態時一律顯示預設連接埠值 (80 和 443)。您仍應使用設定的連接埠來存取入口。例如,
curl -I -HHost:tea.example.com http://$INGRESS_IP:$CRD_LB_HTTP_PORT/tea

您可以在建立負載平衡器之前或之後建立密碼。若要更新憑證,請先從負載平衡器規格中移除 secretNamespacesecretName、更新密碼的資料,然後使用上述組態重新連結相同的密碼。建立新密碼並更新 secretNamesecretNamespace 也有作用。請注意,不支援在不同的 CRD 負載平衡器之間共用相同的密碼資料。您必須將 CRD 負載平衡器設定為使用不同的憑證。

若要檢視 NSX 負載平衡器的狀態和統計資料,請執行下列命令:
kubectl get lbm
這會列出所有的 NSX 負載平衡器監視器,每個 NSX 負載平衡器一個。會顯示下列資訊:
  • 使用量 - NSX 負載平衡器上的工作負載數目。
  • 流量 - 每個虛擬伺服器的彙總統計資料。
  • 健全狀況 - 此欄位有兩個維度:
    • servicePressureIndex - 這表示負載平衡器的效能。提供兩個值:分數和嚴重性。
    • infraPressureIndex - 這表示基礎的基礎結構元件的效能。在 NCP 2.5.1 中,此值並非一律正確無誤。
    • 欄位 metrics 可讓您瞭解在計算健全狀況分數時要考慮的參數。

當負載平衡器的 servicePressureIndexHIGH 時,您可以將入口工作負載移轉至其他負載平衡器,它必須是使用負載平衡器 CRD 建立的預設負載平衡器或多個負載平衡器。

若要將入口置於專用的負載平衡器上,請將註解新增至入口規格。例如,
 annotations:
   nsx/loadbalancer: <name of the LoadBalancer CRD>

如果註解遺失或設定為 null,即會將入口放置在預設的 NSX 負載平衡器上。