Para utilizar NSX Advanced Load Balancer como controlador de entrada en el clúster de Kubernetes, debe tener la versión NSX ALB Enterprise. Si lo prefiere, puede utilizar Contour como controlador de entrada en los clústeres de Tanzu Kubernetes Grid.
Cuando se integra a través de AKO en Tanzu Kubernetes Grid, NSX ALB admite tres modos de entrada: NodePort, ClusterIP y NodePortLocal. Elija un tipo según sus requisitos.
Cuando se elige utilizar el modo NodePort para la entrada de NSX ALB, el servicio back-end de entrada debe ser el modo NodePort. En este tipo, el tráfico de red se enruta desde el cliente hacia el SE NSX ALB y, a continuación, hacia los nodos del clúster, antes de que llegue a los pods. El SE NSX ALB enruta el tráfico a los nodos y kube-proxy
ayuda a enrutar el tráfico desde los nodos hacia los pods de destino.
El siguiente diagrama describe cómo se enruta el tráfico de red en el modo NodePort
:
El modo NodePort admite el uso compartido de un SE NSX ALB entre diferentes clústeres. Sin embargo, este tipo de servicio puede exponer un puerto en el clúster, ya que requiere utilizar el servicio back-end del modo NodePort. También requiere un salto adicional para que kube-proxy
enrute el tráfico del nodo al pod.
Para configurar el modo de entrada de NodePort en el clúster de administración:
Cree un objeto CR AKODeploymentConfig
de la siguiente manera:
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
Aplique los cambios en el clúster de administración:
kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-node-port.yaml
Para habilitar el modo de entrada de NodePort en los clústeres de carga de trabajo, cree un archivo YAML de configuración del clúster de carga de trabajo y agregue el siguiente campo:
AVI_LABELS: '{"nsx-alb-node-port-l7":"true"}'
Implemente el clúster de carga de trabajo mediante el comando tanzu cluster create
.
Para obtener más información sobre la implementación de clústeres de carga de trabajo en vSphere, consulte Crear clústeres de carga de trabajo.
El proveedor de servicios de entrada NSX ALB ahora está configurado para utilizar el modo NodePort en los clústeres de carga de trabajo que tienen AVI_LABELS
que coinciden con el selector de clúster en el objeto AKODeploymentConfig install-ako-l7-node-port
.
En el modo ClusterIP, el tráfico de red se enruta desde el cliente al SE NSX ALB y, a continuación, a los pods. Este modo requiere ClusterIP como el tipo de servicio back-end de entrada. El SE NSX ALB enruta el tráfico a los pods aprovechando las rutas estáticas.
El siguiente diagrama describe cómo se enruta el tráfico de red en el modo ClusterIP
:
El modo ClusterIP simplifica el tráfico de red enrutando el tráfico directamente desde el SE a los pods. Este modo también evita la exposición de los puertos en un clúster de. Sin embargo, en este modo, los SE no se pueden compartir entre clústeres porque se debe asociar un SE a un clúster.
Para habilitar esta función:
Cree un objeto CR AKODeploymentConfig
de la siguiente manera:
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
Aplique los cambios en el clúster de administración:
kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-cluster-ip.yaml
Para habilitar el modo de entrada de ClusterIP en los clústeres de carga de trabajo, cree un archivo YAML de configuración del clúster de carga de trabajo y agregue el siguiente campo:
AVI_LABELS: '{"nsx-alb-cluster-ip-l7":"true"}'
Implemente el clúster de carga de trabajo mediante el comando tanzu cluster create
.
Para obtener más información sobre la implementación de clústeres de carga de trabajo en vSphere, consulte Crear clústeres de carga de trabajo.
El proveedor de servicios de entrada NSX ALB ahora está configurado para utilizar el modo ClusterIP en los clústeres de carga de trabajo que tienen AVI_LABELS
que coinciden con el selector de clúster en el objeto AKODeploymentConfig install-ako-l7-cluster-ip
.
Para habilitar el modo de entrada de ClusterIP en otros clústeres de carga de trabajo, debe crear un nuevo SE en el controlador AVI y, a continuación, crear un nuevo objeto AKODeploymentConfig
especificando el nombre del nuevo SE antes de aplicar el archivo en el clúster de administración.
Si utiliza Antrea como CNI, puede habilitar el modo de entrada NodePortLocal en NSX ALB. Aprovecha la función NodePortLocal de Antrea para enrutar directamente el tráfico del SE al pod. En el modo, el tráfico de red se enruta desde el cliente al SE NSX ALB y, a continuación, a los pods. Este modo requiere ClusterIP como el tipo de back-end de entrada. Además, la variable de configuración ANTREA_NODEPORTLOCAL
debe establecerse en true
en Tanzu Kubernetes Grid. Para obtener más información sobre la función NodePortLocal en Antrea, consulte NodePortLocal (NPL) en la documentación de Antrea.
El siguiente diagrama describe cómo se enruta el tráfico de red en el modo NodePortLocal
:
El modo NodePortLocal
simplifica el tráfico de red enrutando el tráfico de red directamente desde el SE a los pods. Este modo admite SE compartidos para los clústeres e impide la exposición de los puertos en un clúster.
Para configurar el modo de entrada de NodePortLocal en un clúster de administración existente:
Cree un objeto CR AKODeploymentConfig
de la siguiente manera:
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
Aplique los cambios en el clúster de administración:
kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-node-port-local.yaml
Para habilitar el modo de entrada de NodePortLocal en los clústeres de carga de trabajo, cree un archivo YAML de configuración del clúster de carga de trabajo y agregue el siguiente campo:
AVI_LABELS: '{"nsx-alb-node-port-local-l7":"true"}'
ANTREA_NODEPORTLOCAL: "true"
Implemente el clúster de carga de trabajo mediante el comando tanzu cluster create
.
El proveedor de servicios de entrada NSX ALB ahora está configurado para utilizar el modo NodePortLocal en los clústeres de carga de trabajo que tienen AVI_LABELS
que coinciden con el selector de clúster en el objeto AKODeploymentConfig install-ako-l7-node-port-local
.
Solo se admite el modo de entrada de NodePort en el clúster de administración si utiliza NSX ALB como el proveedor de VIP del endpoint del clúster. Si no utiliza NSX ALB como proveedor de VIP de endpoint de clúster, se admiten los tres modos de entrada.
Para habilitar la entrada de capa 7 en el clúster de administración:
Edite el archivo AKODeploymentConfig
en el clúster de administración:
kubectl --context=MGMT-CLUSTER-CONTEXT edit adc install-ako-for-management-cluster
En el archivo que se abre, modifique el campo spec.extraConfigs.ingress
como se muestra en el siguiente ejemplo:
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