您可以建立 CRD (CustomResourceDefinitions) 來監控 NSX 負載平衡器的使用量,並建立額外的 NSX 第 7 層負載平衡器,以處理預設負載平衡器無法處理的入口工作負載。這些 CRD 不適用於調整針對 Kubernetes 負載平衡器服務建立的第 4 層負載平衡器。
如果您有共用的第 1 層拓撲,則必須在 nsx-ncp-config ConfigMap 中的 [nsx_v3] 下方設定 tier0_gateway 才能使用此功能。
- NSXLoadBalancerMonitor - 此 CRD 可用來報告 NSX 負載平衡器的使用量統計資料。在原則模式中,此 CRD 將僅監控使用負載平衡器 CRD 建立的命名空間負載平衡器。
- LoadBalancer - 此 CRD 可用來建立新的 NSX 負載平衡器。此資源的定義位於 NCP YAML 檔案中。在原則模式和 TKGI 部署中,這是命名空間資源。在管理程式模式部署中,這是叢集範圍內的資源。
在管理程式模式和原則模式中啟用此功能的程序是相同的。
- 將 [k8s] 區段中的 enable_lb_crd 選項設定為 True。
- 使用下列命令套用 NCP YAML 檔案:
kubectl apply -f ncp-<platform>.yaml
apiVersion: vmware.com/v1alpha1 kind: LoadBalancer metadata: name: cluster1-lbs0 spec: httpConfig: {} size: SMALL
此 YAML 檔案將建立指定大小的 NSX 負載平衡器,以及一組沒有持續性、SSL 或 X 轉送設定的第 7 層虛擬伺服器。size 參數可以是 SMALL、MEDIUM 或 LARGE。預設值為 SMALL。建立 NSX 負載平衡器後,大小將無法變更,並且對 size 參數的任何更新都將被忽略。虛擬伺服器的 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。
spec: httpConfig: virtualIP: <ip address, default to auto-allocate> port: <port number, default to 80>
附註:不得為不同的負載平衡器 CRD 設定相同的虛擬 IP。
spec: httpConfig: xForwardedFor: <INSERT or REPLACE, default to None> affinity: type: <source_ip or cookie, default to None> timeout: <timeout number, default to 10800>
spec: httpConfig: tls: port: <tls port number, default to 443> secretName: <name of secret, default to None>
curl -I -HHost:tea.example.com http://$INGRESS_IP:$CRD_LB_HTTP_PORT/tea
您可以在建立負載平衡器之前或之後建立密碼。若要更新憑證,請先從負載平衡器規格中移除 secretName、更新密碼的資料,然後使用上述組態重新連結相同的密碼。建立新密碼並更新 secretName 也有作用。請注意,不支援在不同的 CRD 負載平衡器之間共用相同的密碼資料。您必須將 CRD 負載平衡器設定為使用不同的憑證。
kubectl get lbm
- 使用量 - NSX 負載平衡器上的工作負載數目。
- 流量 - 每個虛擬伺服器的彙總統計資料。
- 健全狀況 - 此欄位有兩個維度:
- servicePressureIndex - 這表示負載平衡器的效能。提供兩個值:分數和嚴重性。
- infraPressureIndex - 這表示基礎的基礎結構元件的效能。在 NCP 2.5.1 中,此值並非一律正確無誤。
- 欄位 metrics 可讓您瞭解在計算健全狀況分數時要考慮的參數。
當負載平衡器的 servicePressureIndex 為 HIGH 時,您可以將入口工作負載移轉至其他負載平衡器,它必須是使用負載平衡器 CRD 建立的預設負載平衡器或多個負載平衡器。
annotations: nsx/loadbalancer: <name of the LoadBalancer CRD>
如果註解遺失或設定為 null,即會將入口放置在預設的 NSX 負載平衡器上。