Um NSX Advanced Load Balancer als Ingress-Controller im Kubernetes-Cluster zu verwenden, benötigen Sie die NSX ALB Enterprise-Version. Alternativ können Sie Contour als Ingress-Controller in Ihren Tanzu Kubernetes Grid-Clustern verwenden.
Bei der Integration über AKO in Tanzu Kubernetes Grid unterstützt NSX ALB drei Ingress-Modi: NodePort, ClusterIP und NodePortLocal. Wählen Sie einen Typ basierend auf Ihren Anforderungen aus.
Wenn Sie den NodePort-Modus für NSX ALB-Ingress verwenden möchten, muss sich der Ingress-Backend-Dienst im NodePort-Modus befinden. Bei diesem Typ wird der Netzwerkdatenverkehr vom Client zur NSX ALB SE und dann zu den Clusterknoten weitergeleitet, bevor er die Pods erreicht. Die NSX ALB SE leitet den Datenverkehr an die Knoten weiter, und kube-proxy
hilft dabei, den Datenverkehr von den Knoten an die Ziel-Pods weiterzuleiten.
Das folgende Diagramm beschreibt, wie der Netzwerkdatenverkehr im NodePort
-Modus weitergeleitet wird:
Der NodePort-Modus unterstützt die gemeinsame Nutzung einer NSX ALB SE zwischen verschiedenen Clustern. Dieser Diensttyp kann jedoch einen Port im Cluster offenlegen, da er für die Verwendung des Backend-Diensts im NodePort-Modus erforderlich ist. Außerdem ist ein zusätzlicher Hop für kube-proxy
erforderlich, um Datenverkehr vom Knoten zum Pod weiterzuleiten.
So konfigurieren Sie den NodePort-Ingress-Modus auf dem Verwaltungscluster:
Erstellen Sie ein AKODeploymentConfig
-CR-Objekt wie folgt:
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
Wenden Sie die Änderungen auf den Verwaltungscluster an:
kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-node-port.yaml
Um den NodePort-Ingress-Modus auf den Arbeitslastclustern zu aktivieren, erstellen Sie eine YAML-Datei für die Arbeitslastclusterkonfiguration und fügen Sie das folgende Feld hinzu:
AVI_LABELS: '{"nsx-alb-node-port-l7":"true"}'
Stellen Sie den Arbeitslastcluster mit dem Befehl tanzu cluster create
bereit.
Weitere Informationen zur Bereitstellung von Arbeitslastclustern auf vSphere finden Sie unter Erstellen von Arbeitslastclustern.
Der NSX ALB-Ingress-Dienstanbieter ist jetzt für die Verwendung des NodePort-Modus auf Arbeitslastclustern mit AVI_LABELS
konfiguriert, die mit der Clusterauswahl im AKODeploymentConfig-Objekt install-ako-l7-node-port
übereinstimmen.
Im ClusterIP-Modus wird der Netzwerkdatenverkehr vom Client zur NSX ALB SE und dann zu den Pods weitergeleitet. Dieser Modus erfordert ClusterIP als Ingress-Backend-Diensttyp. Die NSX ALB SE leitet den Datenverkehr mithilfe der statischen Routen an die Pods weiter.
Das folgende Diagramm beschreibt, wie der Netzwerkdatenverkehr im ClusterIP
-Modus weitergeleitet wird:
Der ClusterIP-Modus vereinfacht den Netzwerkdatenverkehr, indem er direkt von der SE zu den Pods weitergeleitet wird. Dieser Modus verhindert auch die Offenlegung der Ports in einem Cluster. In diesem Modus können SEs jedoch nicht von Clustern gemeinsam genutzt werden, da eine SE an einen Cluster angehängt werden muss.
So aktivieren Sie diese Funktion:
Erstellen Sie ein AKODeploymentConfig
-CR-Objekt wie folgt:
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
Wenden Sie die Änderungen auf den Verwaltungscluster an:
kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-cluster-ip.yaml
Um den ClusterIP-Ingress-Modus auf den Arbeitslastclustern zu aktivieren, erstellen Sie eine YAML-Datei für die Arbeitslastclusterkonfiguration und fügen Sie das folgende Feld hinzu:
AVI_LABELS: '{"nsx-alb-cluster-ip-l7":"true"}'
Stellen Sie den Arbeitslastcluster mit dem Befehl tanzu cluster create
bereit.
Weitere Informationen zur Bereitstellung von Arbeitslastclustern auf vSphere finden Sie unter Erstellen von Arbeitslastclustern.
Der NSX ALB-Ingress-Dienstanbieter ist jetzt für die Verwendung des ClusterIP-Modus auf Arbeitslastclustern mit AVI_LABELS
konfiguriert, die mit der Clusterauswahl im AKODeploymentConfig-Objekt install-ako-l7-cluster-ip
übereinstimmen.
Um den ClusterIP-Ingress-Modus auf anderen Arbeitslastclustern zu aktivieren, müssen Sie eine neue SE im Avi-Controller erstellen und dann ein neues AKODeploymentConfig
-Objekt erstellen, das den Namen der neuen SE angibt, bevor die Datei auf den Verwaltungscluster angewendet wird.
Wenn Sie Antrea als CNI verwenden, können Sie den NodePortLocal-Ingress-Modus auf NSX ALB aktivieren. Dadurch wird die NodePortLocal-Funktion von Antrea genutzt, um den Datenverkehr direkt von der SE an den Pod weiterzuleiten. In diesem Modus wird der Netzwerkdatenverkehr vom Client zur NSX ALB SE und dann zu den Pods weitergeleitet. Dieser Modus erfordert ClusterIP als Ingress-Backend-Typ. Darüber hinaus muss die Konfigurationsvariable ANTREA_NODEPORTLOCAL
in Tanzu Kubernetes Grid auf true
festgelegt werden. Weitere Informationen zur NodePortLocal-Funktion in Antrea finden Sie unter NodePortLocal (NPL) in der Antrea-Dokumentation.
Das folgende Diagramm beschreibt, wie der Netzwerkdatenverkehr im NodePortLocal
-Modus weitergeleitet wird:
Der Modus NodePortLocal
vereinfacht den Netzwerkdatenverkehr, indem er direkt von der SE zu den Pods weitergeleitet wird. Dieser Modus unterstützt gemeinsam genutzte SEs für die Cluster und verhindert die Offenlegung der Ports in einem Cluster.
So konfigurieren Sie den NodePortLocal-Ingress-Modus auf einem vorhandenen Verwaltungscluster:
Erstellen Sie ein AKODeploymentConfig
-CR-Objekt wie folgt:
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
Wenden Sie die Änderungen auf den Verwaltungscluster an:
kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-node-port-local.yaml
Um den NodePortLocal-Ingress-Modus auf den Arbeitslastclustern zu aktivieren, erstellen Sie eine YAML-Datei für die Arbeitslastclusterkonfiguration und fügen Sie das folgende Feld hinzu:
AVI_LABELS: '{"nsx-alb-node-port-local-l7":"true"}'
ANTREA_NODEPORTLOCAL: "true"
Stellen Sie den Arbeitslastcluster mit dem Befehl tanzu cluster create
bereit.
Der NSX ALB-Ingress-Dienstanbieter ist jetzt für die Verwendung des NodePortLocal-Modus auf Arbeitslastclustern mit AVI_LABELS
konfiguriert, die mit der Clusterauswahl im AKODeploymentConfig-Objekt install-ako-l7-node-port-local
übereinstimmen.
Nur der NodePort-Ingress-Modus wird im Verwaltungscluster unterstützt, wenn Sie NSX ALB als VIP-Anbieter für Cluster-Endpoints verwenden. Wenn Sie NSX ALB nicht als VIP-Anbieter für Cluster-Endpoints verwenden, werden alle drei Ingress-Modi unterstützt.
So aktivieren Sie L7-Ingress im Verwaltungscluster:
Bearbeiten Sie die Datei AKODeploymentConfig
im Verwaltungscluster:
kubectl --context=MGMT-CLUSTER-CONTEXT edit adc install-ako-for-management-cluster
Ändern Sie in der Datei, die geöffnet wird, das Feld spec.extraConfigs.ingress
, wie im folgenden Beispiel gezeigt:
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