Configurer l'équilibrage de charge manuel

Cette page décrit les exigences liées à l'équilibrage de charge lorsque vous utilisez l'équilibrage de charge manuel. Au contraire de l'équilibrage de charge groupé où les clusters Anthos sur Bare Metal déploient des équilibreurs de charge sur les nœuds de cluster pour le trafic du plan de contrôle et du plan de données, avec l'équilibrage de charge manuel, vous configurez vos propres solutions d'équilibrage de charge pour le trafic du plan de contrôle et du plan de données.

Vous devez configurer un équilibreur de charge externe pour le plan de contrôle avant de créer un cluster Bare Metal. L'équilibreur de charge du plan de contrôle externe peut également être utilisé pour le trafic du plan de données, ou vous pouvez configurer un équilibreur de charge distinct pour le plan de données. Par exemple, vous pouvez utiliser un équilibreur de charge à l'intérieur du cluster comme MetalLB pour le trafic du plan de données.

Cette page fournit une description des exigences de l'équilibrage de charge, mais explique également comment configurer l'équilibrage de charge manuel à l'aide de F5 BIG-IP.

Prerequisites

Adresse IP requise

Vous devez planifier vos adresses IP virtuelles avant de créer un cluster. Tous les clusters nécessitent une adresse IP virtuelle pour le plan de contrôle. Tous les clusters d'utilisateur ont besoin d'une deuxième adresse IP virtuelle pour le service d'entrée.

Ces adresses IP virtuelles peuvent se trouver dans n'importe quel sous-réseau routable IPv4 de l'équilibreur de charge. L'adresse IP virtuelle du plan de contrôle doit être accessible depuis tous les nœuds de cluster et depuis le poste de travail administrateur sur lequel vous exécutez bmctl.

Lorsque vous créez le cluster, le service d'entrée est déployé à l'aide de l'adresse IP virtuelle que vous spécifiez dans le fichier de configuration de cluster. Vous pouvez configurer l'équilibrage de charge pour cette adresse IP après la création du cluster.

Vous devez connaître les adresses IP que vous utiliserez pour les nœuds qui seront utilisés comme nœuds de plan de contrôle.

Exigences de l'équilibreur de charge du plan de contrôle externe

L'équilibreur de charge du plan de contrôle doit être configuré avant de créer le cluster. L'équilibreur de charge du plan de contrôle doit répondre aux exigences suivantes :

  • Un service virtuel (interface) pour l'adresse IP virtuelle du plan de contrôle. Le port d'écoute par défaut du plan de contrôle est 443. Toutefois, si vous spécifiez un autre port, le champ loadBalancer.ports.controlPlaneLBPort du fichier de configuration de cluster utilise ce port pour le service virtuel.
  • Un groupe backend contenant toutes les adresses IP des nœuds du plan de contrôle du cluster. Le port backend sur lequel le plan de contrôle écoute est 6444.
  • Une vérification de l'état qui surveille les nœuds de backend. La vérification de l'état doit utiliser HTTPS et vérifier le point de terminaison /readyz sur le port 6444. La vérification de l'état doit vérifier que ce point de terminaison renvoie le code d'état 200 pour considérer que l'état du nœud est "sain".

Si l'équilibreur de charge externe n'est pas configuré correctement, l'amorçage du cluster risque d'échouer. Une vérification préalable vérifie que l'équilibreur de charge externe est correctement configuré, et qu'il vérifie l'état du point de terminaison /readyz.

Réinitialiser les connexions à des nœuds défaillants (recommandé)

Outre les exigences précédentes, nous vous recommandons de configurer l'équilibreur de charge pour réinitialiser les connexions client lorsqu'il détecte une défaillance du nœud de backend. Sans cette configuration, les clients du serveur d'API Kubernetes peuvent arrêter de répondre pendant plusieurs minutes lorsqu'une instance de serveur tombe en panne, ce qui peut provoquer une instabilité au niveau du plan de contrôle Kubernetes.

  • Avec F5 BIG-IP, ce paramètre s'appelle Action On Service Down sur la page de configuration du pool de backend.
  • Avec HAProxy, ce paramètre est appelé "on-marked-down shutdown-sessions" dans la configuration du serveur backend.
  • Si vous utilisez un autre équilibreur de charge, consultez la documentation pour trouver le paramètre équivalent.

Configurer votre cluster

Avant de créer un cluster Anthos sur un cluster sur solution Bare Metal, vous devez créer un fichier de configuration de cluster avec bmctl. Modifiez ce fichier pour activer l'équilibrage de charge manuel dans le cluster :

  1. Définissez le champ loadBalancer.mode sur manual.
  2. Définissez le champ loadBalancer.vips.controlPlaneVIP sur l'adresse IP virtuelle que vous avez configurée sur l'équilibreur de charge.
  3. Supprimez ou passez en commentaire la section loadBalancer.addressPools.

Une fois que vous avez fini de modifier le fichier de configuration, y compris les champs non liés à l'équilibrage de charge, vérifiez que l'adresse IP virtuelle du plan de contrôle est correctement configurée sur l'équilibreur de charge en exécutant les vérifications préalables :

bmctl check preflight -c CLUSTER_NAME

Remplacez CLUSTER_NAME par le nom du cluster.

Compatibilité avec les services LoadBalancer dans les clusters d'utilisateur

Vous devez configurer l'équilibrage de charge pour qu'il soit compatible avec les services LoadBalancer de Kubernetes. En mode équilibrage de charge manuel, Anthos Clusters on Bare Metal ne provisionne pas automatiquement les équilibreurs de charge, de sorte que les services LoadBalancer ne fonctionnent que si vous provisionnez et configurez des équilibreurs de charge pour pointer vers les services.

De plus, les clusters Anthos sur Bare Metal déploient automatiquement un service d'entrée dans tous les clusters d'utilisateur utilisant un service LoadBalancer. Pour être accessible depuis l'extérieur, ce service LoadBalancer nécessite un équilibreur de charge configuré pour pointer vers le service.

Les options permettre l'utilisation des services LoadBalancer sont les suivantes :

  • Configurer manuellement l'équilibreur de charge pour chaque service LoadBalancer du cluster. Consultez la section Configurer la compatibilité avec les services LoadBalancer pour obtenir un exemple d'utilisation de F5 BIG-IP.
  • Installer un contrôleur d'équilibreur de charge dans le cluster, qui configure l'équilibreur de charge externe lors de la création des services LoadBalancer.
  • Installer une solution d'équilibrage de charge au sein du cluster, telle que MetalLB.

Équilibrage de charge manuel avec F5 BIG-IP

Cette section explique comment configurer l'équilibrage de charge manuel avec F5 BIG-IP en tant qu'équilibreur de charge externe. Si vous utilisez un autre équilibreur de charge, consultez la documentation concernant cet équilibreur de charge et suivez ces étapes en tant que modèle.

Configurer l'équilibreur de charge du plan de contrôle

Vous devez configurer l'équilibreur de charge du plan de contrôle avant de créer un cluster. Une fois ces étapes effectuées, vous pouvez configurer votre cluster et le créer.

Créer une partition pour votre cluster

Chaque cluster doit posséder sa propre partition. Utilisez l'utilitaire de configuration BIG-IP pour créer une partition :

  1. Accédez à Système > Utilisateurs > Liste des partitions.
  2. Cliquez sur Créer.
  3. Saisissez un nom pour la partition.
  4. Cliquez sur Terminé.

Au cours des étapes suivantes, vous allez créer des objets dans cette partition. Assurez-vous que cette partition est sélectionnée dans le menu déroulant situé dans l'angle supérieur droit de l'UI pour chacune des tâches suivantes, afin que chaque objet soit créé dans cette partition.

Créer une surveillance

Créez une surveillance pour effectuer des vérifications de l'état sur les nœuds du plan de contrôle :

  1. Accédez à Trafic local > Surveillances.
  2. Cliquez sur Créer.
  3. Saisissez un nom pour la surveillance (par exemple, https_readyz).
  4. Définissez le Type sur HTTPS.
  5. Pour Chaîne d'envoi, saisissez GET /readyz HTTP/1.1\r\nHost: \r\nConnection: close.
  6. Pour Chaîne de réception, saisissez HTTP/1.1 200.
  7. Cliquez sur Terminé.

Créer des nœuds

Créez un nœud qui pointe vers les nœuds du plan de contrôle. Si votre cluster possède un plan de contrôle de haute disponibilité (HA) avec plusieurs nœuds de plan de contrôle, créez un objet de nœud pour chaque nœud du plan de contrôle.

  1. Accédez à Trafic local > Nœuds > Liste des nœuds.
  2. Cliquez sur Créer.
  3. Saisissez un nom pour le nœud.
  4. Saisissez l'adresse IP du nœud dans le champ "Adresse".
  5. Cliquez sur Terminé.

Créer un pool de backend

Créez un pool pour les nœuds du plan de contrôle :

  1. Accédez à Trafic local > Pools > Liste des pools.
  2. Cliquez sur Créer.
  3. Sélectionnez Avancé dans la liste déroulante Configuration.
  4. Attribuez un nom au pool.
  5. Sélectionnez la surveillance d'état créée précédemment.
  6. Définissez Action On Service Down sur Rejeter (consultez les informations relatives à ce paramètre dans la section Réinitialiser les connexions à des nœuds défaillants).
  7. Ajoutez le nœud du plan de contrôle au pool. Si votre cluster comporte plusieurs nœuds de plan de contrôle, répétez ces étapes pour chaque nœud :
    1. Dans la section Nouveaux membres, cliquez sur Liste des nœuds, puis sélectionnez le nœud du plan de contrôle créé précédemment.
    2. Dans le champ Port du service, saisissez 6444.
    3. Cliquez sur Ajouter.

Créer un serveur virtuel

Créez un serveur virtuel pour le plan de contrôle :

  1. Accédez à Trafic local > Serveurs virtuels > Liste des serveurs virtuels.
  2. Cliquez sur Créer.
  3. Saisissez un nom pour le serveur virtuel.
  4. Définissez le Type sur Standard.
  5. Saisissez 0.0.0.0/0 dans le champ Adresse source pour autoriser le trafic depuis n'importe quelle destination.
  6. Saisissez l'adresse IP virtuelle du plan de contrôle en tant qu'adresse de destination.
  7. Saisissez le port du plan de contrôle dans le champ Port du service. La valeur par défaut est 443, mais elle est configurable et doit correspondre à ce que vous configurez dans la configuration de votre cluster pour loadBalancer.ports.controlPlaneLBPort.
  8. Dans le champ Traduction d'adresse source, sélectionnez Carte automatique.
  9. Dans Pool par défaut, sélectionnez le pool créé précédemment dans la liste déroulante.
  10. Cliquez sur Terminé.

Configurer la compatibilité avec les services LoadBalancer

En mode d'équilibrage de charge manuel, Anthos Clusters on Bare Metal ne provisionne pas automatiquement les équilibreurs de charge pour assurer la compatibilité avec les services LoadBalancer. Pour en savoir plus, consultez la section Compatibilité avec les services LoadBalancer dans les clusters d'utilisateur.

Cette section explique comment configurer manuellement un équilibreur de charge F5 BIG-IP pour un service LoadBalancer. Répétez ces étapes pour chaque service LoadBalancer que vous souhaitez exposer.

Prerequisites

Pour configurer un service LoadBalancer, vous devez connaître l'adresse IP virtuelle que vous souhaitez exposer via l'équilibreur de charge, le port sur lequel vous souhaitez l'exposer et le NodePort que le service LoadBalancer de Kubernetes utilise.

Après avoir déployé un service LoadBalancer dans votre cluster, déterminez le NodePort utilisé pour le service LoadBalancer. La commande suivante affiche les ports du service :

kubectl --kubeconfig KUBECONFIG get service SERVICE_NAME -oyaml

Remplacez les éléments suivants :

  • KUBECONFIG par le chemin d'accès au fichier kubeconfig à utiliser.
  • SERVICE_NAME par le nom du service LoadBalancer.

La sortie de kubctl get service inclut une section ports. Chaque entrée de port affiche le nodePort exposé pour le port sur le service et vous allez modifier la configuration de sorte que le backend de l'équilibreur de charge pointe vers ce nodePort. Voici un exemple :

spec:
  clusterIP: 172.26.232.107
  externalTrafficPolicy: Cluster
  loadBalancerIP: 21.0.101.77
  ports:
  - name: status-port
    nodePort: 30281
    port: 15021
    protocol: TCP
    targetPort: 15021
  - name: http
    nodePort: 30124
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    nodePort: 31858
    port: 443
    protocol: TCP
    targetPort: 443

Il existe des ports pour le trafic HTTP et HTTPS. Vous pouvez exposer l'un de ces ports, ou les deux, via votre équilibreur de charge.

Si vous exposez le service d'entrée qui est déployé automatiquement dans tous les clusters, le service LoadBalancer est nommé istio-ingress et se trouve dans l'espace de noms gke-system. Recherchez ses ports à l'aide de la commande suivante :

kubectl --kubeconfig KUBECONFIG -n gke-system get service istio-ingress -oyaml

Le service d'entrée est configuré avec une adresse loadBalancerIP, qui correspond à l'adresse IP indiquée dans le champ loadBalancer.vips.ingressVIP de la configuration initiale du cluster. Vous devez exposer cette adresse IP virtuelle pour exposer le service d'entrée sur l'équilibreur de charge externe.

Créer un pool de backend

  1. Accédez à Trafic local > Pools > Liste des pools.
  2. Cliquez sur Créer.
  3. Attribuez un nom au pool.
  4. Sélectionnez tcp comme surveillance d'état.
  5. Ajoutez des nœuds de calcul au pool de nœuds. Répétez ces étapes pour chaque nœud. Vous pouvez ajouter des plans de contrôle et des nœuds de calcul, car les NodePorts Kubernetes sont accessibles sur n'importe quel nœud du cluster.
    1. Dans la section Nouveaux membres, cliquez sur Liste des nœuds, puis sélectionnez l'un des nœuds créés précédemment.
    2. Dans le champ Port du service, saisissez la valeur NodePort du service.
    3. Cliquez sur Ajouter.

Créer un serveur virtuel

  1. Accédez à Trafic local > Serveurs virtuels > Liste des serveurs virtuels.
  2. Cliquez sur Créer.
  3. Saisissez un nom pour le serveur virtuel.
  4. Définissez le Type sur Standard.
  5. Saisissez 0.0.0.0/0 dans le champ Adresse source pour autoriser le trafic depuis n'importe quelle destination.
  6. Saisissez l'adresse IP virtuelle du service de l'équilibreur de charge en tant qu'adresse de destination.
  7. Saisissez le port exposé pour le service d'équilibreur de charge en tant que port de service.
  8. Dans le champ Traduction d'adresse source, sélectionnez Carte automatique.
  9. Dans Pool par défaut, sélectionnez le pool créé précédemment dans la liste déroulante.
  10. Cliquez sur Terminé.