Partager via


Configurer kube-proxy dans Azure Kubernetes Service (AKS) (préversion)

kube-proxy est un composant de Kubernetes qui gère le routage du trafic pour les services au sein du cluster. Deux back-ends sont disponibles pour l’équilibrage de charge de couche 3/4 en amont kube-proxy : iptables et IPVS.

  • iptables est le serveur principal par défaut utilisé dans la majorité des clusters Kubernetes. Il est simple et bien pris en charge, mais n’est pas aussi efficace ni intelligent qu’IPVS.
  • IPVS utilise le serveur virtuel Linux, un équilibreur de charge de couche 3/4 intégré au noyau Linux. IPVS offre un certain nombre d’avantages par rapport à la configuration iptables par défaut, notamment la reconnaissance de l’état, le suivi des connexions et un équilibrage de charge plus intelligent. IPVS ne prend pas en charge Azure Network Policy.

Pour plus d’informations, consultez la documentation de Kubernetes sur kube-proxy.

Remarque

Si vous le souhaitez, vous pouvez désactiver le DaemonSet kube-proxy géré par AKS pour prendre en charge bring-your-own CNI.

Important

Les fonctionnalités d’évaluation AKS sont disponibles en libre-service et font l’objet d’un abonnement. Les préversions sont fournies « en l’état » et « en fonction des disponibilités », et sont exclues des contrats de niveau de service et de la garantie limitée. Les préversions AKS sont, dans la mesure du possible, partiellement couvertes par le service clientèle. Telles quelles, ces fonctionnalités ne sont pas destinées à une utilisation en production. Pour plus d’informations, consultez les articles de support suivants :

Avant de commencer

Installer l’extension Azure CLI aks-preview

  1. Installez l'extension aks-preview à l'aide de la commande az extension add.

    az extension add --name aks-preview
    
  2. Mettez à jour vers la dernière version de l’extension à l’aide de la commande az extension update.

    az extension update --name aks-preview
    

Inscrire l’indicateur de fonctionnalité KubeProxyConfigurationPreview

  1. Inscrivez l’indicateur de fonctionnalité KubeProxyConfigurationPreview à l’aide de la commande az feature register.

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

    Quelques minutes sont nécessaires pour que l’état s’affiche Registered (Inscrit).

  2. Vérifiez l’état de l’inscription en utilisant la commande az feature show.

    az feature show --namespace "Microsoft.ContainerService" --name "KubeProxyConfigurationPreview"
    
  3. Quand l’état reflète Inscrit, actualisez l’inscription du fournisseur de ressources Microsoft.ContainerService à l’aide de la commande az provider register.

    az provider register --namespace Microsoft.ContainerService
    

Options de configuration de kube-proxy

Vous pouvez afficher la structure de configuration complète kube-proxy dans le schéma de cluster AKS.

  • enabled : détermine le déploiement du DaemonSet kube-proxy. La valeur par défaut est true.
  • mode : vous pouvez le définir sur IPTABLES ou IPVS. La valeur par défaut est IPTABLES.
  • ipvsConfig : si mode a la valeur IPVS, cet objet contient des propriétés de configuration spécifiques à IPVS.
    • scheduler : détermine le planificateur de connexion à utiliser. Les valeurs
      • LeastConnection envoie les connexions au pod back-end avec le moins de connexions.
      • RoundRobin : répartit uniformément les connexions entre les pods back-end.
    • tcpFinTimeoutSeconds : définit la valeur de délai d’expiration après qu’une session TCP a reçu un FIN.
    • tcpTimeoutSeconds : définit la valeur de délai d’expiration pour les sessions TCP inactives.
    • udpTimeoutSeconds : définit la valeur de délai d’expiration pour les sessions UDP inactives.

Remarque

L’équilibrage de charge IPVS fonctionne dans chaque nœud indépendamment et ne prend en compte que les connexions transitant par le nœud local. Cela signifie que, bien que LeastConnection donne une charge plus équilibrée avec un nombre plus élevé de connexions, lorsque le nombre de connexions est faible (nombre de connexions < 2 X nombre de nœuds), le trafic peut être relativement déséquilibré.

Utiliser kube-proxy dans un cluster AKS nouveau ou existant

La configuration kube-proxy est un paramètre à l’échelle du cluster. Vous n’avez pas besoin de mettre vos services à jour.

Avertissement

La modification de la configuration kube-proxy peut entraîner une légère interruption du flux de trafic de service du cluster.

  1. Créez un fichier de configuration avec la configuration kube-proxy souhaitée. Par exemple, la configuration suivante active IPVS avec le planificateur LeastConnection et définit le délai d’attente TCP sur 900 secondes.

    {
      "enabled": true,
      "mode": "IPVS",
      "ipvsConfig": {
        "scheduler": "LeastConnection",
        "TCPTimeoutSeconds": 900,
        "TCPFINTimeoutSeconds": 120,
        "UDPTimeoutSeconds": 300
      }
    }
    
  2. Créez un cluster ou mettez à jour un cluster existant avec le fichier de configuration à l’aide de la commande az aks create ou az aks update avec le paramètre --kube-proxy-config défini sur le fichier de configuration.

    # 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
    

Étapes suivantes

Cet article explique comment configurer kube-proxy dans Azure Kubernetes Service (AKS). Pour en savoir plus sur l’équilibrage de charge dans AKS, consultez les articles suivants :