This site will be decommissioned on December 31st 2024. After that date content will be available at techdocs.broadcom.com.

NSX ALB 作為 L7 輸入控制器

若要在 Kubernetes 叢集中使用 NSX Advanced Load Balancer 作為入口控制器,您必須具有 NSX ALB Enterprise 版本。或者,也可以使用 Contour 作為 Tanzu Kubernetes Grid 叢集中的入口控制器。

在 Tanzu Kubernetes Grid 中透過 AKO 整合時,NSX ALB 支援三種入口模式:NodePort、ClusterIP 和 NodePortLocal。請根據您的需求來選擇類型。

NodePort

當選擇對 NSX ALB 入口使用 NodePort 模式時,入口後端服務必須是 NodePort 模式。在此類型中,網路流量會從用戶端路由到 NSX ALB SE,接著路由到叢集節點,然後才會抵達網繭。NSX ALB SE 會將流量路由到節點,且 kube-proxy 會協助將流量從節點路由到目標網繭。

下圖說明在 NodePort 模式下如何路由網路流量:

NodePort 模式下的網路流量

NodePort 模式支援在不同的叢集之間共用 NSX ALB SE。但是,這種類型的服務可能會公開叢集中的連接埠,因為它需要使用 NodePort 模式後端服務。此外,還需要為 kube-proxy 提供額外的躍點,以將流量從節點路由到網繭。

若要在管理叢集上設定 NodePort 入口模式,請執行以下動作:

  1. 建立 AKODeploymentConfig CR 物件,如下所示:

    apiVersion: networking.tkg.tanzu.vmware.com/v1alpha1
    kind: AKODeploymentConfig
    metadata:
      name: install-ako-for-l7-node-port
    spec:
      adminCredentialRef:
        name: avi-controller-credentials
        namespace: tkg-system-networking
      certificateAuthorityRef:
        name: avi-controller-ca
        namespace: tkg-system-networking
      controller: 10.191.192.137
      cloudName: Default-Cloud
      serviceEngineGroup: Default-Group
      clusterSelector:
        matchLabels:
          nsx-alb-node-port-l7: "true"
      controlPlaneNetwork:
        cidr: 10.191.192.0/20
        name: VM Network
      dataNetwork:
        cidr: 10.191.192.0/20
        name: VM Network
      extraConfigs:
        cniPlugin: antrea
        disableStaticRouteSync: true
        ingress:
          defaultIngressController: true # optional, if set to false, you need to specify ingress class in your ingress object
          disableIngressClass: false  # required
          serviceType: NodePort       # required
          shardVSSize: SMALL
          nodeNetworkList:            # required
          - networkName: VM Network
            cidrs:
            - 10.191.192.0/20
    
  2. 將變更套用在管理叢集上:

    kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-node-port.yaml
    
  3. 若要在工作負載叢集上啟用 NodePort 入口模式,請建立工作負載叢集組態 YAML 檔案,並新增以下欄位:

    AVI_LABELS: '{"nsx-alb-node-port-l7":"true"}'
    
  4. 使用 tanzu cluster create 命令來部署工作負載叢集。

如需有關將工作負載叢集部署到 vSphere 的詳細資訊,請參閱建立工作負載叢集

現在,已設定 NSX ALB 入口服務提供者,以便使該提供者在其 AVI_LABELSinstall-ako-l7-node-port AKODeploymentConfig 物件中的叢集選擇器相符的工作負載叢集中,使用 NodePort 模式。

ClusterIP

在 ClusterIP 模式下,網路流量會從用戶端路由到 NSX ALB SE,然後再路由到網繭。此模式需要 ClusterIP 作為入口後端服務類型。NSX ALB SE 會利用靜態路由,將流量路由到網繭。

下圖說明在 ClusterIP 模式下如何路由網路流量:

ClusterIP 模式下的網路流量

ClusterIP 模式會將網路流量直接從 SE 路由到網繭,來簡化網路流量。此模式還能防止在叢集中公開連接埠。但是,在此模式下,無法在叢集之間共用 SE,因為必須將 SE 連結至叢集。

啟用此功能:

  1. 建立 AKODeploymentConfig CR 物件,如下所示:

    apiVersion: networking.tkg.tanzu.vmware.com/v1alpha1
    kind: AKODeploymentConfig
    metadata:
      name: install-ako-for-l7-cluster-ip
    spec:
      adminCredentialRef:
        name: avi-controller-credentials
        namespace: tkg-system-networking
      certificateAuthorityRef:
        name: avi-controller-ca
        namespace: tkg-system-networking
      controller: 10.191.192.137
      cloudName: Default-Cloud
      serviceEngineGroup: SEG-2   # must be unique, can only be used for one cluster
      clusterSelector:
        matchLabels:
          nsx-alb-cluster-ip-l7: "true"
      controlPlaneNetwork:
        cidr: 10.191.192.0/20
        name: VM Network
      dataNetwork:
        cidr: 10.191.192.0/20
        name: VM Network
      extraConfigs:
        cniPlugin: antrea
        disableStaticRouteSync: false # required
        ingress:
          defaultIngressController: true # optional, if set to false, you need to specify ingress class in your ingress object
          disableIngressClass: false  # required
          serviceType: ClusterIP      # required
          shardVSSize: SMALL 
          nodeNetworkList:            # required
          - networkName: VM Network
            cidrs:
            - 10.191.192.0/20
    
    
  2. 將變更套用在管理叢集上:

    kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-cluster-ip.yaml
    
  3. 若要在工作負載叢集上啟用 ClusterIP 入口模式,請建立工作負載叢集組態 YAML 檔案,並新增以下欄位:

    AVI_LABELS: '{"nsx-alb-cluster-ip-l7":"true"}'
    
  4. 使用 tanzu cluster create 命令來部署工作負載叢集。

如需有關將工作負載叢集部署到 vSphere 的詳細資訊,請參閱建立工作負載叢集

現在,已設定 NSX ALB 入口服務提供者,以便使該提供者在其 AVI_LABELSinstall-ako-l7-cluster-ip AKODeploymentConfig 物件中的叢集選擇器相符的工作負載叢集上,使用 ClusterIP 模式。

若要在其他工作負載叢集上啟用 ClusterIP 入口模式,您必須在 Avi 控制器中建立新的 SE,然後建立新的 AKODeploymentConfig 物件以指定新 SE 的名稱,然後再將該檔案套用至管理叢集。

NodePortLocal (適用於 Antrea CNI)

如果使用 Antrea 作為 CNI,您可以在 NSX ALB 上啟用 NodePortLocal 入口模式。它會利用 Antrea 的 NodePortLocal 功能,直接將流量從 SE 路由到網繭。在此模式下,網路流量會從用戶端路由到 NSX ALB SE,然後再路由到網繭。此模式需要 ClusterIP 作為入口後端類型。此外,ANTREA_NODEPORTLOCAL 組態變數必須在 Tanzu Kubernetes Grid 中設定為 true。如需有關 Antrea 中的 NodePortLocal 功能的詳細資訊,請參閱 Antrea 說明文件中的 NodePortLocal (NPL)

下圖說明在 NodePortLocal 模式下如何路由網路流量:

NodePortLocal 模式下的網路流量

NodePortLocal 模式會將網路流量直接從 SE 路由到網繭,來簡化網路流量。此模式支援叢集共用 SE,並可防止在叢集中公開連接埠。

若要在現有管理叢集上設定 NodePortLocal 入口模式,請執行以下動作:

  1. 建立 AKODeploymentConfig CR 物件,如下所示:

    apiVersion: networking.tkg.tanzu.vmware.com/v1alpha1
    kind: AKODeploymentConfig
    metadata:
      name: install-ako-for-l7-node-port-local
    spec:
      adminCredentialRef:
        name: avi-controller-credentials
        namespace: tkg-system-networking
      certificateAuthorityRef:
        name: avi-controller-ca
        namespace: tkg-system-networking
      controller: 10.191.192.137
      cloudName: Default-Cloud
      serviceEngineGroup: Default-Group
      clusterSelector:
        matchLabels:
          nsx-alb-node-port-local-l7: "true"
      controlPlaneNetwork:
        cidr: 10.191.192.0/20
        name: VM Network
      dataNetwork:
        cidr: 10.191.192.0/20
        name: VM Network
      extraConfigs:
        cniPlugin: antrea
        disableStaticRouteSync: true
        ingress:
          defaultIngressController: true # optional, if set to false, you need to specify ingress class in your ingress object
          disableIngressClass: false  # required
          serviceType: NodePortLocal  # required
          shardVSSize: SMALL
          nodeNetworkList:            # required
          - networkName: VM Network
            cidrs:
            - 10.191.192.0/20
    
    
  2. 將變更套用在管理叢集上:

    kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-node-port-local.yaml
    
  3. 若要在工作負載叢集上啟用 NodePortLocal 入口模式,請建立工作負載叢集組態 YAML 檔案,並新增以下欄位:

    AVI_LABELS: '{"nsx-alb-node-port-local-l7":"true"}'
    
    ANTREA_NODEPORTLOCAL: "true"
    
  4. 使用 tanzu cluster create 命令來部署工作負載叢集。

現在,已設定 NSX ALB 入口服務提供者,以便使該提供者在其 AVI_LABELSinstall-ako-l7-node-port-local AKODeploymentConfig 物件中的叢集選擇器相符的工作負載叢集中,使用 NodePortLocal 模式。

管理叢集中的 NSX ALB L7 入口支援

如果您使用 NSX ALB 作為叢集端點 VIP 提供者,則管理叢集中僅支援 NodePort 入口模式。如果您沒有使用 NSX ALB 作為叢集端點 VIP 提供者,這三種入口模式全都支援。

若要在管理叢集中啟用 L7 入口,請執行以下動作:

  1. 編輯管理叢集中的 AKODeploymentConfig 檔案:

    kubectl --context=MGMT-CLUSTER-CONTEXT edit adc install-ako-for-management-cluster
    
  2. 在開啟的檔案中,修改 spec.extraConfigs.ingress 欄位,如以下範例所示:

      extraConfigs:
        cniPlugin: antrea
        disableStaticRouteSync: true
        ingress:
          defaultIngressController: true # optional, if set to false, you need to specify ingress class in your ingress object
          disableIngressClass: false  # required
          serviceType: NodePort       # required
          shardVSSize: SMALL
          nodeNetworkList:            # required
          - networkName: VM Network
            cidrs:
            - 10.191.192.0/20
    
    
check-circle-line exclamation-circle-line close-line
Scroll to top icon