Configurer l'équilibrage de charge TCP/UDP

Présentation

Vous pouvez créer un équilibreur de charge TCP/UDP en créant un service avec type: LoadBalancer dans sa spécification. Cette page décrit les paramètres que vous pouvez utiliser pour configurer les services LoadBalancer. Pour plus d'informations spécifiques aux équilibreurs de charge internes, consultez la page Utiliser un équilibreur de charge TCP/UDP interne. Pour plus d'informations spécifiques aux équilibreurs de charge externes, consultez la page Exposer des applications à l'aide de services.

Paramètres de l'objet Service

Les paramètres suivants sont compatibles avec les services LoadBalancer Google Kubernetes Engine (GKE).

Fonctionnalité Résumé Champ de service Compatibilité de la version de GKE
Règle de trafic externe local Détermine si la charge du trafic externe est équilibrée ou non sur les nœuds GKE. spec:externalTrafficPolicy:Local GKE 1.14+
Plages sources d'équilibreur de charge Configure des règles de pare-feu facultatives dans GKE et dans le VPC pour n'autoriser que certaines plages sources. spec:loadBalancerSourceRanges Toutes les versions compatibles
Adresse IP d'équilibreur de charge Spécifie une adresse IP pour les équilibreurs de charge. spec:loadBalancerIP Toutes les versions compatibles
Tous les ports Permet à l'équilibreur de charge TCP/UDP de transférer tous les ports plutôt que des ports spécifiques ND Pas de compatibilité native

Règle de trafic externe

externalTrafficPolicy est une option de l'objet Service standard qui définit comment et si la charge du trafic entrant sur un nœud GKE est équilibrée. Cluster est la règle par défaut, mais Local est souvent utilisée pour conserver l'adresse IP source du trafic entrant dans un nœud de cluster. En effet, Local désactive l'équilibrage de charge sur le nœud du cluster afin que le trafic reçu par un pod local voie l'adresse IP source d'origine.

externalTrafficPolicy est compatible avec les services LoadBalancer internes (via l'équilibreur de charge TCP/UDP), mais le comportement de l'équilibrage de charge dépend de l'origine du trafic et de la règle de trafic configurée.

Le trafic provenant de l'extérieur du cluster vers un équilibreur de charge TCP/UDP présente le comportement suivant s'il y a au moins un pod opérationnel du service dans le cluster :

  • Règle Cluster : la charge du trafic sera équilibrée sur n'importe quel nœud GKE opérationnel du cluster, puis le service kube-proxy l'enverra à un nœud avec le pod.
  • Règle Local : les nœuds qui ne possèdent pas l'un des pods de backend apparaissent comme non opérationnels vers l'équilibreur de charge TCP/UDP. Le trafic ne sera envoyé qu'à l'un des nœuds de cluster opérationnels restants qui disposent du pod. Le trafic n'est pas acheminé à nouveau par le service kube-proxy et sera envoyé directement au pod local avec ses informations d'en-tête d'adresse IP intactes.

Si le trafic vers une adresse IP de service LoadBalancer donnée provient d'un nœud GKE à l'intérieur du cluster, son comportement est différent. Le tableau suivant récapitule le comportement du trafic provenant d'un nœud ou d'un pod à l'intérieur du cluster et destiné à un pod membre d'un service LoadBalancer :

externalTrafficPolicy Le pod membre de l'objet Service s'exécute-t-il sur le même nœud que celui d'où provient le trafic ? Comportement du trafic
Cluster Oui Les paquets sont transmis à tout pod membre, soit sur le même nœud, soit sur un nœud différent.
Cluster Non Les paquets sont transmis à tout pod membre, qui doit se trouver sur un nœud différent.
Local Oui Les paquets sont transmis à tout pod membre sur le même nœud.
Local Non

Kubernetes 1.14 et versions antérieures : les paquets sont supprimés.

Kubernetes 1.15 et versions ultérieures : les paquets sont transmis à tout pod membre, qui doit se trouver sur un nœud différent.

Plages sources d'équilibreur de charge

Le tableau spec: loadBalancerSourceRanges spécifie une ou plusieurs plages d'adresses IP internes. loadBalancerSourceRanges limite le trafic qui transite par l'équilibreur de charge aux adresses IP spécifiées dans ce champ. Avec cette configuration, kube-proxy crée les règles iptables correspondantes dans les nœuds Kubernetes. GKE crée également automatiquement une règle de pare-feu dans votre réseau VPC. Si vous omettez de renseigner ce champ, votre objet Service accepte le trafic provenant de n'importe quelle adresse IP (0.0.0.0/0).

Pour en savoir plus sur la spécification de l'objet Service, consultez la documentation de référence de l'API Service.

Adresse IP d'équilibreur de charge

Le paramètre spec: loadBalancerIP vous permet de choisir une adresse IP spécifique pour l'équilibreur de charge. L'adresse IP ne doit pas être utilisée par un autre équilibreur de charge TCP/UDP interne ou un autre objet Service. Par défaut, une adresse IP éphémère est attribuée. Pour plus d'informations, consultez la page Réserver une adresse IP interne statique.

Tous les ports

Si vous créez un équilibreur de charge TCP/UDP interne à l'aide d'un service annoté, il est impossible de configurer une règle de transfert qui utilise tous les ports. Toutefois, en procédant manuellement, vous pouvez choisir le groupe d'instances de vos nœuds Google Kubernetes Engine comme backend. Les services Kubernetes de type: NodePort sont disponibles via l'ILB.

Étape suivante