Cette page décrit les quotas et limites de GKE sur Bare Metal version 1.28 pour les projets, clusters et nœuds Google Cloud.
Limites
Les sections suivantes décrivent certaines limites de base pour vos clusters. Tenez compte de ces limites lorsque vous concevez vos applications pour qu'elles s'exécutent sur GKE sur une solution Bare Metal.
Nombre maximal de clusters d'utilisateur par cluster d'administrateur
Les clusters d'administrateur gèrent le cycle de vie des clusters d'utilisateur et des nœuds associés. Les clusters d'administrateur contrôlent les opérations critiques des clusters d'utilisateur, telles que la création, la réinitialisation, la mise à niveau et la mise à jour du cluster. Le nombre total de nœuds de cluster d'utilisateur est l'un des principaux facteurs limitant les performances et la fiabilité.
D'après les tests en cours, un cluster d'administrateur peut gérer de manière fiable un maximum de 100 clusters d'utilisateur comportant 10 nœuds chacun,soit un total de 1 000 nœuds.
Nombre maximal de pods par cluster d'utilisateur
Nous vous recommandons de limiter le nombre de pods par cluster d'utilisateur à 15 000 ou moins. Par exemple, si votre cluster comporte 200 nœuds, vous devez limiter le nombre de pods par nœud à 75 ou moins. De même, si vous souhaitez exécuter 110 pods par nœud, vous devez limiter le nombre de nœuds de votre cluster à 136 ou moins. Le tableau suivant fournit des exemples de configurations qui sont recommandées ou non.
Nombre de pods par nœud | Nœuds par cluster | Nombre de pods par cluster | Résultat |
---|---|---|---|
110 | 200 | 22 000 | Trop de pods, non recommandé |
110 | 136 | 14 960 | Compris dans la limite |
100 | 150 | 15 000 | Compris dans la limite |
75 | 200 | 15 000 | Compris dans la limite |
La recommandation concernant le nombre maximal de pods par cluster d'utilisateur est prioritaire sur les recommandations de pods par nœud et de nœuds par cluster d'utilisateur dans les sections suivantes.
Nombre maximal de nœuds par cluster d'utilisateur
Nous testons GKE sur une solution Bare Metal pour exécuter des charges de travail comportant jusqu'à 500 nœuds. Toutefois, pour garantir des performances et une fiabilité optimales, nous vous recommandons de ne pas dépasser 200 nœuds par cluster lorsque vous exécutez des charges de travail en production.
Type de cluster | Nombre minimal de nœuds | Nombre maximal de nœuds recommandé | Nombre maximal absolu de nœuds |
---|---|---|---|
Utilisateur, autonome ou hybride | 1 | 200 | 500 |
Pour les clusters à nœud unique, vous devez supprimer le rejet node-role.kubernetes.io/master:NoSchedule
pour exécuter des charges de travail sur le nœud.
Pour plus d'informations, consultez la section Rejets et tolérances dans Kubernetes.
Nombre maximal de pods par nœud
GKE sur Bare Metal accepte la configuration du nombre maximal de pods par nœud dans le paramètre nodeConfig.PodDensity.MaxPodsPerNode
du fichier de configuration du cluster. Le tableau suivant indique les valeurs minimales et maximales acceptées pour MaxPodsPerNode
, ce qui inclut les pods exécutant des services complémentaires :
Type de cluster | Valeur minimale autorisée | Valeur maximale recommandée | Valeur maximale autorisée |
---|---|---|---|
Tous les clusters haute disponibilité et clusters d'utilisateur standards | 32 | 110 | 250 |
Tous les autres clusters standards | 64 | 110 | 250 |
Nombre maximal de points de terminaison
Sous Red Hat Enterprise Linux (RHEL), le cluster est limité à 100 000 points de terminaison. Ce nombre correspond à la somme de tous les pods référencés par un service Kubernetes. Si deux services font référence au même ensemble de pods, cette situation est comptabilisée comme deux ensembles distincts de points de terminaison. L'implémentation nftable
sous-jacente sur RHEL entraîne cette limitation. Il ne s'agit pas d'une limitation intrinsèque de GKE sur Bare Metal.
Atténuation
Pour RHEL, il n'existe aucune mesure d'atténuation. Pour les systèmes Ubuntu et Debian, nous vous recommandons de passer de l'option par défaut nftables
à l'ancienne version iptables
sur les clusters à grande échelle.
GKE Dataplane V2
GDCV pour Bare Metal utilise GKE Dataplane V2, un plan de données de cluster implémenté avec Cilium et eBPF, optimisé pour la mise en réseau Kubernetes.
Limites NetworkPolicy
de GKE Dataplane V2
GKE Dataplane V2 utilise Cilium pour gérer les ressources NetworkPolicy
Kubernetes. Les limites suivantes s'appliquent à vos clusters GKE sur Bare Metal:
Dimension | Limites acceptées |
---|---|
Taux de modification maximal pour les étiquettes d'espace de noms | Au maximum, une modification par heure pour chaque espace de noms.
Dans la plupart des cas, cette limite n'est pas nécessaire. Tant que les modifications ne sont pas fréquentes, par exemple toutes les secondes, ou que le nombre d'identités Cilium (ensembles d'étiquettes uniques) n'est pas proche de la limite: 16 000 ensembles d'étiquettes avec autoriser tout ou 65 535 ensembles d'étiquettes par cluster. |
Nombre maximal de points de terminaison de service par cluster | La limite testée et recommandée est de 100 000 points de terminaison. La limite codée en dur pour les points de terminaison de service est de 262 000. |
Nombre maximal de règles et de règles de réseau | 40 000 règles de réseau et 80 000 règles au maximum. Par exemple, vous pouvez spécifier 40 000 règles de réseau avec deux règles chacune ou 20 000 règles de réseau avec quatre règles chacune. |
Taux de modification maximal pour les règles de réseau | 20 modifications (création ou suppression) au maximum par seconde |
Nombre maximal d'ensembles d'étiquettes de pods uniques | 65 535 (216-1). Il s'agit de la limite de l'identité de sécurité Cilium. |
Nombre maximal d'ensembles d'étiquettes de pods uniques sélectionnés par des sélecteurs de règle | 16 000 (taille de carte eBPF fixe) Une entrée de mappage de sélecteur de règle donnée comprend les éléments suivants: identité de sécurité, port et protocole. |
Limite eBPF de GKE Dataplane V2
Le nombre maximal d'entrées dans lbmap BPF pour Dataplane V2 est de 65 536. L'augmentation des éléments suivants peut entraîner une augmentation du nombre total d'entrées :
- Nombre de services
- Nombre de ports par service
- Nombre de backends par service
Nous vous recommandons de surveiller le nombre réel d'entrées utilisées par votre cluster afin de vous assurez que vous ne dépassez pas la limite. Utilisez la commande suivante pour obtenir les entrées actuelles :
kubectl get po -n kube-system -l k8s-app=cilium | cut -d " " -f1 | grep anetd | head -n1 | \
xargs -I % kubectl -n kube-system exec % -- cilium bpf lb list | wc -l
Nous vous recommandons également de vous servir de votre propre pipeline de surveillance pour collecter des métriques à partir du DaemonSet anetd
. Surveillez les conditions suivantes pour identifier le moment où le nombre d'entrées pose problème :
cilium_bpf_map_ops_total{map_name="lb4_services_v2",operation="update",outcome="fail" } > 0
cilium_bpf_map_ops_total{map_name="lb4_backends_v2",operation="update",outcome="fail" } > 0
Limite de ports pour les services LoadBalancer et NodePort
La limite de ports pour les services LoadBalancer
et NodePort
est de 2 768. La plage de ports par défaut est comprise entre 30000
et 32767
. Si vous dépassez cette limite, vous ne pourrez plus créer de services LoadBalancer
ou NodePort
, ni ajouter de ports de nœud à des services existants.
Par défaut, Kubernetes alloue des ports de nœud aux services de type LoadBalancer
.
Ces allocations peuvent rapidement épuiser les ports de nœud disponibles parmi les 2 768 alloués à votre cluster. Pour enregistrer les ports des nœuds, désactivez l'allocation de ports des nœuds de l'équilibreur de charge en définissant le champ allocateLoadBalancerNodePorts
sur false
dans la spécification du service LoadBalancer. Ce paramètre empêche Kubernetes d'attribuer des ports de nœud aux services LoadBalancer
. Pour en savoir plus, consultez la section Désactiver l'allocation NodePort de l'équilibreur de charge dans la documentation de Kubernetes.
Exécutez la commande suivante pour vérifier le nombre de ports alloués:
kubectl get svc -A | grep : | tr -s ' ' | cut -d ' ' -f6 | tr ',' '\n' | wc -l
Limites de connexion des nœuds d'équilibreur de charge groupé
Le nombre de connexions autorisées pour chaque nœud utilisé pour l'équilibrage de charge groupé (MetalLB) est de 28 000. La plage de ports éphémères par défaut pour ces connexions est de 32 768 à 60 999. Si vous dépassez la limite de connexion, les requêtes adressées au service LoadBalancer peuvent échouer.
Si vous devez exposer un service d'équilibrage de charge capable de gérer un nombre important de connexions (par exemple pour Ingress), nous vous recommandons d'envisager une autre méthode d'équilibrage de charge pour éviter cette limite avec MetalLB.
Quotas des clusters
Par défaut, vous pouvez enregistrer 15 clusters d'utilisateur au maximum. Pour enregistrer davantage de clusters dans GKE Hub, vous pouvez envoyer une demande d'augmentation de votre quota dans la console Google Cloud:
Informations sur le scaling
Les informations de ce document sont pertinentes pour planifier le scaling à la hausse de vos clusters. Pour en savoir plus, consultez la page Effectuer un scaling à la hausse de GKE sur les clusters Bare Metal.
Vous n'avez pas trouvé ce que vous cherchez ? Cliquez sur Envoyer des commentaires et dites-nous ce qu'il manque.