NSX ALB 作為叢集負載平衡器服務提供者

在 Tanzu Kubernetes Grid 部署中,NSX ALB 可以充當您的 Kubernetes 叢集的外部負載平衡器提供者。

基本設定:將 NSX ALB 設定為所有叢集的負載平衡器實作

若要設定所有叢集的 NSX ALB 負載平衡器實作,請執行以下動作:

  1. 建立管理叢集組態 YAML 檔案,並在該檔案中新增以下欄位:

    AVI_ENABLE: true
    AVI_CONTROLLER: <avi controller IP address or FQDN>
    AVI_USERNAME: <avi admin username>
    AVI_PASSWORD: <avi admin password>
    AVI_CA_DATA_B64: <base64 encoded certificate>
    AVI_CLOUD_NAME: <cloud you configured to deploy virtual services>
    AVI_SERVICE_ENGINE_GROUP: <SEG you configured to host virtual services>
    AVI_DATA_NETWORK: <VIP Network you want to use for your load balancer external IP>
    AVI_DATA_NETWORK_CIDR: <above VIP Network's CIDR>
    
    #### only for NSX-T cloud ####
    AVI_NSXT_T1LR: <NSX-T Tier 1 path used for NSX Advanced Loader Balancer backend network>
    

    如需有關建立管理叢集組態檔的詳細資訊,請參閱建立管理叢集組態檔

  2. 使用 tanzu management-cluster create 命令來建立管理叢集。

NSX ALB 現在已設定為管理叢集以及此管理叢集所建立的所有工作負載叢集的負載平衡器。

設定 NSX ALB 的進階 L4 負載平衡器功能

您可以選擇性地在 Tanzu Kubernetes Grid 中設定 NSX ALB 的某些進階負載平衡功能。

(選用) 在特定工作負載叢集上啟用 NSX ALB 來作為負載平衡器實作

若要將 NSX ALB 設定為僅是特定工作負載叢集上的負載平衡器,請執行以下動作:

  1. 建立管理叢集組態 YAML 檔案,並在該檔案中新增以下欄位:

    AVI_ENABLE: true
    AVI_LABELS: '{"enable-nsx-alb":"true"}'
    AVI_CONTROLLER: <avi controller IP address or FQDN>
    AVI_USERNAME: <avi admin username>
    AVI_PASSWORD: <avi admin password>
    AVI_CA_DATA_B64: <base64 encoded certificate>
    AVI_CLOUD_NAME: <cloud you configured to deploy virtual services>
    AVI_SERVICE_ENGINE_GROUP: <SEG you configured to host virtual services>
    AVI_DATA_NETWORK: <VIP Network you want to use for your load balancer external IP>
    AVI_DATA_NETWORK_CIDR: <above VIP Network's CIDR>
    
    #### only for NSX-T cloud ####
    AVI_NSXT_T1LR: <NSX-T Tier 1 path used for NSX Advanced Loader Balancer backend network>
    

    如需有關建立管理叢集組態檔的詳細資訊,請參閱建立管理叢集組態檔

  2. 使用 tanzu management-cluster create 命令來建立管理叢集。

  3. 在工作負載叢集組態 YAML 檔案中,新增以下欄位:

    AVI_LABELS: '{"enable-nsx-alb":"true"}'
    
  4. 使用 tanzu cluster create 命令來建立工作負載叢集。

NSX ALB 現在已設定為僅是具有對應 AVI_LABELS 值的工作負載叢集的負載平衡器。

為 NSX ALB 設定外部靜態 IP 位址

此功能會利用部署在叢集中的 Avi Kubernetes Operator (AKO) 應用程式。如需相關資訊,請參閱具有慣用 IP 且類型為負載平衡器的服務

請確定您指定的 IP 位址是一個尚未配置的位址,且位於您的 AVI 控制器中所設定的 IP 集區內。

若要為 NSX ALB 提供的負載平衡器服務設定外部靜態 IP 位址,請在服務組態檔的負載平衡器類型的 loadbalancerIP 欄位中,新增外部 IP 位址,如以下範例所示:

apiVersion: v1
kind: Service
metadata:
  name: corgi-test
spec:
  type: LoadBalancer
  selector:
    corgi: test
  ports:
    - nodePort: 30008
      port: 80
      targetPort: 80
  loadBalancerIP: 1.1.1.1
  

為 NSX ALB 設定 v1alpha1 API 閘道

與 NSX ALB 整合的 Tanzu Kubernetes Grid 部署支援閘道 API v1alpha1。此功能會利用部署在叢集中的 AKO 應用程式。如需閘道 API 支援的詳細資訊,請參閱閘道和閘道類別

若要為 NSX ALB 提供的負載平衡器服務設定 v1alpha1 API 閘道,請在 AKODeploymentConfig 物件中,將旗標 spec.extraConfigs.servicesAPI 設定為 true。範例如下:

apiVersion: ako.vmware.com/v1alpha1
kind: AviInfraSetting
metadata:
  name: sample-infrasetting
spec:
  seGroup:
    name: Default-Group
---
apiVersion: networking.x-k8s.io/v1alpha1
kind: GatewayClass
metadata:
  name: sample-gateway-class
spec:
  controller: ako.vmware.com/avi-lb
  parametersRef:
    group: ako.vmware.com
    kind: AviInfraSetting
    name: sample-infrasetting
---
kind: Gateway
apiVersion: networking.x-k8s.io/v1alpha1
metadata:
  name: sample-gateway
spec:
  gatewayClassName: sample-gateway-class
  listeners:
    - protocol: TCP
      port: 80
      routes:
        selector:
          matchLabels:
            ako.vmware.com/gateway-namespace: default
            ako.vmware.com/gateway-name: sample-gateway
        group: v1
        kind: Service
    - protocol: TCP
      port: 81
      routes:
        selector:
          matchLabels:
            ako.vmware.com/gateway-namespace: default
            ako.vmware.com/gateway-name: sample-gateway
        group: v1
        kind: Service
---
apiVersion: v1
kind: Service
metadata:
  name: coffee-svc
  labels:
    app: coffee
    ako.vmware.com/gateway-name: sample-gateway
    ako.vmware.com/gateway-namespace: default
spec:
  ports:
    - port: 81
      targetPort: 80
      protocol: TCP
  selector:
    app: coffee
  type: NodePort   # <== service type should be aligned with AKODeploymentConfig.spec.extraConfigs.ingress.serviceType, NodePort is the default value.
---
apiVersion: v1
kind: Service
metadata:
  name: tea-svc
  labels:
    app: tea
    ako.vmware.com/gateway-name: sample-gateway
    ako.vmware.com/gateway-namespace: default
spec:
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  selector:
    app: tea
  type: NodePort # <== service type should be aligned with AKODeploymentConfig.spec.extraConfigs.ingress.serviceType, NodePort is the default value.
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-coffee
spec:
  selector:
    matchLabels:
      app: coffee
  replicas: 1
  template:
    metadata:
      labels:
        app: coffee
    spec:
      containers:
        - name: nginx
          image: harbor-repo.vmware.com/dockerhub-proxy-cache/library/nginx
          ports:
            - containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-tea
spec:
  selector:
    matchLabels:
      app: tea
  replicas: 1
  template:
    metadata:
      labels:
        app: tea
    spec:
      containers:
        - name: nginx
          image: harbor-repo.vmware.com/dockerhub-proxy-cache/library/nginx
          ports:
            - containerPort: 80

Tanzu Kubernetes Grid 中的其他 NSX ALB 功能

Tanzu Kubernetes Grid 支援可透過 AKO 來利用的所有 NSX ALB 功能。若要使用其功能,請在 AKODeploymentConfig.spec.extraConfigs.<FEATURE-KNOB> 物件中設定對應的值。如需詳細資訊,請參閱《Avi Kubernetes Operator 部署指南》。

管理叢集中的 NSX ALB

如果在 Tanzu Kubernetes Grid 部署中啟用 NSX ALB,則 NSX ALB 作為負載平衡器服務提供者會在管理叢集中自動啟用。

check-circle-line exclamation-circle-line close-line
Scroll to top icon