Per utilizzare NSX Advanced Load Balancer come controller di ingresso nel cluster Kubernetes, è necessario disporre della versione Enterprise di NSX ALB. In alternativa, è possibile utilizzare Contour come controller di ingresso nei cluster Tanzu Kubernetes Grid.
Quando è integrato tramite AKO in Tanzu Kubernetes Grid, NSX ALB supporta tre modalità di ingresso: NodePort, ClusterIP e NodePortLocal. Scegliere un tipo in base alle proprie esigenze.
Quando si sceglie di utilizzare la modalità NodePort per l'ingresso di NSX ALB, il servizio back-end di ingresso deve essere in modalità NodePort. In questo tipo, il traffico di rete viene instradato dal client a NSX ALB SE e quindi ai nodi del cluster prima che raggiunga i pod. NSX ALB SE instrada il traffico ai nodi e kube-proxy
consente di instradare il traffico dai nodi ai pod di destinazione.
Il diagramma seguente descrive come viene instradato il traffico di rete nella modalità NodePort
:
La modalità NodePort supporta anche la condivisione di NSX ALB SE tra cluster diversi. Tuttavia, questo tipo di servizio può esporre una porta nel cluster perché richiede l'utilizzo del servizio back-end della modalità NodePort. Richiede inoltre un hop aggiuntivo affinché kube-proxy
instradi il traffico dal nodo al pod.
Per configurare la modalità di ingresso NodePort in un cluster di gestione:
Creare un oggetto CR AKODeploymentConfig
nel modo seguente:
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
Applicare le modifiche nel cluster di gestione:
kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-node-port.yaml
Per abilitare la modalità di ingresso NodePort nei cluster del carico di lavoro, creare un file YAML di configurazione del cluster del carico di lavoro e aggiungere il campo seguente:
AVI_LABELS: '{"nsx-alb-node-port-l7":"true"}'
Distribuire il cluster del carico di lavoro utilizzando il comando tanzu cluster create
.
Per ulteriori informazioni sulla distribuzione dei cluster del carico di lavoro in vSphere, vedere Creazione dei cluster del carico di lavoro.
Il provider del servizio di ingresso NSX ALB è ora configurato per utilizzare la modalità NodePort sui cluster del carico di lavoro che hanno le AVI_LABELS
corrispondenti al selettore del cluster nell'oggetto AKODeploymentConfig install-ako-l7-node-port
.
In modalità ClusterIP, il traffico di rete viene instradato dal client a NSX ALB SE e quindi ai pod. Questa modalità richiede ClusterIP come tipo di servizio backend in ingresso. NSX ALB SE instrada il traffico ai pod sfruttando le route statiche.
Il diagramma seguente descrive come viene instradato il traffico di rete nella modalità ClusterIP
:
La modalità ClusterIP semplifica il traffico di rete instradandolo direttamente da SE ai pod. Questa modalità impedisce inoltre l'esposizione delle porte in un cluster. Tuttavia, in questa modalità, gli SE non possono essere condivisi tra cluster perché un SE deve essere collegato a un cluster.
Per abilitare questa funzionalità:
Creare un oggetto CR AKODeploymentConfig
nel modo seguente:
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
Applicare le modifiche nel cluster di gestione:
kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-cluster-ip.yaml
Per abilitare la modalità di ingresso ClusterIP nei cluster del carico di lavoro, creare un file YAML di configurazione del cluster del carico di lavoro e aggiungere il campo seguente:
AVI_LABELS: '{"nsx-alb-cluster-ip-l7":"true"}'
Distribuire il cluster del carico di lavoro utilizzando il comando tanzu cluster create
.
Per ulteriori informazioni sulla distribuzione dei cluster del carico di lavoro in vSphere, vedere Creazione dei cluster del carico di lavoro.
Il provider di servizi di ingresso NSX ALB è ora configurato per utilizzare la modalità ClusterIP sui cluster del carico di lavoro che hanno le AVI_LABELS
corrispondenti al selettore del cluster nell'oggetto AKODeploymentConfig install-ako-l7-cluster-ip
.
Per abilitare la modalità di ingresso ClusterIP in altri cluster del carico di lavoro, è necessario creare un nuovo SE nel controller Avi e quindi creare un nuovo oggetto AKODeploymentConfig
che specifica il nome del nuovo SE prima di applicare il file nel cluster di gestione.
Se si utilizza Antrea come CNI, è possibile abilitare la modalità di ingresso NodePortLocal in NSX ALB. Sfrutta la funzionalità NodePortLocal di Antrea per instradare direttamente il traffico da SE al pod. In questa modalità, il traffico di rete viene instradato dal client a NSX ALB SE e quindi ai pod. Questa modalità richiede ClusterIP come tipo di back-end di ingresso. Inoltre, la variabile di configurazione ANTREA_NODEPORTLOCAL
deve essere impostata su true
in Tanzu Kubernetes Grid. Per ulteriori informazioni sulla funzionalità NodePortLocal in Antrea, vedere NodePortLocal (NPL) nella documentazione di Antrea.
Il diagramma seguente descrive come viene instradato il traffico di rete nella modalità NodePortLocal
:
La modalità NodePortLocal
semplifica il traffico di rete instradandolo direttamente da SE ai pod. Questa modalità supporta gli SE condivisi per i cluster e impedisce l'esposizione delle porte in un cluster.
Per configurare la modalità di ingresso NodePortLocal in un cluster di gestione esistente:
Creare un oggetto CR AKODeploymentConfig
nel modo seguente:
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
Applicare le modifiche nel cluster di gestione:
kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-node-port-local.yaml
Per abilitare la modalità di ingresso NodePortLocal nei cluster del carico di lavoro, creare un file YAML di configurazione del cluster del carico di lavoro e aggiungere il campo seguente:
AVI_LABELS: '{"nsx-alb-node-port-local-l7":"true"}'
ANTREA_NODEPORTLOCAL: "true"
Distribuire il cluster del carico di lavoro utilizzando il comando tanzu cluster create
.
Il provider di servizi di ingresso NSX ALB è ora configurato per utilizzare la modalità NodePortLocal sui cluster del carico di lavoro che hanno le AVI_LABELS
corrispondenti al selettore del cluster nell'oggetto AKODeploymentConfig install-ako-l7-node-port-local
.
Se si utilizza NSX ALB come provider VIP dell'endpoint del cluster, nel cluster di gestione è supportata solo la modalità di ingresso NodePort. Se non si utilizza NSX ALB come provider VIP dell'endpoint del cluster, sono supportate tutte e tre le modalità di ingresso.
Per abilitare l'ingresso L7 nel cluster di gestione:
Modificare il file AKODeploymentConfig
nel cluster di gestione:
kubectl --context=MGMT-CLUSTER-CONTEXT edit adc install-ako-for-management-cluster
Nel file che verrà aperto, modificare il campo spec.extraConfigs.ingress
come illustrato nell'esempio seguente:
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