Compartir a través de


Uso de un equilibrador de carga estándar público en Azure Kubernetes Service (AKS)

Azure Load Balancer opera en una capa 4 del modelo de Interconexión de sistemas abiertos (OSI) que admite escenarios de entrada y de salida. Distribuye flujos de entrada que llegan al front-end del equilibrador de carga a las instancias del grupo de servidores back-end.

Una equilibrador de carga público integrado con AKS tiene dos propósitos:

  • Proporcione conexiones salientes a los nodos del clúster dentro de la red virtual (VNet) de AKS mediante la traducción de la dirección IP privada a una parte de la dirección IP pública de su grupo de salida.
  • Proporcione acceso a las aplicaciones a través de servicios de Kubernetes de tipo LoadBalancer, lo que le permite escalar fácilmente las aplicaciones y crear servicios de alta disponibilidad.

En este artículo se trata la integración con un equilibrador de carga público en AKS. Para la integración interna de Load Balancer, consulte Uso de un equilibrador de carga interno de AKS.

Prerrequisitos

Important

Si prefiere usar su propia puerta de enlace, firewall o proxy para proporcionar una conexión de salida, puede omitir la creación del grupo de salida del equilibrador de carga y el IP del front-end respectivo si usa el tipo de salida como UserDefinedRouting (UDR). El tipo de salida define el método de salida para un clúster y su valor predeterminado es el tipo LoadBalancer.

Limitations

Las siguientes limitaciones se aplican al crear y administrar clústeres de AKS que admiten un equilibrador de carga con la SKU estándar:

  • AKS administra el ciclo de vida y las operaciones de los nodos de agente. No se admite la modificación de los recursos de IaaS asociados a los nodos de agente. Un ejemplo de una operación no admitida sería realizar cambios manuales en el grupo de recursos del equilibrador de carga.

  • Se requiere al menos una dirección IP pública o un prefijo de dirección IP pública para permitir el tráfico de salida del clúster de AKS. Esta dirección IP o el prefijo de dirección IP pública son necesarios para mantener la conectividad entre el plano de control y los nodos de agente, así como para mantener la compatibilidad con versiones anteriores de AKS. Tiene las siguientes opciones para especificar direcciones IP públicas o prefijos IP con un equilibrador de carga de SKU estándar :

    • Proporcione sus propias IP públicas.
    • Proporcione sus propios prefijos de dirección IP pública.
    • Especifique un número hasta 100 para permitir que el clúster de AKS cree esa cantidad de direcciones IP públicas de SKU estándar en el mismo grupo de recursos que el clúster de AKS. Normalmente, este grupo de recursos se denomina con MC_ al principio. AKS asigna la dirección IP pública al equilibrador de carga de SKU estándar. Por defecto, se crea automáticamente una IP pública en el mismo grupo de recursos que el clúster AKS si no se especifica ninguna IP pública, prefijo de IP pública o número de IP. Asimismo, debe permitir las direcciones públicas y evitar la creación de cualquier directiva de Azure que prohíba la creación de direcciones IP.
  • Una dirección IP pública creada por AKS no se puede reutilizar como una dirección IP pública "bring your own" (BYO) personalizada. Debe crear y administrar todas las direcciones IP personalizadas.

  • Solo puede definir la SKU del equilibrador de carga al crear un clúster de AKS. No se puede cambiar la SKU del equilibrador de carga una vez creado un clúster de AKS.

  • Solo se puede usar un tipo de SKU de equilibrador de carga (básica o estándar) en un único clúster.

  • Los equilibradores de carga de SKU estándar solo admiten direcciones IP de SKU estándar.

  • El servicio Private Link no se admite cuando el tipo de grupo de back-end del equilibrador de carga está establecido en nodeIP.

Creación de un servicio de equilibrador de carga en AKS

Después de crear un clúster de AKS con el tipo de salida LoadBalancer (valor predeterminado), el clúster está listo para usar el equilibrador de carga para exponer los servicios.

  • Cree un manifiesto de servicio denominado public-svc.yaml, que crea un servicio público de tipo LoadBalancer.

    apiVersion: v1
    kind: Service
    metadata:
      name: public-svc
    spec:
      type: LoadBalancer
      ports:
      - port: 80
      selector:
        app: public-app
    

Especifique la dirección IP del equilibrador de carga

Si desea usar una dirección IP específica con el equilibrador de carga, tiene dos opciones para especificar la dirección IP:

  • Establecer anotaciones de servicio (recomendado): use service.beta.kubernetes.io/azure-load-balancer-ipv4 para una dirección IPv4 y service.beta.kubernetes.io/azure-load-balancer-ipv6 para una dirección IPv6.
  • Agregue la propiedad LoadBalancerIP al manifiesto YAML del equilibrador de carga: agregue la Service.Spec.LoadBalancerIP propiedad al manifiesto YAML del equilibrador de carga. Este campo está en desuso después de Kubernetes ascendente y no puede admitir la pila doble. El uso actual sigue siendo el mismo y se espera que los servicios existentes funcionen sin modificaciones.

Implementación del manifiesto de servicio del equilibrador de carga

  1. Para implementar el manifiesto de servicio público, use kubectl apply y especifique el nombre del manifiesto de YAML.

    kubectl apply -f public-svc.yaml
    

    El Azure Load Balancer se configura con una nueva IP pública que da frente al nuevo servicio. Dado que el Azure Load Balancer puede tener varias IP de frontend, cada nuevo servicio que implemente obtendrá una nueva IP de frontend dedicada a la que se accederá de forma exclusiva.

  2. Confirme que se crea el servicio y que el equilibrador de carga está configurado mediante el kubectl get service comando .

    kubectl get service public-svc
    

    Al ver los detalles del servicio, la dirección IP pública creada para este servicio en el equilibrador de carga se muestra en la columna EXTERNAL-IP de la salida. Probablemente la dirección IP tarde unos minutos en cambiar de <pendiente> a una dirección IP pública real. En la salida del ejemplo siguiente se muestra la creación exitosa del servicio.

    NAMESPACE     NAME          TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)         AGE
    default       public-svc    LoadBalancer   10.0.39.110    203.0.113.187   80:32068/TCP    52s
    
  3. Obtenga información más detallada sobre el servicio mediante el kubectl describe service comando .

    kubectl describe service public-svc
    

    La siguiente salida de ejemplo es una versión condensada de la salida después de ejecutar kubectl describe service. LoadBalancer Ingress muestra la dirección IP externa expuesta por el servicio. IP muestra las direcciones internas.

    Name:                        public-svc
    Namespace:                   default
    Labels:                      <none>
    Annotations:                 <none>
    Selector:                    app=public-app
    ...
    IP:                          10.0.39.110
    ...
    LoadBalancer Ingress:        203.0.113.187
    ...
    TargetPort:                  80/TCP
    NodePort:                    32068/TCP
    ...
    Session Affinity:            None
    External Traffic Policy:     Cluster
    ...
    

Paso siguiente