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 réseau interne à stratégie directe.
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 de Google Kubernetes Engine (GKE).
Caractéristique | Résumé | Champ de service | Compatibilité de la version de GKE |
---|---|---|---|
Règle de trafic interne | Permet aux restrictions de trafic interne de n'acheminer que le trafic interne vers les points de terminaison du nœud d'origine du trafic. Ce paramètre n'est pas compatible avec les clusters exécutant GKE Dataplane V2. | spec:internalTrafficPolicy |
GKE 1.22+ |
Règle de trafic externe | Détermine si la charge du trafic externe est équilibrée ou non sur les nœuds GKE. | spec:externalTrafficPolicy |
GKE 1.14+ (1.23.4-gke.400+ pour le pool de nœuds Windows) |
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 | Non disponible | Pour les équilibreurs de charge réseau internes à stratégie directe, compatible avec le sous-paramètre. Pour les équilibreurs de charge externes, cette fonctionnalité est compatible avec toutes les versions. |
Niveaux de service réseau | Indiquez le niveau de réseau qu'un équilibreur de charge Google Cloud doit utiliser. Les valeurs valides sont Standard et Premium (par défaut). |
metadata:annotations:cloud.google.com/network-tier |
GKE 1.19+ |
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 ou externes. 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 en cours d'utilisation par un autre service ou équilibreur de charge réseau interne à stratégie directe. 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.
Si l'adresse IP dans spec: loadBalancerIP
est une adresse IP de niveau standard, l'annotation cloud.google.com/network-tier
avec la valeur Standard
est obligatoire, car Google Kubernetes Engine doit créer une règle de transfert avec le même niveau de réseau que l'adresse IP spécifiée.
Depuis Google Kubernetes Engine 1.17+, le niveau de réseau par défaut pour la création de règles de transfert est Premium
, quel que soit le niveau de réseau par défaut du projet.
Tous les ports
Le contrôleur GKE définit automatiquement le champ "allPorts" dans la règle de transfert si la spécification de service comporte au moins cinq ports dans les versions 1.20.6 et ultérieures, ou les versions 1.21 et ultérieures, de GKE. Ce comportement est également disponible dans les versions 1.18 et ultérieures de GKE, ainsi que dans les versions 1.19 et ultérieures si vous activez le sous-paramètre d'équilibreur de charge réseau interne à stratégie directe sur le cluster.
Si vous créez manuellement un équilibreur de charge réseau interne à stratégie directe, 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'équilibreur de charge réseau interne à stratégie directe.
Niveaux de service réseau
L'annotation cloud.google.com/network-tier
spécifie le niveau de service réseau à utiliser pour la règle de transfert externe et l'adresse IP dans les versions 1.19 et ultérieures de GKE. Standard et Premium sont des valeurs valides. La valeur par défaut est Premium.
Cette annotation n'est compatible qu'avec les équilibreurs de charge externes.
Étape suivante
- Lisez la présentation du réseau GKE.
- Obtenez plus d'informations sur les équilibreurs de charge Compute Engine.
- Apprenez-en plus sur les équilibreurs de charge internes.
- Découvrez comment exposer des applications en externe à l'aide de services.