Comparteix a través de


Configuración del equilibrador de carga de servicio en el servicio Kubernetes Nexus de Azure Operator

En este artículo, aprenderá a configurar un equilibrador de carga de servicio en un clúster de Nexus Kubernetes. El equilibrador de carga permite que los servicios externos accedan a los servicios que se ejecutan en el clúster. El enfoque de esta guía se centra en los aspectos de configuración, proporcionando ejemplos que le ayudarán a comprender el proceso. Al seguir esta guía, podrá configurar eficazmente los equilibradores de carga de servicio en el clúster de Nexus Kubernetes.

Requisitos previos

Antes de continuar con esta guía paso a paso, se recomienda que:

  • Consulte la guía de inicio rápido del clúster de Nexus Kubernetes para obtener información general completa y pasos implicados.
  • Asegúrese de cumplir los requisitos previos descritos para garantizar una implementación fluida de la guía.
  • Conocimientos de los conceptos de Kubernetes, incluidas las implementaciones y los servicios.
  • Póngase en contacto con el administrador de red para adquirir un intervalo de direcciones IP que se puede usar para el grupo de direcciones IP del equilibrador de carga.

Limitaciones

  • La configuración del grupo de IP es inmutable: una vez establecida, no se puede modificar en un clúster de Nexus Kubernetes.
  • Los nombres del grupo de DIRECCIONES IP deben comenzar con una letra minúscula o un dígito y terminar con una letra o dígito en minúsculas.
  • Los nombres de grupo de IP no deben superar los 63 caracteres para evitar posibles problemas o restricciones.
  • Los grupos de direcciones IP no deben superponerse con el CIDR de POD existente, el CIDR de servicio o el prefijo CNI para evitar conflictos y problemas de red dentro del clúster.

Importante

Estas instrucciones son para crear un nuevo clúster de Nexus Kubernetes. Evite aplicar la plantilla de Bicep a un clúster existente, ya que la configuración del grupo de DIRECCIONES IP es inmutable. Una vez creado un clúster con la configuración del grupo de IP, no se puede modificar.

Opciones de configuración

Antes de configurar el grupo de direcciones IP para el equilibrador de carga del servicio, es importante comprender las distintas opciones de configuración disponibles. Estas opciones permiten definir el comportamiento y los parámetros del grupo de direcciones IP según sus requisitos específicos.

Vamos a explorar las opciones de configuración del grupo de direcciones IP.

Parámetros obligatorios

La configuración del grupo de direcciones IP requiere la presencia de dos campos: addresses y name. Estos campos son esenciales para definir el intervalo de direcciones IP e identificar el grupo.

  • El addresses campo especifica la lista de intervalos de direcciones IP que se pueden usar para la asignación dentro del grupo. Puede definir cada intervalo como una subred en formato CIDR. Evite usar una sola dirección IP, como /32 para IPv4 y /128 para IPv6.
  • El name campo actúa como identificador único para el grupo de direcciones IP. Ayuda a asociar el grupo con un anuncio de BGP (Protocolo de puerta de enlace de borde), lo que permite una comunicación eficaz dentro del clúster.

Nota:

Para permitir que el servicio Kubernetes LoadBalancer tenga una dirección de pila doble, asegúrese de que la configuración del grupo de IP incluye CIDR IPv4 e IPv6.

Parámetros opcionales

Además de los campos obligatorios, también hay campos opcionales disponibles para una mayor personalización de la configuración del grupo de direcciones IP.

  • El autoAssign campo determina si las direcciones IP se asignan automáticamente desde el grupo. Este campo es un string tipo con un valor predeterminado de True. Puede establecerlo True en o False en función de sus preferencias.
  • El onlyUseHostIps campo controla el uso de direcciones IP que terminan con .0 y .255 dentro del grupo. Al habilitar esta opción, se restringe el uso a direcciones IP entre .1 y .254 (inclusive), excepto las direcciones reservadas de red y difusión.

Parámetros de plantilla de Bicep para la configuración del grupo de direcciones IP

El siguiente fragmento de código JSON muestra los parámetros necesarios para configurar el grupo de direcciones IP en la plantilla de Bicep.

"ipAddressPools": {
  "value": [
    {
      "addresses": ["<IP>/<CIDR>"],
      "name": "<pool-name>",
      "autoAssign": "True",  /* "True"/"False" */
      "onlyUseHostIps": "True"  /* "True"/"False" */
    }
  ]
}

Para agregar la configuración del grupo de DIRECCIONES IP al clúster, debe actualizar el kubernetes-deploy-parameters.json archivo que creó durante el inicio rápido. Incluya la configuración del grupo de DIRECCIONES IP en este archivo según la configuración deseada.

Después de agregar la configuración del grupo de IP al archivo de parámetros, puede continuar con la implementación de la plantilla de Bicep. Esta acción configura el nuevo clúster con la configuración del grupo de direcciones IP especificada, lo que le permite usar el grupo de direcciones IP según lo previsto.

Siguiendo estas instrucciones, puede crear un nuevo clúster de Nexus Kubernetes con la configuración del grupo de DIRECCIONES IP deseado y aprovechar el grupo de direcciones IP para los servicios de clúster.

Parámetros de ejemplo

Este archivo de parámetros está diseñado para usarse con la plantilla de Bicep de la guía de inicio rápido para crear un clúster con el equilibrador de carga BGP habilitado. Contiene los valores de configuración necesarios para configurar el clúster con la funcionalidad del equilibrador de carga BGP. Mediante el uso de este archivo de parámetros con la plantilla de Bicep, puede crear un clúster con las funcionalidades deseadas del equilibrador de carga BGP.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "kubernetesClusterName":{
      "value": "lb-test-cluster"
    },
    "adminGroupObjectIds": {
      "value": [
        "00000000-0000-0000-0000-000000000000"
      ]
    },
    "cniNetworkId": {
      "value": "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/l3Networks/<l3Network-name>"
    },
    "cloudServicesNetworkId": {
      "value": "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/cloudServicesNetworks/<csn-name>"
    },
    "extendedLocation": {
      "value": "/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
    },
    "location": {
      "value": "eastus"
    },
    "sshPublicKeys": {
      "value": [
        {
          "keyData": "ssh-rsa AAAAB..."
        },
        {
          "keyData": "ssh-rsa AAAAC..."
        }
      ]
    },
    "ipAddressPools": {
      "value": [
        {
          "addresses": ["<IP>/<CIDR>"],
          "name": "<pool-name>",
          "autoAssign": "True",
          "onlyUseHostIps": "True"
        }
      ]
    }
  }
}

Nota:

Si tiene previsto crear un servicio DualStack, asegúrese de que el grupo de direcciones contiene un CIDR IPv4 y un CIDR IPv6. Esto permite admitir simultáneamente direcciones IPv4 e IPv6 en la configuración del equilibrador de carga.

Ejemplo: Asignación de direcciones IP estáticas para un servicio

Para asignar una dirección IP estática para un servicio, puede usar los siguientes comandos.

de una implementación

kubectl create deployment nginx --image=nginx --port 80

Asignación de IP estática (LoadBalancerIP)

kubectl expose deployment nginx \
    --name nginx-loadbalancer-pool1-static \
    --type LoadBalancer \
    --load-balancer-ip <IP from pool-1>

Reemplace por <IP from pool-1> la dirección IP deseada del grupo de DIRECCIONES IP.

Asignación de IP estática (ExternalIP)

kubectl expose deployment nginx \
    --name nginx-clusterip-pool1-static \
    --type ClusterIP \
    --external-ip <IP from pool-1>

Reemplace por <IP from pool-1> la dirección IP deseada del grupo de DIRECCIONES IP.

Ejemplo: asignación de direcciones IP para un servicio desde un grupo de DIRECCIONES IP específico

Para asignar una dirección IP para un servicio desde un grupo de DIRECCIONES IP específico, puede usar el siguiente comando.

kubectl expose deployment nginx \
    --name nginx-loadbalancer-pool2-auto \
    --type LoadBalancer \
    --overrides '{"metadata":{"annotations":{"metallb.universe.tf/address-pool":"pool-2"}}}'

Este comando asigna una dirección IP al servicio desde el grupo pool-2de DIRECCIONES IP. Ajuste el nombre del grupo según sea necesario. Antes de probar estos ejemplos, asegúrese de que ya ha creado un clúster de Nexus Kubernetes con dos grupos de direcciones IP diferentes. Si no lo ha hecho, siga los pasos necesarios para crear el clúster y configurar los grupos de DIRECCIONES IP en consecuencia.

Nota:

El nombre del grupo de direcciones IP distingue mayúsculas de minúsculas. Asegúrese de usar el caso correcto al especificar el nombre del grupo.

Pasos siguientes

Puede intentar implementar una función de red (NF) en el clúster de Nexus Kubernetes mediante el equilibrador de carga recién configurado. Esta configuración permite probar las funcionalidades de equilibrio de carga y observar cómo se distribuye el tráfico entre las instancias de NF.