Network Load Balancer for VPC

虛擬私有雲 4.16 後來

在沒有公用 Internet 存取權的完全私有 VPC 環境中,您可以使用私人路徑網路負載平衡器來平衡流向 VPC 叢集中執行的應用程式的網路流量。 有關更多信息,請參閱 私有路徑服務用例

必要條件

  1. 存取您的Red Hat OpenShift叢集

  2. 如果您還沒有正在運行的應用程序,請將應用程式部署到您的叢集。 請務必在部署配置檔的 metadata 區段中新增標籤。 此自訂標籤會識別您應用程式執行所在的所有 Pod,以將它們包含在負載平衡中。

設定「LoadBalancer」服務

  1. 複製以下 LoadBalancer 配置並將其儲存到名為 lb.yaml 的檔案中。

    apiVersion: v1
    kind: Service
    metadata:
      name: <app_name>-vpc-nlb-<VPC_zone>
      annotations:
        service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name: "my-load-balancer"
        service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "private-path" # Required
        service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "private" # Required
        service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets: "<subnet_ID>"
    spec:
      type: LoadBalancer
      selector:
        <selector_key>: <selector_value>
      ports:
       - name: http
         protocol: TCP
         port: 8080
         targetPort: 8080 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise.
       - name: https
         protocol: TCP
         port: 443
         targetPort: 443 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise.
      externalTrafficPolicy: Local # Specify Local or Cluster.
    
  2. 根據您的用例自訂字段。 有關註釋的完整列表,請參閱 註釋和規格

  3. 儲存變更。

  4. 將負載平衡器服務部署到您的叢集。

    oc apply -f lb.yaml
    

建立「私人路徑」服務

依照指示 建立專用路徑服務

設定虛擬專用端點網關

現在您已經設定了負載平衡器服務,您必須設定虛擬專用端點 (VPE) 閘道才能存取叢集中的應用程式。

有關更多信息,請參閱 在 UI 中建立端點網關

透過 VPE 連接到您的應用程式

有關透過 VPE 連接到應用程式的信息,請參閱 設定端點網關後存取虛擬專用端點

註釋和規範

查看必需和可選的 VPC NLB 註釋和規格。

所需註釋和規範

externalTrafficPolicy
指定 LocalCluster
設定為 Local 以保留用戶端向您的應用程式要求的來源 IP 位址。 此設定可防止傳入流量轉送到不同的節點。 此選項也可設定 HTTP 健康檢查。
如果設定了 Cluster,則僅從 VPC NLB 最初將傳入請求轉送到的工作節點實作 DSR。 傳入請求到達後,請求將轉送到包含應用程式 pod 的工作節點,該節點可能位於不同的區域。 來自應用程式 pod 的回應被傳送到原始工作節點,該工作節點使用 DSR 將回應直接發送回客戶端,繞過 VPC NLB。 此選項同時會設定 TCP 的運作狀態檢查。

可選註釋和規範

service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name
包含唯一的名稱以使您的 VPC 負載平衡器持久存在。 當持久型 VPC 負載平衡器所屬的叢集被刪除時,持久型 VPC 負載平衡器不會被刪除。 有關更多信息,請參閱 持久 VPC 負載平衡器。 此註解只能在建立負載平衡器時設定。 它不能用於更新操作。
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-protocol
此註解設定與Kubernetes負載平衡器服務關聯的 VPC 負載平衡器資源的運作狀況檢查協定。 可用選項有 httphttpstcp。 通常,VPC LB 健康檢查協定由Kubernetes負載平衡器服務規範中 externalTrafficPolicy 設定的值決定。 但是,此註解會覆寫該邏輯。 此註解不會改變Kubernetes (尤其是 kube-proxy)在 externalTrafficPolicy 的各種設定方面的行為。
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-port
用於健康檢查的 TCP 連接埠。 僅當也指定了 ibm-load-balancer-cloud-provider-vpc-health-check-protocol 時,此註解才適用。 若指定的 TCP 埠號超出 Kubernetes 節點埠號範圍(30,000-32,767),則必須修改套用至叢集工作節點的 VPC 安全群組,以允許該埠號的傳入流量。 若將此註解套用至與 VPC ALB 關聯的 Kubernetes 負載平衡服務,則必須修改指派給該 VPC ALB 的安全群組的出站規則,以允許出站流量傳輸至指定的 TCP 埠。 如需詳細資訊,請參閱 瞭解安全預設群集 VPC 網路,以及 建立和管理 VPC 安全群組
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets
用於指定使用哪個子網路來為ppNLB指派 IP 位址的註解。 這些 IP 位址僅供內部使用。 該值可以是 VPC 子網路 ID、VPC 子網路名稱或 VPC 子網路 CIDR。 您只能指定一個子網路。 所有傳入流量似乎都來自這些 IP 位址。 雖然所有位址都位於單一區域中,但ppNLB仍處理來自所有區域的傳入流量。 如果此特定區域完成,來自其他區域的傳入流量仍然有效。 如果您不指定此註釋,則會自動選擇子網,並使用具有最多可用可用 IP 位址的叢集工作程式節點子網路。 若要查看所有資源組中的子網,請執行 ibmcloud oc subnets --provider vpc-gen2 --vpc-id VPC_ID --zone ZONE
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector
用於指定工作節點標籤選擇器的註解。 您可以透過指定標籤選擇器鍵來配置叢集中的特定工作節點來接收流量。 註解中只能包含一個標籤選擇器,且該選擇器必須以 "key=value" 格式指定。 如果未指定此註釋,叢集中的所有工作程序節點都會配置為接收來自 VPC NLB 的流量。 此註釋優先於 service.kubernetes.io/ibm-load-balancer-cloud-provider-zone 註釋,且工作節點上的任何 dedicated: edge 標籤都將被忽略。 若要限制特定區域的流量,您可以使用此註解來指定該區域中的工作節點。 請注意,在叢集工作節點上設定新標籤不會自動將工作節點配置為接收流量;您必須為新標記的工作節點重新建立或更新 VPC NLB 才能接收流量。
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-path
HTTP 和 HTTPs 健康檢查的健康檢查 URL 路徑。 僅當 ibm-load-balancer-cloud-provider-vpc-health-check-protocol 設定為 httphttps 時,此註釋才適用。 URL 路徑必須是 origin-form 請求目標的格式。 如果未指定此註釋且 ibm-load-balancer-cloud-provider-vpc-health-check-protocol 註釋設定為 httphttps,則套用預設值 /
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-delay
選用。 運行狀況檢查嘗試之間等待的秒數。 預設情況下,值設定為 5,最小值為 2,最大值為 60。 該值必須大於 ibm-load-balancer-cloud-provider-vpc-health-check-timeout 值,預設為 2
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-timeout
選用。 等待健康檢查反應的秒數。 預設情況下,值設定為 2,最小值為 1,最大值為 59。 該值必須小於 ibm-load-balancer-cloud-provider-vpc-health-check-delay,預設為 5
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-retries
VPC負載平衡器健康檢查重試的最大次數。 預設情況下,值設定為 2,最小值為 1,最大值為 10
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-member-quota
選用。 負載平衡器路由到的每個區域的工作節點數量。 預設值為 8。 對於工作節點分佈於三個區域的叢集而言,這將導致負載平衡器總共將流量路由至 24 個工作節點。 負載平衡器路由到的所有區域中的工作節點總數不能超過 50。 如果叢集在所有可用區中的工作程序節點少於 50 個,請指定 0 以路由至一個可用區中的所有工作程序節點。
selector
您在應用程式部署 YAML 檔案的 spec.template.metadata.labels 區段中使用的標籤鍵(<selector_key> )與值(<selector_value> )。 此自訂標籤會識別您應用程式執行所在的所有 Pod,以將它們包含在負載平衡中。
port
服務所接聽的埠。
targetPort
可選:服務將流量導向的埠號。 在 Pod 中執行的應用程式必須監聽此目標埠上的傳入 TCP 流量。 目標連接埠通常在應用程式 Pod 中執行的映像中靜態定義。 Pod 中配置的目標連接埠與服務的節點連接埠不同,也可能與 VPC LB 上配置的外部連接埠不同。