Leer en inglés

Compartir a través de


Configure kube-proxy en Azure Kubernetes Service (AKS) (versión preliminar)

kube-proxy es un componente de Kubernetes que controla el enrutamiento del tráfico de los servicios dentro del clúster. Hay dos back-end disponibles para el equilibrio de carga de nivel 3/4 en kube-proxy ascendente: iptables e IPVS.

  • iptables es el back-end predeterminado utilizado en la mayoría de los clústeres de Kubernetes. Es sencillo y bien compatible, pero no es tan eficaz o inteligente como IPVS.
  • IPVS utiliza el servidor virtual Linux, un equilibrador de carga de nivel 3/4 integrado en el kernel de Linux. IPVS proporciona una serie de ventajas sobre la configuración predeterminada de iptables, incluido el reconocimiento del estado, el seguimiento de conexiones y el equilibrio de carga más inteligente. IPVS no admite Azure Network Policy.

Para más información, consulte la Documentación de Kubernetes sobre kube-proxy.

Nota

Si lo desea, puede deshabilitar el DaemonSet kube-proxy administrado por AKS para que admita CNI propio.

Importante

Las características en versión preliminar de AKS están disponibles como opción de participación y autoservicio. Las versiones preliminares se proporcionan "tal cual" y "como están disponibles", y están excluidas de los Acuerdos de nivel de servicio y garantía limitada. Las versiones preliminares de AKS reciben cobertura parcial del soporte al cliente en la medida de lo posible. Por lo tanto, estas características no están diseñadas para su uso en producción. Para más información, consulte los siguientes artículos de soporte:

Antes de empezar

Instalación de la extensión de la CLI de Azure aks-preview

  1. Instale la extensión aks-preview mediante el comando az extension add.

    az extension add --name aks-preview
    
  2. Actualiza a la última versión de la extensión mediante el comando az extension update.

    az extension update --name aks-preview
    

Registro de la marca de característica KubeProxyConfigurationPreview

  1. Registre la marca de características de KubeProxyConfigurationPreview mediante el comando az feature register.

    az feature register --namespace "Microsoft.ContainerService" --name "KubeProxyConfigurationPreview"
    

    Tarda unos minutos en que el estado muestre Registrado.

  2. Comprobar el estado del registro mediante el comando az feature show.

    az feature show --namespace "Microsoft.ContainerService" --name "KubeProxyConfigurationPreview"
    
  3. Cuando aparezca el estado Registrado, actualice el registro del proveedor de recursos Microsoft.ContainerService mediante el comando az provider register.

    az provider register --namespace Microsoft.ContainerService
    

Opciones de configuración de kube-proxy

La estructura de configuración completa de kube-proxy se puede encontrar en el esquema de clúster de AKS.

  • enabled: determina la implementación del DaemonSet de kube-proxy. Tiene como valor predeterminado true.
  • mode: puede establecer IPTABLES o IPVS. Tiene como valor predeterminado IPTABLES.
  • ipvsConfig: si mode es IPVS, este objeto contiene propiedades de configuración específicas de IPVS.
    • scheduler: determina el programador de conexiones que se va a usar. Los valores admitidos incluyen ,
      • LeastConnection: envía las conexiones al pod de back-end con menos conexiones.
      • RoundRobin: distribuye las conexiones uniformemente entre pods de back-end.
    • tcpFinTimeoutSeconds: establece el valor de longitud de tiempo de espera después de que una sesión TCP reciba un FIN.
    • tcpTimeoutSeconds: establece el valor de longitud de tiempo de espera para las sesiones TCP inactivas.
    • udpTimeoutSeconds: establece el valor de longitud de tiempo de espera para las sesiones UDP inactivas.

Nota

El equilibrio de carga IPVS funciona en cada nodo de forma independiente y solo es consciente de las conexiones que fluyen a través del nodo local. Esto significa que, aunque LeastConnection da lugar a una carga más uniforme bajo un mayor número de conexiones, cuando hay un número bajo de conexiones (# conexiones < 2 * recuento de nodos) el tráfico puede estar relativamente desequilibrado.

Use kube-proxy en un clúster de AKS nuevo o ya existente.

La configuración de kube-proxy es una configuración para todo el clúster. No necesita actualizar sus servicios.

Advertencia

Cambiar la configuración de kube-proxy puede provocar una ligera interrupción en el flujo de tráfico del servicio de clúster.

  1. Cree un archivo de configuración con la configuración de kube-proxy que desee. Por ejemplo, la siguiente configuración habilita IPVS con el programador de LeastConnection y establece el tiempo de espera TCP en 900 segundos.

    {
      "enabled": true,
      "mode": "IPVS",
      "ipvsConfig": {
        "scheduler": "LeastConnection",
        "TCPTimeoutSeconds": 900,
        "TCPFINTimeoutSeconds": 120,
        "UDPTimeoutSeconds": 300
      }
    }
    
  2. Use el comando az aks create o az aks update para crear un nuevo clúster o actualizar uno existente con el archivo de configuración y establezca el parámetro --kube-proxy-config en el archivo de configuración.

    # Create a new cluster
    az aks create \
        --resource-group <resourceGroup> \
        --name <clusterName> \
        --kube-proxy-config kube-proxy.json \
        --generate-ssh-keys
    
    # Update an existing cluster
    az aks update \
        --resource-group <resourceGroup> \
        --name <clusterName> \
        --kube-proxy-config kube-proxy.json
    

Pasos siguientes

En este artículo se explica cómo configurar kube-proxy en Azure Kubernetes Service (AKS). Para más información sobre el equilibrio de carga en AKS, consulte los artículos siguientes: