在 Tanzu Kubernetes Grid 部署中,NSX ALB 可以充當您的 Kubernetes 叢集的外部負載平衡器提供者。
若要設定所有叢集的 NSX ALB 負載平衡器實作,請執行以下動作:
建立管理叢集組態 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>
如需有關建立管理叢集組態檔的詳細資訊,請參閱建立管理叢集組態檔。
使用 tanzu management-cluster create
命令來建立管理叢集。
NSX ALB 現在已設定為管理叢集以及此管理叢集所建立的所有工作負載叢集的負載平衡器。
您可以選擇性地在 Tanzu Kubernetes Grid 中設定 NSX ALB 的某些進階負載平衡功能。
若要將 NSX ALB 設定為僅是特定工作負載叢集上的負載平衡器,請執行以下動作:
建立管理叢集組態 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>
如需有關建立管理叢集組態檔的詳細資訊,請參閱建立管理叢集組態檔。
使用 tanzu management-cluster create
命令來建立管理叢集。
在工作負載叢集組態 YAML 檔案中,新增以下欄位:
AVI_LABELS: '{"enable-nsx-alb":"true"}'
使用 tanzu cluster create
命令來建立工作負載叢集。
NSX ALB 現在已設定為僅是具有對應 AVI_LABELS
值的工作負載叢集的負載平衡器。
此功能會利用部署在叢集中的 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 整合的 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 支援可透過 AKO 來利用的所有 NSX ALB 功能。若要使用其功能,請在 AKODeploymentConfig.spec.extraConfigs.<FEATURE-KNOB>
物件中設定對應的值。如需詳細資訊,請參閱《Avi Kubernetes Operator 部署指南》。
如果在 Tanzu Kubernetes Grid 部署中啟用 NSX ALB,則 NSX ALB 作為負載平衡器服務提供者會在管理叢集中自動啟用。