Exposition des applications à l'aide d'équilibreurs de charge pour VPC
Virtual Private Cloud
Configurez un équilibreur de charge pour VPC afin d'exposer votre application sur le réseau public ou privé.
Pour exposer une application dans un cluster de VPC, vous pouvez créer un équilibreur de charge d'application de niveau 7 pour VPC. Vous pouvez éventuellement créer un Network Load Balancer for VPCde couche 4.
Types d'équilibreur de charge
Le tableau ci-après décrit les caractéristiques de base de chaque option d'équilibrage de charge.
| Caractéristique | Application Load Balancer for VPC | Network Load Balancer for VPC |
|---|---|---|
| Version Red Hat OpenShift prise en charge | Toutes les versions | Toutes les versions |
| Couche transport | Couche 7 | Couche 4 |
| Types d'équilibreur de charge | Public et privé | Public et privé |
| Protocoles pris en charge | TCP | TCP, UDP |
| Accès à une application | Nom d'hôte | Nom d'hôte et adresse IP statique |
| Conservation de l'adresse IP source | Configurable* | Oui |
| Performances améliorées avec DSR (Direct Server Return) | Non | Oui |
| Routage multizone | Oui | Oui |
| Plages de ports | Non | Public uniquement |
| Groupes de sécurité | Oui | Oui |
Network Load Balancer for VPC
Dans les clusters VPC, configurez un répartiteur de charge VPC ( layer-4, VPC NLB) Network Load Balancer for VPC dans chaque zone de votre cluster afin qu'il serve de point d'entrée externe pour les requêtes entrantes destinées à une application.
Les équilibreurs de charge de réseau VPC offrent plusieurs avantages (par exemple, ils offrent un débit supérieur et de meilleures performances en exploitant DSR (Direct Server Return). Avec DSR, le noeud worker peut envoyer les paquets de réponses des applications directement à l'adresse IP du client et contourner l'équilibreur de charge de réseau VPC, pour diminuer le volume de trafic à traiter par l'équilibreur de charge de réseau VPC. De plus, l'équilibreur de charge de réseau VPC prend en charge la conservation des adresses IP source sur toutes les demandes client par défaut.
-
Les noms d'équilibreur de charge de réseau VPC standard ont un format
kube-<cluster_ID>-<kubernetes_lb_service_UID>. Pour afficher votre ID de cluster, exécutezibmcloud oc cluster get --cluster <cluster_name>. Pour voir l'ID utilisateur du service KubernetesLoadBalancer, exécutez la commandeoc get svc myloadbalancer -o yamlet recherchez la zone metadata.uid dans la sortie. Les tirets (-) sont supprimés de l’identifiant unique (UID) du serviceLoadBalancerKubernetes dans le nom du VPC NLB. -
Les noms d'équilibreur de charge de réseau VPC persistant ont le format
kube-<cluster_ID>-<kubernetes_lb_service_UID>. Pour afficher votre ID de cluster, exécutezibmcloud oc cluster get --cluster <cluster_name>. Pour voir l'ID utilisateur du service KubernetesLoadBalancer, exécutez la commandeoc get svc myloadbalancer -o yamlet recherchez la zone metadata.uid dans la sortie. Les tirets (-) sont supprimés de l’identifiant unique (UID) du serviceLoadBalancerKubernetes dans le nom du VPC NLB. -
Lorsque vous créez un service Kubernetes
LoadBalancerpour une application dans votre cluster et incluez l'annotationservice.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "nlb", un équilibreur de charge de réseau VPC est créé dans votre VPC en dehors de votre cluster. L'équilibreur de charge de réseau VPC achemine les demandes à votre application via les ports de noeud privés qui sont automatiquement ouverts sur vos noeuds worker. -
Si vous créez un
LoadBalancerservice Kubernetes public, vous pouvez accéder à votre application depuis Internet via l’adresse IP publique externe attribuée par le VPC NLB au serviceLoadBalancerKubernetes. Même si vos noeuds worker sont connectés uniquement à un sous-réseau VPC privé, l'équilibreur de charge de réseau VPC peut recevoir et acheminer les demandes publiques au service qui expose votre application. Notez qu'aucune passerelle publique n'est requise sur votre sous-réseau VPC pour autoriser les demandes publiques adressées à votre équilibreur de charge de réseau VPC. Toutefois, si votre application doit accéder à une URL publique, vous devez connecter des passerelles publiques aux sous-réseaux VPC auxquels vos noeuds worker sont connectés. -
Si vous créez un service
LoadBalancerKubernetes privé, votre application n'est accessible qu'aux systèmes connectés à vos sous-réseaux privés au sein de la même région et du même VPC. Si vous êtes connecté à votre réseau VPC privé, vous pouvez accéder à votre application par l'intermédiaire de l'adresse IP privée externe affectée par l'équilibreur de charge de réseau VPC au service KubernetesLoadBalancer.
Le diagramme suivant illustre la manière dont un utilisateur accède à une application via Internet par l'intermédiaire de l'équilibreur de charge de réseau VPC.
Équilibrage de
- Une demande adressée à votre application utilise l'adresse IP externe affectée au service Kubernetes
LoadBalancerpar l'équilibreur de charge de réseau VPC. - La demande est automatiquement transmise par l'équilibreur de charge de réseau VPC à l'un des ports de noeud du noeud worker, puis à l'adresse IP privée du pod d'application.
- Si des instances d'application sont déployées sur plusieurs nœuds de travail au sein du cluster, le VPC NLB achemine les requêtes entre les pods d'application situés sur différents nœuds de travail, dans toutes les zones du cluster.
Application Load Balancer for VPC
Configurez un équilibreur de charge d'application pour VPC multizone de couche 7 qui servira de point d'entrée externe pour les demandes entrantes vers une application dans votre cluster.
Ne confondez pas les équilibreurs de charge d'application pour VPC avec les équilibreurs de charge d'application Ingress d'Red Hat OpenShift on IBM Cloud. Les équilibreurs de charge d'application pour VPC sont exécutés en dehors de votre cluster
dans votre VPC et sont configurés par les services Kubernetes LoadBalancer que vous créez. Les équilibreurs de charge d'application Ingress sont des contrôleurs
Ingress exécutés sur des noeuds worker dans votre cluster.
-
Les noms des ALB VPC respectent le format
kube-<cluster_ID>-<kubernetes_lb_service_UID>. Pour afficher votre ID de cluster, exécutezibmcloud oc cluster get --cluster <cluster_name>. Pour voir l'ID utilisateur du service KubernetesLoadBalancer, exécutez la commandeoc get svc myloadbalancer -o yamlet recherchez la zone metadata.uid dans la sortie. Les tirets (-) sont supprimés de l'identifiant unique (UID) du serviceLoadBalancerKubernetes dans le nom de l'ALB VPC. -
Par défaut, lorsque vous créez un service Kubernetes
LoadBalancerpour une application de votre cluster, un équilibreur de charge d'application pour VPC est créé dans votre VPC en dehors de votre cluster. L'équilibreur de charge d'application VPC achemine les demandes à votre application via les ports de noeud privés qui sont automatiquement ouverts sur vos noeuds worker. -
Si vous créez un service
LoadBalancerKubernetes public, vous pouvez accéder à votre application depuis l'internet via le nom d'hôte attribué par l'ALB de VPC au service KubernetesLoadBalancerau format1234abcd-<region>.lb.appdomain.cloud. Même si vos noeuds worker sont connectés uniquement à un sous-réseau VPC privé, l'équilibreur de charge d'application VPC peut recevoir et acheminer les demandes publiques au service qui expose votre application. Notez qu'aucune passerelle publique n'est requise sur votre sous-réseau VPC pour autoriser les demandes publiques adressées à votre équilibreur de charge d'application VPC. Toutefois, si votre application doit accéder à une URL publique, vous devez connecter des passerelles publiques aux sous-réseaux VPC auxquels vos noeuds worker sont connectés. -
Si vous créez un service
LoadBalancerKubernetes privé, votre application n'est accessible qu'aux systèmes connectés à vos sous-réseaux privés au sein de la même région et du même VPC. Si vous êtes connecté à votre réseau VPC privé, vous pouvez accéder à votre application via le nom d'hôte affecté par le VPC ALB au service KubernetesLoadBalancerau format1234abcd-<region>.lb.appdomain.cloud.
Le diagramme suivant illustre la manière dont un utilisateur accède à une application via Internet par l'intermédiaire de l'équilibreur de charge d'application VPC.
Équilibrage de
- Une demande à votre application utilise le nom d'hôte affecté au service Kubernetes
LoadBalancerpar l'ALB de VPC, tel que1234abcd-<region>.lb.appdomain.cloud. - La demande est automatiquement transmise par l'équilibreur de charge d'application VPC à l'un des ports de noeud du noeud worker, puis à l'adresse IP privée du pod d'application.
- Si des instances d'application sont déployées sur plusieurs noeuds worker dans le cluster, l'équilibreur de charge achemine les demandes entre les pods d'application sur différents noeuds worker. De plus, si vous disposez d'un cluster multizone, l'équilibreur de charge d'application VPC achemine les demandes vers les noeuds worker sur tous les sous-réseaux et zones de votre cluster.
Configuration d'un équilibreur de charge de réseau pour VPC
Rendez votre application accessible au public ou au réseau privé en configurant un service LoadBalancer Kubernetes public ou privé dans chaque zone de votre cluster
VPC. Vous pouvez ensuite enregistrer l'équilibreur de charge de réseau VPC avec un enregistrement DNS et un certificat TLS. Les NLB VPC prennent en charge les types de protocole TCP et UDP.
Configuration d'un équilibreur de charge de réseau VPC public
Exposez votre application au trafic réseau public en configurant un service Kubernetes LoadBalancer dans chaque zone de votre cluster. Lorsque vous créez le service Kubernetes LoadBalancer, un équilibreur de charge
de réseau pour VPC public qui achemine les demandes vers votre application est automatiquement créé dans votre VPC en dehors de votre cluster.
- Assurez-vous de disposer du rôle d’accès au service IAM Writer ou Manager IBM Cloud pour l’espace de noms dans lequel vous déployez le
service
LoadBalancerKubernetes pour le VPC NLB. - Accédez à votre cluster Red Hat OpenShift.
- Pour afficher les équilibreurs de charge de réseau VPC, installez le plug-in
infrastructure-service. Le préfixe pour l'exécution des commandes estibmcloud is.ibmcloud plugin install infrastructure-service
-
Déployez votre application sur le cluster. Prenez soin d'ajouter un libellé à votre déploiement dans la section "metadata" de votre fichier de configuration de déploiement. Ce libellé personnalisé identifie tous les pods dans lesquels s'exécute votre application afin de pouvoir les inclure dans l'équilibrage de charge.
-
Créez un fichier YAML de configuration pour votre service Kubernetes
LoadBalancer. Nommez le service au format<app_name>-vpc-nlb-<VPC_zone>.apiVersion: v1 kind: Service metadata: name: <app_name>-vpc-nlb-<VPC_zone> annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name: "my-load-balancer" service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "nlb" service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "public" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector: "<key>=<value>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets: "<subnet1_ID,subnet2_ID>" service.kubernetes.io/ibm-load-balancer-cloud-provider-zone: "<zone>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-udp: "<tcp_port>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-protocol: "<protocol>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-port: "<port>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-path: "<url_path>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-delay: "<value>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-timeout: "<value>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-timeout: "<value>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-member-quota: "<value>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-security-group: "<security-group>" spec: type: LoadBalancer selector: <selector_key>: <selector_value> ports: - name: http protocol: TCP port: 8080 targetPort: 8080 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise. - name: https protocol: TCP port: 443 targetPort: 443 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise. externalTrafficPolicy: Local # Specify Local or Cluster.service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name: "my-load-balancer"- Facultatif. Incluez un nom unique pour rendre votre équilibreur de charge VPC persistant. Les équilibreurs de charge VPC persistants ne sont pas supprimés lorsque le cluster auquel ils appartiennent est supprimé. Pour plus d'informations, voir Persistent VPC load balancers. Cette annotation ne peut être définie que lors de la création de l'équilibreur de charge. Il ne peut pas être utilisé dans une opération de mise à jour.
service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "nlb"- Obligatoire : Annotation pour créer un équilibreur de charge de réseau VPC. Cette annotation ne peut être définie que lors de la création de l'équilibreur de charge. Il ne peut pas être utilisé dans une opération de mise à jour.
service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type- Facultatif : Annotation utilisée pour spécifier un service qui accepte des demandes publiques. Si vous n'incluez pas cette annotation, un NLB de VPC public est créé. Cette annotation ne peut être définie que lors de la création de l'équilibreur de charge. Il ne peut pas être utilisé dans une opération de mise à jour.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector-
- Facultatif : Annotation utilisée pour spécifier un sélecteur de libellé de noeud worker. Pour identifier les noeuds worker qui reçoivent du trafic, vous pouvez sélectionner l'une des clés de sélecteur de libellé prises en charge. Vous ne pouvez inclure qu'un seul sélecteur de libellé dans l'annotation et ce sélecteur doit être spécifié au format
"key=value". Si cette annotation n'est pas spécifiée, tous les noeuds worker qui se trouvent dans la même zone que l'équilibreur de charge de réseau VPC sont configurés pour recevoir le trafic de l'équilibreur de charge de réseau VPC. Si elle est spécifiée, cette annotation a priorité sur l'annotationservice.kubernetes.io/ibm-load-balancer-cloud-provider-zoneet tous les libellésdedicated: edgedes noeuds worker sont ignorés. Pour limiter le trafic à une zone spécifique, vous pouvez utiliser cette annotation pour spécifier des noeuds worker dans cette zone. - Les clés suivantes sont autorisées. -
ibm-cloud.kubernetes.io/internal-ip-ibm-cloud.kubernetes.io/machine-type-ibm-cloud.kubernetes.io/os-ibm-cloud.kubernetes.io/region-ibm-cloud.kubernetes.io/subnet-id-ibm-cloud.kubernetes.io/worker-pool-id-ibm-cloud.kubernetes.io/worker-pool-name-ibm-cloud.kubernetes.io/zone-kubernetes.io/arch-kubernetes.io/hostname-kubernetes.io/os-node.kubernetes.io/instance-type-topology.kubernetes.io/region-topology.kubernetes.io/zone
- Facultatif : Annotation utilisée pour spécifier un sélecteur de libellé de noeud worker. Pour identifier les noeuds worker qui reçoivent du trafic, vous pouvez sélectionner l'une des clés de sélecteur de libellé prises en charge. Vous ne pouvez inclure qu'un seul sélecteur de libellé dans l'annotation et ce sélecteur doit être spécifié au format
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets- Facultatif: annotation permettant de spécifier un ou plusieurs sous-réseaux dans une zone où le VPC NLB est déployé. Les valeurs peuvent être spécifiées en tant qu'ID de sous-réseau VPC, noms de sous-réseau VPC ou CIDR
de sous-réseau VPC. Si elle est spécifiée, cette annotation a priorité sur l'annotation
service.kubernetes.io/ibm-load-balancer-cloud-provider-zone. Vous pouvez spécifier un sous-réseau différent dans le même VPC que les sous-réseaux auxquels votre cluster est connecté. Dans ce cas, même si l'équilibreur de charge de réseau VPC est déployé sur un autre sous-réseau du même VPC, il peut tout de même router le trafic vers vos noeuds worker sur les sous-réseaux du cluster de la même zone. Pour afficher les sous-réseaux de tous les groupes de ressources, exécutezibmcloud oc subnets --provider vpc-gen2 --vpc-id <vpc> --zone <zone>. service.kubernetes.io/ibm-load-balancer-cloud-provider-zone-
- Facultatif: annotation permettant de spécifier la zone VPC à laquelle votre cluster est associé. L'équilibreur de charge de réseau VPC est déployé sur le sous-réseau de cette zone auquel vos noeuds worker sont connectés. L'équilibreur de charge de réseau VPC étant à zone unique, seuls les noeuds worker de votre cluster qui se trouvent dans cette zone sont configurés pour recevoir du trafic.
- Pour afficher les zones, exécutez
ibmcloud oc zone ls --provider vpc-gen2. Si vous modifiez ultérieurement cette annotation dans une autre zone, le NLB de VPC n'est pas déplacé vers la nouvelle zone. - Notez que si vous ne spécifiez pas cette annotation ou l'annotation
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets, le VPC NLB est déployé dans la zone la plus optimale. Par exemple, l'équilibreur de charge de réseau VPC n'est déployé que sur les zones dans lesquelles il existe des noeuds worker à l'étatReady.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-udp-
- Obligatoire si vous spécifiez le protocole UDP et définissez
externalTrafficPolicysurCluster. Sinon, cette annotation est facultative. - Spécifiez un port d’ TCP à utiliser pour les contrôles d’intégrité d’ TCP dans un équilibreur de charge UDP. Requis pour les équilibreurs de charge d' UDP s dont le paramètre est défini
externalTrafficPolicysurCluster. Pour plus d'informations sur la configuration des valeurs de port, consultez la section Configuration des contrôles d'intégrité d' TCP pour les équilibreurs de charge d' UDP.
- Obligatoire si vous spécifiez le protocole UDP et définissez
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-protocol- Facultatif: cette annotation définit le protocole de diagnostic d'intégrité sur la ressource d'équilibreur de charge VPC associée au service d'équilibreur de charge Kubernetes. Normalement, le protocole de diagnostic d'intégrité
de l'équilibreur de charge VPC est déterminé par la valeur du paramètre
externalTrafficPolicydans la spécification de service d'équilibreur de charge Kubernetes. Cette annotation remplace cette logique. Cette annotation ne modifie pas le comportement de Kuberneteset de kube-proxy en particulier en ce qui concerne les différents paramètres deexternalTrafficPolicy. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-port- Facultatif. Le port TCP est utilisé pour les contrôles d'intégrité. Cette annotation s'applique uniquement si
ibm-load-balancer-cloud-provider-vpc-health-check-protocolest également spécifié.- Si le port TCP spécifié se trouve en dehors de la plage de ports des nœuds Kubernetes (30 000-32 767), le groupe de sécurité VPC appliqué aux nœuds de travail du cluster doit être modifié afin d’autoriser le trafic entrant sur ce port.
- Si cette annotation est appliquée à un service d'équilibrage de charge Kubernetes associé à un VPC ALB, les règles sortantes du groupe de sécurité attribué au VPC ALB doivent être modifiées afin d’autoriser le trafic sortant vers le port TCP spécifié.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-path- Facultatif. Chemin d'accès à l' URL s relatives aux contrôles d'intégrité pour HTTP et HTTPS. Cette annotation s'applique uniquement si
ibm-load-balancer-cloud-provider-vpc-health-check-protocolest défini surhttpouhttps.- Le chemin d'accès URL doit respecter le format d'une cible de requête au format d'origine.
- Si cette annotation n'est pas spécifiée et que l'annotation
ibm-load-balancer-cloud-provider-vpc-health-check-protocolest définie surhttpouhttps, la valeur par défaut/est appliquée.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-delay- Facultatif. Nombre de secondes à attendre entre les tentatives de diagnostic d'intégrité. Par défaut, cette valeur est définie sur
5, avec un minimum de2et un maximum de60. Cette valeur doit être supérieure à la valeuribm-load-balancer-cloud-provider-vpc-health-check-timeout, qui est définie sur2par défaut. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-timeout- Facultatif. Nombre de secondes d'attente d'une réponse à un diagnostic d'intégrité. Par défaut, cette valeur est définie sur
2, avec un minimum de1et un maximum de59. Cette valeur doit être inférieure à la valeuribm-load-balancer-cloud-provider-vpc-health-check-delay, qui est définie sur5par défaut. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-retries- Facultatif. Nombre maximal de nouvelles tentatives de diagnostic d'intégrité pour l'équilibreur de charge VPC. Par défaut, cette valeur est définie sur
2, avec un minimum de1et un maximum de10. selector- Facultatif. La clé (
<selector_key>) et la valeur (<selector_value>) que vous avez utilisées dans la sectionspec.template.metadata.labelsdu fichier YAML de déploiement de votre application. Ce libellé personnalisé identifie tous les pods dans lesquels s'exécute votre application afin de pouvoir les inclure dans l'équilibrage de charge. port- Facultatif. Port sur lequel le service est à l'écoute.
targetPort- Facultatif. Port vers lequel le service achemine le trafic. L'application s'exécutant dans le pod doit être à l'écoute du trafic entrant de type TCP sur ce port cible. Le port cible est souvent défini de manière statique dans l'image qui s'exécute dans le pod d'application. Le port cible configuré dans le pod est différent du port de noeud du service et peut également être différent du port externe configuré sur l'équilibreur de charge VPC.
externalTrafficPolicy-
- Obligatoire. Spécifier
LocalouCluster. - Définissez cette option sur
Localpour conserver l'adresse IP source des requêtes des clients adressées à vos applications. Ce paramètre empêche le trafic entrant d'être acheminé vers un autre noeud. Cette option configure également les contrôles d'intégrité HTTP. - Si
Clusterest défini, le DSR n'est mis en œuvre qu'à partir du nœud de travail vers lequel le VPC NLB transfère initialement la requête entrante. Une fois la demande entrante arrivée, elle est envoyée à un noeud worker qui contient le pod d'application, qui peut se trouver dans une autre zone. La réponse du pod d'application est envoyée au noeud worker d'origine et ce dernier utilise DSR pour envoyer la réponse directement au client, en contournant l'équilibreur de charge de réseau VPC. Cette option configure également les contrôles d'intégrité TCP. Pour les équilibreurs de charge d' UDP, leservice.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-udpest obligatoire si vous choisissez l'optionCluster. Pour plus d'informations, consultez la section Configuration des contrôles d'intégrité d' TCP pour les équilibreurs de charge UDP.
- Obligatoire. Spécifier
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-member-quota- Optionnel. Le nombre de nœuds de travail par zone vers lesquels l'équilibreur de charge se dirige. La valeur par défaut est de 8. Pour un cluster avec des nœuds de travail dans trois zones, cela signifie que l'équilibreur de charge achemine les données vers 24 nœuds de travail au total. Le nombre total de nœuds de travail dans toutes les zones vers lesquelles l'équilibreur de charge se dirige ne peut pas dépasser 50. Si la grappe compte moins de 50 nœuds de travail dans toutes les zones, spécifiez 0 pour router vers tous les nœuds de travail d'une zone.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-security-group- Optionnel. Un groupe de sécurité géré par le client à ajouter à l'équilibreur de charge VPC. Si vous ne souhaitez pas utiliser le groupe de sécurité géré par IBM, indiquez un groupe de sécurité que vous possédez et gérez. Cette option supprime le groupe de sécurité géré par IBM et le remplace par le groupe de sécurité que vous spécifiez. La suppression de l'annotation d'un équilibreur de charge existant remplace le groupe de sécurité que vous avez ajouté par le groupe de sécurité géré par IBM. Vous pouvez ajouter ou supprimer cette annotation à tout moment. Vous êtes responsable de la gestion de votre groupe de sécurité et de sa mise à jour.
-
Créez le service Kubernetes
LoadBalancerdans votre cluster.oc apply -f <filename>.yaml -n <namespace> -
Vérifiez que le service Kubernetes
LoadBalancera bien été créé dans votre cluster. Lorsque le service est créé, la zone LoadBalancer Ingress est renseignée avec une adresse IP externe affectée par l'équilibreur de charge de réseau VPC.
La mise à disposition dans votre VPC de l'équilibreur de charge de réseau VPC dure quelques minutes. L'adresse IP externe de votre service Kubernetes LoadBalancer peut être à l'état pending jusqu'à
ce que l'équilibreur de charge de réseau VPC ait été entièrement mis à disposition.
```sh {: pre}
oc describe svc myloadbalancer -n <namespace>
```
Exemple de sortie de l'interface de ligne de commande pour un service `LoadBalancer` public :
```sh {: screen}
NAME: myvpcnlb
Namespace: default
Labels: <none>
Annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: nlb
Selector: app=echo-server
Type: LoadBalancer
IP: 172.21.204.12
LoadBalancer Ingress: 169.XXX.XXX.XXX
Port: tcp-80 80/TCP
TargetPort: 8080/TCP
NodePort: tcp-80 32022/TCP
Endpoints: 172.17.17.133:8080,172.17.22.68:8080,172.17.34.18:8080 + 3 more...
Session Affinity: None
External Traffic Policy: Local
HealthCheck NodePort: 30882
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning SyncLoadBalancerFailed 13m (x5 over 15m) service-controller Error syncing load balancer: failed to ensure load balancer: kube-bqcssbbd0bsui62odcdg-2d93b07decf641d2ad3f9c2985122ec1 for service default/myvpcnlb is busy: offline/create_pending
Normal EnsuringLoadBalancer 9m27s (x7 over 15m) service-controller Ensuring load balancer
Normal EnsuredLoadBalancer 9m20s service-controller Ensured load balancer
Normal CloudVPCLoadBalancerNormalEvent 8m17s ibm-cloud-provider Event on cloud load balancer myvpcnlb for service default/myvpcnlb with UID 2d93b07d-ecf6-41d2-ad3f-9c2985122ec1: The VPC load balancer that routes requests to this Kubernetes LoadBalancer service is currently online/active.
```
-
Vérifiez que l'équilibreur de charge de réseau VPC a bien été créé dans votre VPC. Dans la sortie, vérifiez que pour l'équilibreur de charge de réseau VPC, la zone Operating Status est définie sur
onlineet la zone Provision Status, suractive.Ne renommez pas les équilibreurs de charge de réseau VPC créés automatiquement pour les services
LoadBalancer. Si vous renommez un équilibreur de charge de réseau VPC, Red Hat OpenShift on IBM Cloud crée automatiquement un autre équilibreur de charge de réseau VPC pour le serviceLoadBalancer.ibmcloud is load-balancersDans l'exemple de sortie de l'interface de ligne de commande suivant, l'équilibreur de charge de réseau VPC nommé
kube-bh077ne10vqpekt0domg-046e0f754d624dca8b287a033d55f96eest créé pour le service KubernetesLoadBalancer:ID Name Created Host Name Is Public Listeners Operating Status Pools Private IPs Provision Status Public IPs Subnets Resource Group 06496f64-a689-4693-ba23-320959b7b677 kube-bh077ne10vqpekt0domg-046e0f754d624dca8b287a033d55f96e 8 minutes ago 1234abcd-us-south.lb.appdomain.cloud yes 95482dcf-6b9b-4c6a-be54-04d3c46cf017 online 717f2122-5431-403c-b21d-630a12fc3a5a 10.241.0.7 active 169.63.99.184 c6540331-1c1c-40f4-9c35-aa42a98fe0d9 00809211b934565df546a95f86160f62 -
Accédez à l'adresse IP du service Kubernetes
LoadBalancerque vous avez trouvé à l'étape 4 et votre port d'application au format<external_IP>:<app_port>. -
Facultatif : répétez ces étapes pour déployer un équilibreur de charge de réseau VPC public dans chaque zone dans laquelle vous souhaitez exposer votre application. Vous pouvez ensuite enregistrer les adresses IP externes de l'équilibreur de charge de réseau VPC dans chaque zone avec un sous-domaine DNS.
Ne supprimez pas les sous-réseaux que vous avez associés à votre cluster lors de la création du cluster ou lorsque vous ajoutez des noeuds worker dans une zone. Si vous supprimez un sous-réseau VPC que votre cluster a utilisé, des problèmes peuvent se produire au niveau des NLB VPC qui utilisent des adresses IP à partir du sous-réseau et il se peut que vous ne puissiez pas créer de nouveaux équilibreurs de charge.
Configuration d'un équilibreur de charge de réseau à l'aide d'une plage de ports
Les plages de ports peuvent être utilisées dans les équilibreurs de charge de réseau publics lorsqu'il est nécessaire d'héberger un service à partir d'un nom d'hôte unique comportant plusieurs applications de back end, chacune étant à l'écoute
sur un numéro de port distinct. Pour utiliser des plages de ports dans votre cluster Kubernetes, une configuration manuelle doit être effectuée. Tout d'abord, l'option ibm-load-balancer-cloud-provider-vpc-port-range doit être
définie. Il peut inclure une ou plusieurs plages, délimitées chacune par une virgule. La valeur spec.ports.port doit également être définie sur la valeur minimale de la plage de ports.
Dans l'exemple suivant, une plage de ports 30000-30010 est utilisée.
Les services Nodeport doivent être créés manuellement pour chaque déploiement dans lequel le service NLB transmet la demande. Le numéro de port de chacun de ces services Nodeport doit être compris dans la plage de ports configurée dans le service NLB.
Dans l'exemple de diagramme suivant, un service Nodeport avec le port 30000 est créé pour le déploiement 1 tandis qu'un service Nodeport avec le port 30001 est créé pour le déploiement 2.
L'utilisateur effectue une demande sur le port 30001 de l'équilibreur de charge de réseau contenant la plage de ports. Cette demande est envoyée au service NLB VPC qui dirige la demande vers le service Nodeport dans le cluster qui est également à l'écoute sur le port 30001, qui, dans ce cas, est destiné au déploiement 2. Le service Nodeport dirige ensuite la demande vers le port cible des pods sélectionnés du déploiement 2.
Créez un équilibreur de charge de réseau qui utilise une plage de ports à l'aide de l'exemple suivant. Le sélecteur et les pods de back end doivent être associés au service d'équilibreur de charge de plage de ports afin que les diagnostics d'intégrité renvoient des résultats et que les données soient distribuées aux ports de la plage de ports. Pour utiliser la plage de ports, vous devez créer des services NodePort supplémentaires dont les valeurs de port sont comprises dans la plage définie par le service d'équilibreur de charge.
-
Sauvegardez l'exemple de configuration
LoadBalancersuivant dans un fichier appeléloadbalancer.yaml.apiVersion: v1 kind: Service metadata: annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: nlb service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-port-range: 30000-30010 name: nlb-port-range spec: externalTrafficPolicy: Cluster ports: - port: 30000 # Must match min from the port range protocol: TCP nodePort: 30011 # Can be port in range or not targetPort: 8080 selector: app: echo-server # Must be valid for health checks to work type: LoadBalancer -
Créez le service.
oc apply -f loadbalancer.yaml -
Créez un service
NodePortavec des valeurs de port qui se trouvent dans la plage de ports spécifiée dans leLoadBalancerque vous avez créé précédemment.apiVersion: v1 kind: Service metadata: name: echo-server-node-port spec: ports: - port: 80 protocol: TCP # The protocol of the port range nodePort: 30003 # Node port in the port range targetPort: 8080 selector: app: echo-server type: NodePort -
Créer le service NodePort.
oc apply -f nodeport.yaml -
Permet d'accéder à un port compris dans la plage fournie par l'équilibreur de charge de réseau.
curl https://<public ip assigned to NLB>:3000330003= est un port de noeud dans la plage qui répond à la demande- Les autres ports de la plage ne répondent pas sauf si des services de port de noeud supplémentaires sont créés.
Configuration d'un équilibreur de charge de réseau VPC privé
Exposez votre application au trafic réseau privé en configurant un service Kubernetes LoadBalancer dans chaque zone de votre cluster. Lorsque vous créez le service Kubernetes LoadBalancer, un équilibreur de charge
de réseau privé pour VPC qui achemine les demandes vers votre application est automatiquement créé dans votre VPC en dehors de votre cluster.
Avant de commencer
- Assurez-vous de disposer du rôle d’accès au service IAM Writer ou Manager IBM Cloud pour l’espace de noms dans lequel vous déployez
le service
LoadBalancerKubernetes pour le VPC NLB. - Connectez-vous à votre réseau privé VPC, par exemple, via une connexion VPN VPC.
- Accédez à votre cluster Red Hat OpenShift.
- Pour afficher les équilibreurs de charge de réseau VPC, installez le plug-in
infrastructure-service. Le préfixe pour l'exécution des commandes estibmcloud is.ibmcloud plugin install infrastructure-service
Pour permettre à votre application de recevoir des demandes de réseau privé,
-
Créez un sous-réseau VPC dédié à votre équilibreur de charge de réseau VPC. Ce sous-réseau doit exister dans le même VPC et dans le même emplacement que votre cluster, mais il ne peut pas être connecté à votre cluster ou à vos nœuds worker.
- Dans le tableau de bord des sous-réseaux VPC, cliquez sur Nouveau sous-réseau.
- Entrez un nom pour votre sous-réseau.
- Sélectionnez l'emplacement de votre cluster et la zone où vous souhaitez créer l'équilibreur de charge de réseau VPC.
- Sélectionnez le nom du VPC où se trouve le cluster.
- Indiquez le nombre d'adresses IP à créer. Etant donné que ce sous-réseau est dédié à l'équilibreur de charge de réseau VPC, vous pouvez choisir une taille plus petite, par exemple 16. Vous ne pouvez pas modifier le nombre d'IP qu'un
sous-réseau VPC a plus tard. Si vous entrez une plage d'adresses IP, n'utilisez pas les plages réservées suivantes :
172.16.0.0/16,172.18.0.0/16,172.19.0.0/16et172.20.0.0/16. - Cliquez sur Créer un sous-réseau. Une fois le sous-réseau mis à disposition, notez son ID.
-
Si le client qui doit se connecter à votre application via l'équilibreur de charge de réseau VPC se trouve en dehors du VPC et de la zone où vous avez créé le sous-réseau VPC dédié, vous devez créer une table de routage Ingress personnalisée. Les équilibreurs de charge de réseau VPC privés peuvent ajouter des règles à la table de routage personnalisée afin de garantir la disponibilité des services pour certains incidents. Pour plus d'informations, voir la table dans les sections Limitations connues et A propos des tables de routage et des routes.
- Dans le tableau de bord des tables de routage VPC, cliquez sur Créer.
- Entrez un nom pour votre table de routage.
- Sélectionnez l'emplacement et la zone où vous avez créé le sous-réseau dédié.
- Sélectionnez le nom du VPC où se trouve votre sous-réseau.
- Pour Type de trafic, sélectionnez Ingress.
- Selon l'endroit à partir duquel le client accède à votre application, choisissez une source de trafic. Pour plus d'informations sur la configuration des connexions à votre réseau privé VPC, voir la documentation relative au choix du VPN IBM Cloud VPC, de Transit Gateway ou de Direct Link pour la connectivité VPC.
- Réseau sur site : Direct link
- Autre infrastructure VPC ou classique : Transit Gateway
- Autre zone dans le même VPC : VPC zone
-
Déployez votre application sur le cluster. Prenez soin d'ajouter un libellé à votre déploiement dans la section "metadata" de votre fichier de configuration de déploiement. Ce libellé personnalisé identifie tous les pods dans lesquels s'exécute votre application afin de pouvoir les inclure dans l'équilibrage de charge.
-
Créez un fichier YAML de configuration pour votre service Kubernetes
LoadBalancer. Nommez le service au format<app_name>-vpc-nlb-<VPC_zone>.apiVersion: v1 kind: Service metadata: name: <app_name>-vpc-nlb-<VPC_zone> annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name: "my-load-balancer" service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "nlb" service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "private" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets: "<subnet_ID>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector: "<key>=<value>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-udp: "<tcp_port" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-protocol: "<protocol>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-port: "<port>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-path: "<url_path>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-delay: "<value>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-timeout: "<value>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-timeout: "<value>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-member-quota: "<value>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-security-group: "<security-group>" spec: type: LoadBalancer selector: <selector_key>: <selector_value> ports: - name: http protocol: TCP port: 8080 targetPort: 8080 targetPort: 8080 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise. - name: https protocol: TCP port: 443 targetPort: 443 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise. externalTrafficPolicy: Local # Specify Local or Cluster.service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name: "my-load-balancer"- Facultatif. Incluez un nom unique pour rendre votre équilibreur de charge VPC persistant. Les équilibreurs de charge VPC persistants ne sont pas supprimés lorsque le cluster auquel ils appartiennent est supprimé. Pour plus d'informations, voir Persistent VPC load balancers.
service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "nlb"- Obligatoire : Annotation pour créer un équilibreur de charge de réseau VPC.
service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "private"- Obligatoire : Annotation utilisée pour spécifier un service qui accepte des demandes privées.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets- Obligatoire : Annotation permettant de spécifier le sous-réseau dédié sur lequel l'équilibreur de charge de réseau VPC est déployé. La valeur peut être spécifiée en tant qu'ID de sous-réseau VPC, nom de sous-réseau VPC ou CIDR de sous-réseau
VPC. Vous ne devez spécifier qu'un seul sous-réseau. Le sous-réseau doit figurer dans le même VPC que votre cluster et dans une zone où se trouvent des noeuds worker pour votre cluster, mais aucun noeud worker ne peut être associé
à ce sous-réseau. Les noeuds worker qui se trouvent dans la même zone que ce sous-réseau sont configurés pour recevoir le trafic de l'équilibreur de charge de réseau VPC. Pour afficher les sous-réseaux dans tous les groupes de ressources,
exécutez
ibmcloud oc subnets --provider vpc-gen2 --vpc-id <vpc> --zone <zone>. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector-
- Facultatif : Annotation utilisée pour spécifier un sélecteur de libellé de noeud worker. Dans la même zone que le sous-réseau dédié pour l'équilibreur de charge de réseau VPC, vous pouvez configurer des noeuds worker spécifiques pour recevoir le trafic en sélectionnant l'une des clés de sélecteur de libellé prises en charge. Vous ne pouvez inclure qu'un seul sélecteur de libellé dans l'annotation et ce sélecteur doit être spécifié au format
"key=value". Si cette annotation n'est pas spécifiée, tous les noeuds worker qui se trouvent dans la même zone que le sous-réseau VPC que vous avez spécifié dans l'annotationservice.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnetssont configurés pour recevoir le trafic de l'équilibreur de charge de réseau VPC. Si elle est spécifiée, les libellésdedicated: edgesur les noeuds worker sont ignorés. - Les clés suivantes sont autorisées. -
ibm-cloud.kubernetes.io/internal-ip-ibm-cloud.kubernetes.io/machine-type-ibm-cloud.kubernetes.io/os-ibm-cloud.kubernetes.io/region-ibm-cloud.kubernetes.io/subnet-id-ibm-cloud.kubernetes.io/worker-pool-id-ibm-cloud.kubernetes.io/worker-pool-name-ibm-cloud.kubernetes.io/zone-kubernetes.io/arch-kubernetes.io/hostname-kubernetes.io/os-node.kubernetes.io/instance-type-topology.kubernetes.io/region-topology.kubernetes.io/zone
- Facultatif : Annotation utilisée pour spécifier un sélecteur de libellé de noeud worker. Dans la même zone que le sous-réseau dédié pour l'équilibreur de charge de réseau VPC, vous pouvez configurer des noeuds worker spécifiques pour recevoir le trafic en sélectionnant l'une des clés de sélecteur de libellé prises en charge. Vous ne pouvez inclure qu'un seul sélecteur de libellé dans l'annotation et ce sélecteur doit être spécifié au format
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-udp- Facultatif : Spécifiez un port de noeud TCP à utiliser pour les contrôles d'intégrité TCP dans un équilibreur de charge UDP. Requis pour les équilibreurs de charge UDP ayant
externalTrafficPolicydéfini surCluster. Voir Configuration des contrôles d'intégrité TCP pour les équilibreurs de charge UDP pour plus d'informations avant de définir une valeur de port. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-protocol- Facultatif: cette annotation définit le protocole de diagnostic d'intégrité sur la ressource d'équilibreur de charge VPC associée au service d'équilibreur de charge Kubernetes. Normalement, le protocole de diagnostic
d'intégrité de l'équilibreur de charge VPC est déterminé par la valeur du paramètre
externalTrafficPolicydans la spécification de service d'équilibreur de charge Kubernetes. Cette annotation remplace cette logique. Cette annotation ne modifie pas le comportement de Kuberneteset de kube-proxy en particulier en ce qui concerne les différents paramètres deexternalTrafficPolicy. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-port- Facultatif. Le port TCP est utilisé pour les contrôles d'intégrité. Cette annotation s'applique uniquement si
ibm-load-balancer-cloud-provider-vpc-health-check-protocolest également spécifié.- Si le port TCP spécifié se trouve en dehors de la plage de ports des nœuds Kubernetes (30 000-32 767), le groupe de sécurité VPC appliqué aux nœuds de travail du cluster doit être modifié afin d’autoriser le trafic entrant sur ce port.
- Si cette annotation est appliquée à un service d'équilibrage de charge Kubernetes associé à un VPC ALB, les règles sortantes du groupe de sécurité attribué au VPC ALB doivent être modifiées afin d’autoriser le trafic sortant vers le port TCP spécifié.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-path- Facultatif. Chemin d'accès à l' URL s sur les contrôles d'intégrité pour les contrôles d'intégrité HTTP et HTTPs. Cette annotation s'applique uniquement si
ibm-load-balancer-cloud-provider-vpc-health-check-protocolest défini surhttpouhttps.- Le chemin d'accès URL doit respecter le format d'une cible de requête au format d'origine.
- Si cette annotation n'est pas spécifiée et que l'annotation
ibm-load-balancer-cloud-provider-vpc-health-check-protocolest définie surhttpouhttps, la valeur par défaut/est appliquée.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-delay- Facultatif. Nombre de secondes à attendre entre les tentatives de diagnostic d'intégrité. Par défaut, cette valeur est définie sur
5, avec un minimum de2et un maximum de60. Cette valeur doit être supérieure à la valeuribm-load-balancer-cloud-provider-vpc-health-check-timeout, qui est définie sur2par défaut. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-timeout- Facultatif. Nombre de secondes d'attente d'une réponse à un diagnostic d'intégrité. Par défaut, cette valeur est définie sur
2, avec un minimum de1et un maximum de59. Cette valeur doit être inférieure à la valeuribm-load-balancer-cloud-provider-vpc-health-check-delay, qui est définie sur5par défaut. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-retries- Nombre maximal de nouvelles tentatives de diagnostic d'intégrité pour l'équilibreur de charge VPC. Par défaut, cette valeur est définie sur
2, avec un minimum de1et un maximum de10. selector- Clé de libellé (
<selector_key>) et valeur (<selector_value>) que vous avez utilisées dans la sectionspec.template.metadata.labelsdu déploiement de votre application YAML. Ce libellé personnalisé identifie tous les pods dans lesquels s'exécute votre application afin de pouvoir les inclure dans l'équilibrage de charge. port- Port sur lequel le service est à l'écoute.
targetPort- Facultatif : Port vers lequel le service achemine le trafic. L'application s'exécutant dans le pod doit être à l'écoute du trafic entrant de type TCP sur ce port cible. Le port cible est souvent défini de manière statique dans l'image qui s'exécute dans le pod d'application. Le port cible configuré dans le pod est différent du port de noeud du service et peut également être différent du port externe configuré sur l'équilibreur de charge VPC.
externalTrafficPolicy-
- Obligatoire. Spécifier
LocalouCluster. - Définissez cette option sur
Localpour conserver l'adresse IP source des requêtes des clients adressées à vos applications. Ce paramètre empêche le trafic entrant d'être acheminé vers un autre noeud. Cette option configure également les contrôles d'intégrité HTTP. - Si
Clusterest défini, le DSR n'est mis en œuvre qu'à partir du nœud de travail vers lequel le VPC NLB transfère initialement la requête entrante. Une fois la demande entrante arrivée, elle est envoyée à un noeud worker qui contient le pod d'application, qui peut se trouver dans une autre zone. La réponse du pod d'application est envoyée au noeud worker d'origine et ce dernier utilise DSR pour envoyer la réponse directement au client, en contournant l'équilibreur de charge de réseau VPC. Cette option configure également les contrôles d'intégrité TCP. Pour les équilibreurs de charge d' UDP, leservice.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-udpest obligatoire si vous choisissez l'optionCluster. Pour plus d'informations, consultez la section Configuration des contrôles d'intégrité d' TCP pour les équilibreurs de charge UDP.
- Obligatoire. Spécifier
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-member-quota- Optionnel. Le nombre de nœuds de travail par zone vers lesquels l'équilibreur de charge se dirige. La valeur par défaut est de 8. Pour un cluster avec des nœuds de travail dans trois zones, cela signifie que l'équilibreur de charge achemine les données vers 24 nœuds de travail au total. Le nombre total de nœuds de travail dans toutes les zones vers lesquelles l'équilibreur de charge se dirige ne peut pas dépasser 50. Si la grappe compte moins de 50 nœuds de travail dans toutes les zones, spécifiez 0 pour router vers tous les nœuds de travail d'une zone.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-security-group- Optionnel. Un groupe de sécurité géré par le client à ajouter à l'équilibreur de charge VPC. Si vous ne souhaitez pas utiliser le groupe de sécurité géré par IBM, indiquez un groupe de sécurité que vous possédez et gérez. Cette option supprime le groupe de sécurité géré par IBM et le remplace par le groupe de sécurité que vous spécifiez. La suppression de l'annotation d'un équilibreur de charge existant remplace le groupe de sécurité que vous avez ajouté par le groupe de sécurité géré par IBM. Vous pouvez ajouter ou supprimer cette annotation à tout moment. Vous êtes responsable de la gestion de votre groupe de sécurité et de sa mise à jour.
-
Créez le service Kubernetes
LoadBalancerdans votre cluster.oc apply -f <filename>.yaml -n <namespace> -
Vérifiez que le service Kubernetes
LoadBalancera bien été créé dans votre cluster. Lorsque le service est créé, la zone LoadBalancer Ingress est renseignée avec une adresse IP externe affectée par l'équilibreur de charge de réseau VPC.
La mise à disposition dans votre VPC de l'équilibreur de charge de réseau VPC dure quelques minutes. L'adresse IP externe de votre service Kubernetes LoadBalancer peut être à l'état pending jusqu'à
ce que l'équilibreur de charge de réseau VPC ait été entièrement mis à disposition.
```sh {: pre}
oc describe svc myloadbalancer -n <namespace>
```
Exemple de sortie de l'interface de ligne de commande pour un service `LoadBalancer` privé :
```sh {: screen}
NAME: myvpcnlb
Namespace: default
Labels: <none>
Annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: nlb
service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "private"
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets: "<subnet1_ID,subnet2_ID>"
Selector: app=echo-server
Type: LoadBalancer
IP: 172.21.204.12
LoadBalancer Ingress: 10.XXX.XXX.XXX
Port: tcp-80 80/TCP
TargetPort: 8080/TCP
NodePort: tcp-80 32022/TCP
Endpoints: 172.17.17.133:8080,172.17.22.68:8080,172.17.34.18:8080 + 3 more...
Session Affinity: None
External Traffic Policy: Local
HealthCheck NodePort: 30882
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning SyncLoadBalancerFailed 13m (x5 over 15m) service-controller Error syncing load balancer: failed to ensure load balancer: kube-bqcssbbd0bsui62odcdg-2d93b07decf641d2ad3f9c2985122ec1 for service default/myvpcnlb is busy: offline/create_pending
Normal EnsuringLoadBalancer 9m27s (x7 over 15m) service-controller Ensuring load balancer
Normal EnsuredLoadBalancer 9m20s service-controller Ensured load balancer
Normal CloudVPCLoadBalancerNormalEvent 8m17s ibm-cloud-provider Event on cloud load balancer myvpcnlb for service default/myvpcnlb with UID 2d93b07d-ecf6-41d2-ad3f-9c2985122ec1: The VPC load balancer that routes requests to this Kubernetes LoadBalancer service is currently online/active.
```
-
Vérifiez que l'équilibreur de charge de réseau VPC a bien été créé dans votre VPC. Dans la sortie, vérifiez que pour l'équilibreur de charge de réseau VPC, la zone Operating Status est définie sur
onlineet la zone Provision Status, suractive.ibmcloud is load-balancersDans l'exemple de sortie de l'interface de ligne de commande suivant, l'équilibreur de charge de réseau VPC nommé
kube-bh077ne10vqpekt0domg-046e0f754d624dca8b287a033d55f96eest créé pour le service KubernetesLoadBalancer:ID Name Created Host Name Is Public Listeners Operating Status Pools Private IPs Provision Status Public IPs Subnets Resource Group 06496f64-a689-4693-ba23-320959b7b677 kube-bh077ne10vqpekt0domg-046e0f754d624dca8b287a033d55f96e 8 minutes ago 1234abcd-us-south.lb.appdomain.cloud no 95482dcf-6b9b-4c6a-be54-04d3c46cf017 online 717f2122-5431-403c-b21d-630a12fc3a5a 10.XXX.XXX.XXX active - c6540331-1c1c-40f4-9c35-aa42a98fe0d9 00809211b934565df546a95f86160f62 -
A partir de votre connexion au réseau privé VPC, accédez à l'adresse IP du service Kubernetes
LoadBalancerque vous avez trouvé à l'étape 6 et votre port d'application au format<external_IP>:<app_port>. -
Facultatif : répétez ces étapes pour déployer un équilibreur de charge de réseau VPC privé dans chaque zone dans laquelle vous souhaitez exposer votre application. Vous pouvez ensuite enregistrer les adresses IP externes de l'équilibreur de charge de réseau VPC dans chaque zone avec un sous-domaine DNS.
Enregistrement d'un enregistrement DNS et d'un certificat TLS
Les équilibreurs de charge de réseau VPC fournissent les adresses IP externes statiques par l'intermédiaire desquelles vous pouvez accéder à votre application. Pour enregistrer un certificat SSL pour votre domaine d'application afin de prendre en charge HTTPS, vous pouvez créer un sous-domaine fourni par IBM ou apporter votre propre domaine personnalisé.
Par exemple, supposons que vous disposiez d'un cluster multizone et que vous exécutiez des répliques de votre application sur des noeuds worker dans chaque zone de votre cluster. Vous créez un équilibreur de charge de réseau VPC par zone pour exposer les répliques d'application. Vous pouvez ensuite enregistrer les adresses IP externes fournies par chaque équilibreur de charge de réseau VPC avec une entrée DNS.
Une fois que vous avez créé un sous-domaine DNS pour les NLB VPC, vous ne pouvez pas utiliser les commandes nlb-dns health-monitor pour créer un contrôle d'intégrité personnalisé. Au lieu de cela, le diagnostic d'intégrité VPC
par défaut est utilisé. Pour plus d'informations, voir la documentation VPC.
- Créez un équilibreur de charge de réseau VPC par zone pour votre application. Veillez à définir un port HTTPS dans votre service Kubernetes
LoadBalancerqui configure l'équilibreur de charge de réseau VPC. - Pour utiliser le certificat SSL afin d'accéder à votre application via HTTPS, vous devez faire en sorte que votre application soit en mesure de mettre fin aux connexions TLS.
Pour enregistrer les adresses IP de NLB VPC avec un sous-domaine DNS,
-
Extrayez l'adresse IP externe de votre équilibreur de charge.
oc get svc -o wideExemple de sortie
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR ... myapp-vpc-nlb-jp-tok-3 LoadBalancer 172.21.xxx.xxx 169.xx.xxx.xx 8080:30532/TCP 1d run=webserver -
Créez un sous-domaine DNS personnalisé ou fourni par IBM pour l'adresse IP.
-
Domaine personnalisé :
- Enregistrez votre domaine personnalisé en utilisant votre fournisseur de DNS (Domain Name Service) ou IBM Cloud DNS.
- Définissez un alias pour votre domaine personnalisé en spécifiant les adresses IP d'équilibreur de charge comme enregistrements A.
-
Sous-domaine fourni par IBM : U=utilisez les commandes
nlb-dnspour générer un sous-domaine avec un certificat SSL pour les adresses IP. IBM Cloud prend en charge automatiquement la génération et la gestion du certificat SSL générique pour le sous-domaine.- Créez un sous-domaine DNS et un certificat SSL.
ibmcloud oc nlb-dns create vpc-gen2 --type public --cluster <cluster_name_or_id> --ip <vpc_nlb1_ip> --ip <vpc_nlb2_ip> --ip <vpc_nlb3_ip> - Vérifiez que le sous-domaine est créé. Pour plus d'informations, voir Description du format de sous-domaine.
Exemple de sortieibmcloud oc nlb-dns ls --cluster <cluster_name_or_id>Subdomain IP(s) Health Monitor SSL Cert Status SSL Cert Secret Name mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud 169.46.xx.x,169.48.xxx.xx,169.48.xxx.xx None created <certificate>
- Créez un sous-domaine DNS et un certificat SSL.
-
-
Ouvrez un navigateur Web et entrez l'URL permettant d'accéder à votre application via le sous-domaine.
Pour utiliser le certificat SSL afin d'accéder à votre application via HTTPS, prenez soin de définir un port HTTPS dans votre service Kubernetes LoadBalancer. Vous pouvez vérifier que les demandes
routent correctement via le port HTTPS en exécutant curl -v --insecure https://<domain>. Une erreur de connexion indique qu'aucun port HTTPS n'est ouvert sur le service. De plus, vérifiez que les connexions TLS peuvent
être interrompues par votre application. Vous pouvez vérifier que votre application termine correctement TLS en exécutant curl -v https://<domain>. Une erreur de certificat indique que votre application n'arrête pas correctement
les connexions TLS.
Configuration d'un équilibreur de charge d'application pour VPC
Exposez votre application sur le réseau public ou sur le réseau privé en configurant un service Kubernetes LoadBalancer dans votre cluster. Lorsque vous exposez votre application, un équilibreur de charge d'application pour VPC
qui achemine les demandes vers votre application est automatiquement créé dans votre VPC en dehors de votre cluster. Les ALB VPC prennent uniquement en charge le protocole TCP.
Ne confondez pas les équilibreurs de charge d'application pour VPC avec les équilibreurs de charge d'application Ingress d'Red Hat OpenShift on IBM Cloud. Les équilibreurs de charge d'application pour VPC sont exécutés en dehors de votre cluster
dans votre VPC et sont configurés par les services Kubernetes LoadBalancer que vous créez. Les équilibreurs de charge d'application Ingress sont des contrôleurs
Ingress exécutés sur des noeuds worker dans votre cluster.
Configuration d'un équilibreur de charge d'application VPC public ou privé
Avant de commencer
- Assurez-vous de disposer du rôle d’accès au service IAM Writer ou Manager IBM Cloud pour l’espace de noms dans lequel vous déployez
le service
LoadBalancerKubernetes pour le VPC NLB. - Accédez à votre cluster Red Hat OpenShift.
- Pour afficher les équilibreurs de charge d'application VPC, installez le plug-in
infrastructure-service. Le préfixe pour l'exécution des commandes estibmcloud is.ibmcloud plugin install infrastructure-service
Pour permettre à votre application de recevoir des demandes publiques ou privées,
-
Déployez votre application sur le cluster. Prenez soin d'ajouter un libellé à votre déploiement dans la section "metadata" de votre fichier de configuration de déploiement. Ce libellé personnalisé identifie tous les pods dans lesquels s'exécute votre application afin de pouvoir les inclure dans l'équilibrage de charge.
-
Créez un fichier YAML de configuration pour votre service Kubernetes
LoadBalanceret affectez le nommyloadbalancer.yamlau fichier.apiVersion: v1 kind: Service metadata: name: myloadbalancer annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name: "my-load-balancer" service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "proxy-protocol" service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "<public_or_private>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector: "<key>=<value>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets: "<subnet1_ID,subnet2_ID>" service.kubernetes.io/ibm-load-balancer-cloud-provider-zone: "<zone>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-protocol: "<protocol>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-port: "<port>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-path: "<url_path>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-delay: "<value>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-timeout: "<value>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-retries: "<value>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-idle-connection-timeout: "<value>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-member-quota: "<value>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-security-group: "<security-group>" spec: type: LoadBalancer selector: <selector_key>: <selector_value> ports: - name: http protocol: TCP port: 8080 targetPort: 8080 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise. - name: https protocol: TCP port: 443 targetPort: 443 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise. externalTrafficPolicy: Local # Specify Local or Cluster.service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name: "my-load-balancer"-
Facultatif. Incluez un nom unique pour rendre votre équilibreur de charge VPC persistant. Les équilibreurs de charge VPC persistants ne sont pas supprimés lorsque le cluster auquel ils appartiennent est supprimé. Pour plus d'informations, voir Persistent VPC load balancers.
service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "proxy-protocol"-
Facultatif: activez le protocole PROXY. L'équilibreur de charge transmet les informations de connexion client, notamment l'adresse IP du client, l'adresse IP du serveur proxy et les deux numéros de port, contenues dans les en-têtes de demande, à votre application de back end. Notez que votre application de back end doit être configurée pour accepter le protocole PROXY. Par exemple, vous pouvez configurer une application NGINX pour qu'elle accepte le protocole PROXY en suivant ces étapes.
service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type-
Annotation permettant de spécifier un service qui accepte des demandes publiques ou privées. Si vous n'incluez pas cette annotation, un
LoadBalancerpublic est créé. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector-
- Annotation permettant de spécifier un sélecteur d'étiquette de nœud de travail. Pour identifier les noeuds worker qui reçoivent du trafic, vous pouvez sélectionner l'une des clés de sélecteur de libellé prises en charge. Vous ne pouvez inclure qu'un seul sélecteur de libellé dans l'annotation et ce sélecteur doit être spécifié au format
"key=value". Si cette annotation n'est pas spécifiée, tous les noeuds worker de votre cluster sont configurés pour recevoir le trafic de l'équilibreur de charge d'application VPC. Si elle est spécifiée, cette annotation a priorité sur l'annotationservice.kubernetes.io/ibm-load-balancer-cloud-provider-zoneet tous les libellésdedicated: edgedes noeuds worker sont ignorés. - Les clés suivantes sont admises : -
ibm-cloud.kubernetes.io/internal-ip-ibm-cloud.kubernetes.io/machine-type-ibm-cloud.kubernetes.io/os-ibm-cloud.kubernetes.io/region-ibm-cloud.kubernetes.io/subnet-id-ibm-cloud.kubernetes.io/worker-pool-id-ibm-cloud.kubernetes.io/worker-pool-name-ibm-cloud.kubernetes.io/zone-kubernetes.io/arch-kubernetes.io/hostname-kubernetes.io/os-node.kubernetes.io/instance-type-topology.kubernetes.io/region-topology.kubernetes.io/zone
- Annotation permettant de spécifier un sélecteur d'étiquette de nœud de travail. Pour identifier les noeuds worker qui reçoivent du trafic, vous pouvez sélectionner l'une des clés de sélecteur de libellé prises en charge. Vous ne pouvez inclure qu'un seul sélecteur de libellé dans l'annotation et ce sélecteur doit être spécifié au format
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets-
Annotation permettant de spécifier un ou plusieurs sous-réseaux sur lesquels le service VPC ALB est déployé. Si elle est spécifiée, cette annotation a priorité sur l'annotation
service.kubernetes.io/ibm-load-balancer-cloud-provider-zone. Vous pouvez spécifier un sous-réseau différent dans le même VPC que les sous-réseaux auxquels votre cluster est connecté. Dans ce cas, même si l'équilibreur de charge d'application VPC est déployé sur un autre sous-réseau du même VPC, il peut tout de même router le trafic vers vos noeuds worker sur les sous-réseaux du cluster. Pour afficher les sous-réseaux dans tous les groupes de ressources, exécutezibmcloud oc subnets --provider vpc-gen2 --vpc-id <vpc> --zone <zone>. service.kubernetes.io/ibm-load-balancer-cloud-provider-zone-
Annotation permettant de spécifier une zone VPC à laquelle votre cluster est connecté. Lorsque vous spécifiez une zone dans cette annotation, deux processus se produisent.
- L'équilibreur de charge d'application VPC est déployé sur le sous-réseau de cette zone auquel vos noeuds worker sont connectés.
- euls les noeuds worker de votre cluster qui se trouvent dans cette zone sont configurés pour recevoir du trafic des équilibreurs de charge d'application VPC.
-
Pour afficher les zones, exécutez
ibmcloud oc zone ls --provider vpc-gen2. -
- Pour placer l'équilibreur de charge dans une zone spécifique, vous devez spécifier cette annotation lorsque vous créez l'équilibreur de charge. Si vous modifiez ultérieurement cette annotation dans une autre zone, l'équilibreur de charge proprement dit n'est pas déplacé vers la nouvelle zone. Toutefois, l'équilibreur de charge est reconfiguré pour envoyer le trafic aux nœuds worker uniquement dans la nouvelle zone.
- Si le libellé
dedicated: edgeest défini sur les nœuds worker et que vous spécifiez cette annotation, seuls les nœuds périphériques de la zone spécifiée sont configurés pour recevoir du trafic. Les nœuds périphériques dans les autres zones et les nœuds non périphériques de la zone spécifiée ne reçoivent pas de trafic de l'équilibreur de charge.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-protocol-
Facultatif: cette annotation définit le protocole de diagnostic d'intégrité sur la ressource d'équilibreur de charge VPC associée au service d'équilibreur de charge Kubernetes. Normalement, le protocole de diagnostic d'intégrité de l'équilibreur de charge VPC est déterminé par la valeur du paramètre
externalTrafficPolicydans la spécification de service d'équilibreur de charge Kubernetes. Cette annotation remplace cette logique. Cette annotation ne modifie pas le comportement de Kuberneteset de kube-proxy en particulier en ce qui concerne les différents paramètres deexternalTrafficPolicy. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-port-
Facultatif. Le port TCP est utilisé pour les contrôles d'intégrité. Cette annotation s'applique uniquement si
ibm-load-balancer-cloud-provider-vpc-health-check-protocolest également spécifié.- Si le port TCP spécifié se trouve en dehors de la plage de ports des nœuds Kubernetes (30 000-32 767), le groupe de sécurité VPC appliqué aux nœuds de travail du cluster doit être modifié afin d’autoriser le trafic entrant sur ce port.
- Si cette annotation est appliquée à un service d'équilibrage de charge Kubernetes associé à un VPC ALB, les règles sortantes du groupe de sécurité attribué au VPC ALB doivent être modifiées afin d’autoriser le trafic sortant vers le port TCP spécifié.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-path-
Facultatif. Chemin d'accès à l' URL s sur les contrôles d'intégrité pour les contrôles d'intégrité HTTP et HTTPs. Cette annotation s'applique uniquement si
ibm-load-balancer-cloud-provider-vpc-health-check-protocolest défini surhttpouhttps.- Le chemin d'accès URL doit respecter le format d'une cible de requête au format d'origine.
- Si cette annotation n'est pas spécifiée et que l'annotation
ibm-load-balancer-cloud-provider-vpc-health-check-protocolest définie surhttpouhttps, la valeur par défaut/est appliquée.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-delay-
Facultatif. Nombre de secondes à attendre entre les tentatives de diagnostic d'intégrité. Par défaut, cette valeur est définie sur
5, avec un minimum de2et un maximum de60. Cette valeur doit être supérieure à la valeuribm-load-balancer-cloud-provider-vpc-health-check-timeout, qui est définie sur2par défaut. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-timeout-
Facultatif. Nombre de secondes d'attente d'une réponse à un diagnostic d'intégrité. Par défaut, cette valeur est définie sur
2, avec un minimum de1et un maximum de59. Cette valeur doit être inférieure à la valeuribm-load-balancer-cloud-provider-vpc-health-check-delay, qui est définie sur5par défaut. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-retries-
Nombre maximal de nouvelles tentatives de diagnostic d'intégrité pour l'équilibreur de charge VPC. Par défaut, cette valeur est définie sur
2, avec un minimum de1et un maximum de10. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-idle-connection-timeout-
Facultatif. Délai d'inactivité, en secondes, de la connexion du programme d'écoute. Le délai d'inactivité par défaut dépend des paramètres de votre compte. Généralement, cette valeur est
50. Toutefois, certains comptes sur liste autorisée ont des paramètres de délai d'attente plus importants. Si vous ne définissez pas l'annotation, vos équilibreurs de charge utilisent le paramètre de délai d'attente dans votre compte. Vous pouvez spécifier explicitement le délai d'attente en définissant cette annotation. La valeur minimale est50. La longueur maximale est de7200. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-private-dns-instance-crn: "private-dns-crn"-
Optionnel. Peut être appliqué uniquement pour les ALB VPC privés dans la version4.15 ou plus tard. Le DNS
instanceà associer à cet équilibreur de charge. Pour plus d'informations, voir Enregistrer un enregistrement DNS privé. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-private-dns-zone-id: "dns-zone-id"-
Optionnel. Peut être appliqué uniquement pour les ALB VPC privés dans la version4.15 ou plus tard. Le DNS
zoneà associer à cet équilibreur de charge. Pour plus d'informations, voir Enregistrer un enregistrement DNS privé. selector-
Clé de libellé (
<selector_key>) et valeur (<selector_value>) que vous avez utilisées dans la sectionspec.template.metadata.labelsdu déploiement de votre application YAML. Ce libellé personnalisé identifie tous les pods dans lesquels s'exécute votre application afin de pouvoir les inclure dans l'équilibrage de charge. port-
Port sur lequel le service est à l'écoute.
targetPort-
Facultatif : Port vers lequel le service achemine le trafic. L'application s'exécutant dans le pod doit être à l'écoute du trafic entrant de type TCP sur ce port cible. Le port cible est souvent défini de manière statique dans l'image qui s'exécute dans le pod d'application. Le port cible configuré dans le pod est différent du port de noeud du service et peut également être différent du port externe configuré sur l'équilibreur de charge VPC.
externalTrafficPolicy-
- Obligatoire. Spécifiez
LocalouCluster. - Définissez cette option sur
Localpour conserver l'adresse IP source des requêtes des clients adressées à vos applications. Ce paramètre empêche le trafic entrant d'être acheminé vers un autre noeud. Cette option configure également les contrôles d'intégrité HTTP. Pour les équilibreurs de charge d' UDP, leservice.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-udpest obligatoire si vous choisissez l'optionCluster. Pour plus d’informations, consultez la section Configuration des contrôles d’intégrité d’ TCP pour les équilibreurs de charge d’ UDP.
- Obligatoire. Spécifiez
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-member-quota-
Optionnel. Le nombre de nœuds de travail par zone vers lesquels l'équilibreur de charge se dirige. La valeur par défaut est de 8. Pour un cluster avec des nœuds de travail dans trois zones, cela signifie que l'équilibreur de charge achemine les données vers 24 nœuds de travail au total. Le nombre total de nœuds de travail dans toutes les zones vers lesquelles l'équilibreur de charge se dirige ne peut pas dépasser 50. Si la grappe compte moins de 50 nœuds de travail dans toutes les zones, spécifiez 0 pour router vers tous les nœuds de travail d'une zone.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-security-group-
Optionnel. Un groupe de sécurité géré par le client à ajouter à l'équilibreur de charge VPC. Si vous ne souhaitez pas utiliser le groupe de sécurité géré par IBM, indiquez un groupe de sécurité que vous possédez et gérez. Cette option supprime le groupe de sécurité géré par IBM et le remplace par le groupe de sécurité que vous spécifiez. La suppression de l'annotation d'un équilibreur de charge existant remplace le groupe de sécurité que vous avez ajouté par le groupe de sécurité géré par IBM. Vous pouvez ajouter ou supprimer cette annotation à tout moment. Vous êtes responsable de la gestion de votre groupe de sécurité et de sa mise à jour.
-
Créez le service Kubernetes
LoadBalancerdans votre cluster.oc apply -f myloadbalancer.yaml -n <namespace> -
Vérifiez que le service Kubernetes
LoadBalancera bien été créé dans votre cluster. Lorsque le service est créé, la zone LoadBalancer Ingress est renseignée avec un nom d'hôte affecté par l'équilibreur de charge d'application VPC.
La mise à disposition dans votre VPC de l'équilibreur de charge d'application VPC dure quelques minutes. Vous ne pouvez pas accéder à votre application en utilisant le nom d'hôte de votre service Kubernetes LoadBalancer jusqu'à ce que l'ALB VPC soit entièrement mis à disposition.
```sh {: pre}
oc describe svc myloadbalancer -n <namespace>
```
Exemple de sortie de l'interface de ligne de commande pour un service `LoadBalancer` public :
```sh {: screen}
NAME: myvpcalb
Namespace: default
Labels: <none>
Annotations:
Selector: app=echo-server
Type: LoadBalancer
IP: 172.21.XX.XX
LoadBalancer Ingress: 1234abcd-us-south.lb.appdomain.cloud
Port: tcp-80 80/TCP
TargetPort: 8080/TCP
NodePort: tcp-80 30610/TCP
Endpoints: 172.17.17.133:8080,172.17.22.68:8080,172.17.34.18:8080 + 3 more...
Session Affinity: None
External Traffic Policy: Local
HealthCheck NodePort: 31438
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal EnsuringLoadBalancer 16m service-controller Ensuring load balancer
Normal EnsuredLoadBalancer 15m service-controller Ensured load balancer
Normal CloudVPCLoadBalancerNormalEvent 13m ibm-cloud-provider Event on cloud load balancer myvpcalb for service default/myvpcalb with UID 08cbacf0-2c93-4186-84b6-c4ab88a2faf9: The VPC load balancer that routes requests to this Kubernetes LoadBalancer service is currently online/active.
```
-
Vérifiez que l'équilibreur de charge d'application VPC a bien été créé dans votre VPC. Dans la sortie, vérifiez que pour l'équilibreur de charge d'application VPC, la zone Operating Status est définie sur
onlineet la zone Provision Status, suractive.Ne renommez pas les équilibreurs de charge d'application VPC créés automatiquement pour les services
LoadBalancer. Si vous renommez un équilibreur de charge d'application VPC, Red Hat OpenShift on IBM Cloud crée automatiquement un autre équilibreur de charge d'application VPC pour le serviceLoadBalancer.ibmcloud is load-balancersDans l'exemple de sortie de l'interface de ligne de commande suivant, l'équilibreur de charge d'application VPC nommé
kube-bsaucubd07dhl66e4tgg-1f4f408ce6d2485499bcbdec0fa2d306est créé pour le service KubernetesLoadBalancer:ID Name Family Subnets Is public Provision status Operating status Resource group r006-d044af9b-92bf-4047-8f77-a7b86efcb923 kube-bsaucubd07dhl66e4tgg-1f4f408ce6d2485499bcbdec0fa2d306 Application mysubnet-us-south-3 true active online default -
Si vous avez créé un service public
LoadBalancer, exécutez une commande curl sur le nom d'hôte du service KubernetesLoadBalanceraffecté par l'équilibreur de charge d'application VPC identifié à l'étape 4. Exemple :curl 06496f64-us-south.lb.appdomain.cloud:8080Exemple de sortie
Hello world from hello-world-deployment-5fd7787c79-sl9hn! Your app is up and running in a cluster!Si vous avez créé un service
LoadBalancerprivé, vous devez être connecté à votre réseau VPC privé pour exécuter une commande curl sur le nom d'hôte.
Ne supprimez pas les sous-réseaux que vous avez associés à votre cluster lors de la création du cluster ou lorsque vous ajoutez des noeuds worker dans une zone. Si vous supprimez un sous-réseau VPC que votre cluster a utilisé, des problèmes peuvent se produire au niveau des équilibreurs de charge qui utilisent des adresses IP à partir du sous-réseau et il se peut que vous ne puissiez pas créer de nouveaux équilibreurs de charge.
Les ALB et NLB VPC qui ne sont pas associés à des clusters Kubernetes ou OpenShift peuvent être mis à jour directement à l'aide des commandes ibmcloud is ou via la section Infrastructure VPC de la console. Par exemple, modifiez le port d'un programme d'écoute de front-end ou la valeur du délai d'attente du diagnostic d'intégrité. Toutefois, pour les équilibreurs de charge VPC associés à des clusters Kubernetes ou OpenShift, toute modification doit être effectuée via des annotations dans la configuration d’Ingress. Le fournisseur IBM Cloud se resynchronise périodiquement avec tous les ALB et NLB VPC associés afin de garantir que l'équilibreur de charge en cours d'exécution est conforme à la configuration attendue d'Ingress. Par conséquent, si vous apportez des modifications à un tel équilibreur de charge directement via VPC au lieu d'utiliser des annotations Ingress, ces modifications seront annulées.
Enregistrement d'un enregistrement DNS et d'un certificat TLS
L'équilibreur de charge d'application pour VPC (ALB de VPC) fournit un nom d'hôte HTTP par défaut au format 1234abcd-<region>.lb.appdomain.cloud à travers lequel vous pouvez accéder à votre application. Toutefois, si vous
souhaitez qu'un certificat TLS pour votre domaine d'application prenne en charge HTTPS, vous pouvez créer un sous-domaine fourni par IBM ou apporter votre propre domaine personnalisé pour les équilibreurs de charge d'application publics
et privés.
Après avoir créé un sous-domaine DNS pour un nom d'hôte ALB de VPC, vous ne pouvez pas utiliser les commandes nlb-dns health-monitor pour créer un contrôle d'intégrité personnalisé. Au lieu de cela, le diagnostic d'intégrité par
défaut de l'équilibreur de charge VPC fourni pour le nom d'hôte d'équilibreur de charge d'application par défaut est utilisé. Pour plus d'informations, voir la documentation VPC.
Avant de commencer
- Configurez un équilibreur de charge d'application VPC. Veillez à définir un port HTTPS dans votre service Kubernetes
LoadBalancerqui configure l'équilibreur de charge d'application VPC. - Pour utiliser le certificat TLS afin d'accéder à votre application via HTTPS, vous devez être en mesure de mettre fin à des connexions TLS.
Pour enregistrer un nom d'hôte ALB de VPC avec un sous-domaine DNS,
-
Extrayez le nom d'hôte de votre VPC ALB en exécutant la commande
get svc. Dans la sortie, recherchez le nom d'hôte dans la colonne EXTERNAL-IP. Par exemple,1234abcd-us-south.lb.appdomain.cloud.oc get svc -o wideExemple de sortie
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR ... webserver-lb LoadBalancer 172.21.xxx.xxx 1234abcd-us-south.lb.appdomain.cloud 8080:30532/TCP 1d run=webserver -
Créez un sous-domaine DNS personnalisé ou fourni par IBM pour le nom d'hôte de l'équilibreur de charge.
-
Domaine personnalisé: fournissez votre propre domaine personnalisé et attribuez-lui un alias en spécifiant l'adresse IP externe de l'équilibreur de charge, au format
1234abcd-us-south.lb.appdomain.cloudd'un enregistrement de nom canonique (CNAME).- Enregistrez votre domaine personnalisé en utilisant votre fournisseur de DNS (Domain Name Service) ou IBM Cloud DNS.
- Définissez un alias pour votre domaine personnalisé en spécifiant l'adresse IP externe de l'équilibreur de charge en tant qu'enregistrement de nom canonique (CNAME). Dans l'exemple suivant, l'équilibreur de charge avec l'adresse
IP externe de
1234abcd-us-south.lb.appdomain.cloudest accessible à l'adressewww.your-custom-domain.com.
- Hôte/Service
- Préfixe dans lequel vous souhaitez accéder à votre application, par exemple,
www. - Type de ressource
- Sélectionnez
CNAME. - TTL
- Sélectionnez une durée de vie.
- Valeur/Cible
- Adresse IP externe LoadBalancer que vous avez extraite précédemment. Par exemple,
1234abcd-us-south.lb.appdomain.cloud.. Notez que lorsque vous utilisez le serveur de noms de domaine IBM Cloud, veillez à entrer un point de fin.
-
Sous-domaine fourni par IBM : utilisez les commandes
nlb-dnspour générer un sous-domaine avec un certificat TLS pour le nom d'hôte VPC ALB. IBM Cloud prend en charge automatiquement la génération et la gestion du certificat TLS générique pour le sous-domaine.- Créez un sous-domaine DNS et un certificat TLS.
ibmcloud oc nlb-dns create vpc-gen2 --cluster <cluster_name_or_id> --lb-host <vpc_lb_hostname> --type (public|private) - Vérifiez que le sous-domaine est créé. Pour plus d'informations, voir Description du format de sous-domaine.
Exemple de sortieibmcloud oc nlb-dns ls --cluster <cluster_name_or_id>Subdomain Load Balancer Hostname Health Monitor SSL Cert Status SSL Cert Secret Name mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud ["1234abcd-us-south.lb.appdomain.cloud"] None created <certificate>
- Créez un sous-domaine DNS et un certificat TLS.
-
-
Si vous avez créé un sous-domaine pour un ALB VPC public, ouvrez un navigateur Web et saisissez l'adresse URL pour accéder à votre application via ce sous-domaine, comme dans l'exemple
www.your-custom-domain.com. Si vous avez créé un sous-domaine pour un équilibreur de charge d'application VPC privé, vous devez être connecté à votre réseau VPC privé pour tester l'accès à votre sous-domaine.
Pour utiliser le certificat TLS afin d'accéder à votre application via HTTPS, prenez soin de définir un port HTTPS dans votre service Kubernetes LoadBalancer. Vous pouvez vérifier que les demandes
routent correctement via le port HTTPS en exécutant curl -v --insecure https://<domain>. Une erreur de connexion indique qu'aucun port HTTPS n'est ouvert sur le service. De plus, vérifiez que les connexions TLS peuvent
être interrompues par votre application. Vous pouvez vérifier que votre application termine correctement TLS en exécutant curl -v https://<domain>. Une erreur de certificat indique que votre application n'arrête pas correctement
les connexions TLS.
Enregistrement d'un enregistrement DNS privé pour un ALB VPC privé
En version4.15 ou version ultérieure, vous pouvez utiliser les annotations facultatives suivantes pour associer votre propre DNS instance qui sert un DNS personnalisé zone avec un ALB VPC privé. Pour cela, les deux
annotations facultatives doivent être définies. S'ils ne sont pas spécifiés, alors DNS A enregistrements pour cet équilibreur de charge hostname la propriété sera ajoutée à la zone DNS publique lb.appdomain.cloud.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-private-dns-instance-crn: "private-dns-crn" :
Le DNS instance à associer à cet équilibreur de charge. L'instance spécifiée peut se trouver dans une région ou un compte différent, soumis aux stratégies IAM. Valeurs possibles : 9 ≤ longueur ≤ 512
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-private-dns-zone-id: "dns-zone-id" :
Le DNS zone à associer à cet équilibreur de charge. La zone spécifiée peut se trouver dans une région ou un compte différent, sous réserve des politiques IAM. Valeurs possibles : 1 ≤ longueur ≤ 128, la valeur doit correspondre
à l'expression régulière [a-z0-9-]^*[a-z0-9]$
Vous devez effectuer les opérations suivantes avant de pouvoir utiliser cette fonctionnalité :
- Créer la zone DNS qui peut être liée à un équilibreur de charge
- Activer l'autorisation de service à service entre les LB VPC etDNS Services
- Ajouter le VPC du cluster aux réseaux autorisés de la zone
Pour plus d’informations, consultez les documents Intégration d’un équilibreur de charge d’application à l’ IBM Cloud DNS Services et Ajouter un VPC en tant que réseau autorisé à la zone DNS.
Exemple :
apiVersion: v1
kind: Service
metadata:
name: myloadbalancer
annotations:
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name: "my-load-balancer"
service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "private"
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-private-dns-instance-crn: "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-private-dns-zone-id: "d66662cc-aa23-4fe1-9987-858487a61f45"
spec:
type: LoadBalancer
status:
loadBalancer:
ingress:
- ip: 169.60.115.164
...
Equilibreurs de charge VPC persistants
Par défaut, les équilibreurs de charge VPC sont supprimés lorsque le cluster auquel ils sont associés est supprimé. Toutefois, lorsque vous créez une définition de service LoadBalancer, vous pouvez rendre votre équilibreur de charge
persistant afin qu'il reste disponible même après la suppression de votre cluster. Un équilibreur de charge VPC persistant peut être appliqué à un autre cluster après la suppression de son cluster précédent.
Les noms d'équilibreur de charge VPC sont formatés en tant que kube-<cluster_ID>-<kubernetes_lb_service_UID> par défaut. Lorsqu'un cluster est supprimé, ce format de nom spécifie les équilibreurs de charge associés qui
sont ensuite également supprimés. Pour vous assurer que votre équilibreur de charge n'est pas supprimé lorsque vous supprimez un cluster, incluez l'annotation service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name dans votre définition de service LoadBalancer pour donner à votre équilibreur de charge un nom unique. Le nom de l'équilibreur de charge doit être unique dans votre VPC et ne peut inclure que des caractères alphanumériques minuscules
et des traits d'union (-). L'annotation peut être appliquée à tous les types d'équilibreur de charge VPC.
Vous êtes responsable de la suppression des équilibreurs de charge VPC persistants lorsqu'ils ne sont plus nécessaires. Pour supprimer un équilibreur de charge VPC persistant, supprimez la définition de service LoadBalancer Kubernetes
à laquelle l'équilibreur de charge VPC est associé.
Déplacement d'un équilibreur de charge VPC d'un cluster à un autre
Les équilibreurs de charge VPC persistants peuvent être déconnectés d'un cluster VPC, puis connectés à un autre. Le nouveau cluster doit se trouver dans le même VPC que le cluster d'origine.
Déconnexion d'un équilibreur de charge VPC d'un cluster
Les équilibreurs de charge VPC sont associés à la définition du service LoadBalancer Kubernetes avec laquelle ils ont été créés. Pour déconnecter un équilibreur de charge VPC persistant d'un cluster, vous devez rompre le lien
avec le service LoadBalancer en renommant l'équilibreur de charge VPC ou en supprimant l'annotation service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name de la définition de service LoadBalancer d'origine. Vous pouvez également déconnecter un équilibreur de charge VPC persistant d'un cluster en supprimant le cluster.
Si vous supprimez l'annotation, le service LoadBalancer d'origine est rétabli et crée un équilibreur de charge VPC non persistant dans le cluster d'origine. Cet équilibreur de charge VPC non persistant respecte la convention de
dénomination kube-<cluster_ID>-<kubernetes_lb_service_UID>.
Connexion d'un équilibreur de charge VPC à un cluster
Une fois qu’un équilibreur de charge VPC persistant a été détaché d’un cluster, vous pouvez l’attacher à un autre cluster en créant une nouvelle définition de service LoadBalancer Kubernetes qui fait référence à cet équilibreur
de charge VPC.
Lorsque vous créez un service LoadBalancer sur le nouveau cluster, vous pouvez utiliser l'annotation service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name pour spécifier le nom de l'équilibreur de charge
VPC que vous souhaitez connecter.
Lorsque vous créez le service LoadBalancer, le type d'équilibreur de charge VPC (ALB, NLB) et le type IP (public, privé) doivent correspondre aux spécifications du service LoadBalancer. Par exemple, un service LoadBalancer existant sur le nouveau cluster qui spécifie un type d'équilibreur de charge de réseau ne peut pas être utilisé pour connecter un équilibreur de charge d'application VPC au cluster. Les annotations qui spécifient le type d'équilibreur de
charge et le type d'adresse IP sont respectivement service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features et service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type.
Le port et les ports de noeud spécifiés dans le service LoadBalancer n'ont pas besoin de correspondre à ceux avec lesquels l'équilibreur de charge VPC a été créé. L'équilibreur de charge VPC reconfigure avec les définitions de
port du service LoadBalancer auquel il est associé dans le nouveau cluster.
Contrôles d'intégrité pour les équilibreurs de charge
Les équilibreurs de charge VPC sont automatiquement configurés avec des diagnostics d'intégrité, que vous configurez avec l'annotation externalTrafficPolicy. Vous pouvez utiliser des annotations supplémentaires pour personnaliser les diagnostics d'intégrité sur vos équilibreurs de charge.
- Si
externalTrafficPolicyest défini surCluster, les contrôles d'intégrité TCP sont appliqués. Si vous configurez un équilibreur de charge UDP, vous devez effectuer des spécifications de port supplémentaires. - Si
externalTrafficPolicyest défini surLocal, des vérifications d'intégrité HTTP sont appliquées. Le trafic entrant est distribué uniquement au pod d'application résidant sur ce noeud spécifique. S'il n'y a pas de pod d'application sur ce noeud spécifique, le trafic entrant est supprimé.
Le paramètre externalTrafficPolicy: Local peut entraîner l'échec des diagnostics d'intégrité sur vos noeuds worker d'équilibreur de charge. Généralement, ce résultat correspond au comportement attendu et n'indique pas nécessairement
un problème, car le trafic est intentionnellement supprimé si l'équilibreur de charge tente de se connecter à un noeud qui ne possède pas de pod d'application. Pour plus d'informations, voir Pourquoi les diagnostics d'intégrité de l'équilibreur de charge VPC échouent-ils sur mes noeuds worker?.
Personnalisation des diagnostics d'intégrité pour les équilibreurs de charge VPC
Pour plus de contrôle sur les diagnostics d'intégrité de votre équilibreur de charge VPC, vous pouvez utiliser des annotations facultatives pour personnaliser vos diagnostics d'intégrité avec des configurations avancées pour les intervalles de test, les délais d'attente et les nouvelles tentatives. Vous pouvez modifier ou supprimer ces personnalisations à tout moment.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-protocol- Facultatif: cette annotation définit le protocole de diagnostic d'intégrité sur la ressource d'équilibreur de charge VPC associée au service d'équilibreur de charge Kubernetes. Normalement, le protocole de diagnostic d'intégrité
de l'équilibreur de charge VPC est déterminé par la valeur du paramètre
externalTrafficPolicydans la spécification de service d'équilibreur de charge Kubernetes. Cette annotation remplace cette logique. Cette annotation ne modifie pas le comportement de Kuberneteset de kube-proxy en particulier en ce qui concerne les différents paramètres deexternalTrafficPolicy. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-port- Facultatif. Le port TCP est utilisé pour les contrôles d'intégrité. Cette annotation s'applique uniquement si
ibm-load-balancer-cloud-provider-vpc-health-check-protocolest également spécifié.- Si le port TCP spécifié se trouve en dehors de la plage de ports des nœuds Kubernetes (30 000-32 767), le groupe de sécurité VPC appliqué aux nœuds de travail du cluster doit être modifié afin d’autoriser le trafic entrant sur ce port.
- Si cette annotation est appliquée à un service d'équilibrage de charge Kubernetes associé à un VPC ALB, les règles sortantes du groupe de sécurité attribué au VPC ALB doivent être modifiées afin d’autoriser le trafic sortant vers le port TCP spécifié.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-path- Facultatif. Chemin d'accès à l' URL s sur les contrôles d'intégrité pour les contrôles d'intégrité HTTP et HTTPs. Cette annotation s'applique uniquement si
ibm-load-balancer-cloud-provider-vpc-health-check-protocolest défini surhttpouhttps.- Le chemin d'accès URL doit respecter le format d'une cible de requête au format d'origine.
- Si cette annotation n'est pas spécifiée et que l'annotation
ibm-load-balancer-cloud-provider-vpc-health-check-protocolest définie surhttpouhttps, la valeur par défaut/est appliquée.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-delay- Facultatif. Nombre de secondes à attendre entre les tentatives de diagnostic d'intégrité. Par défaut, cette valeur est définie sur
5, avec un minimum de2et un maximum de60. Cette valeur doit être supérieure à la valeuribm-load-balancer-cloud-provider-vpc-health-check-timeout, qui est définie sur2par défaut. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-timeout- Facultatif. Nombre de secondes d'attente d'une réponse à un diagnostic d'intégrité. Par défaut, cette valeur est définie sur
2, avec un minimum de1et un maximum de59. Cette valeur doit être inférieure à la valeuribm-load-balancer-cloud-provider-vpc-health-check-delay, qui est définie sur5par défaut. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-retries- Nombre maximal de nouvelles tentatives de diagnostic d'intégrité pour l'équilibreur de charge VPC. Par défaut, cette valeur est définie sur
2, avec un minimum de1et un maximum de10.
Activation des contrôles d'intégrité TCP pour les équilibreurs de charge UDP
Étant donné qu'aucun contrôle d'intégrité UDP n'est effectué, les équilibreurs de charge UDP qui utilisent les contrôles d'intégrité TCP doivent avoir un port TCP supplémentaire spécifié avec l'annotationservice.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-udp.
Vous pouvez spécifier le port du nœud TCP pour un autre équilibreur de charge ou NodePort en cours d'exécution dans votre cluster. Toutefois, si le port de noeud réside en dehors de la plage30000-32767, vous devez modifier le groupe de sécurité du cluster VPC kube-<cluster-ID> pour autoriser le trafic entrant dans le port spécifié.
Notez que si la valeur de port spécifiée concerne un service qui tombe en panne de manière inattendue ou dont la valeur de port est reconfigurée, les contrôles d'intégrité d' TCP cessent de fonctionner jusqu'à ce que le service soit de nouveau
opérationnel ou que vous reconfiguriez l'annotation service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-udp avec une nouvelle valeur de port TCP. Pour éviter cela, vous pouvez spécifier le portkubelet``10250,
qui est une valeur de port statique qui permet de ne pas rencontrer d'interruptions de service. Toutefois, vous devez modifier le groupe de sécurité du cluster VPCkube-<cluster-ID> pour accepter le trafic entrant à partir du portkubelet.
Vous souhaitez éviter la complexité liée à la configuration de ports d' TCP s supplémentaires pour les contrôles d'intégrité dans un équilibreur de charge UDP? Définissez externalTrafficPolicysur Localpour utiliser
les vérifications d'intégrité HTTP, qui ne nécessitent aucune spécification de port supplémentaire.
Modification des sous-réseaux ou des zones d'équilibreur de charge
Une fois que vous avez créé un NLB VPC, vous ne pouvez pas reconfigurer le sous-réseau d'écoute avec lequel il a été créé. Si vous souhaitez modifier le sous-réseau d'écoute d'un VPC NLB existant, vous devez supprimer, mettre à jour, puis réappliquer
le service LoadBalancer Kubernetes correspondant.
-
Répertoriez vos services Kubernetes et recherchez le nom du service
LoadBalancerà modifier.oc get servicesExemple de sortie
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-load-balancer LoadBalancer 172.21.77.198 52.118.150.107 8080:32767/TCP,443:30943/TCP 5d -
Recherchez l'équilibreur de charge de VPC qui correspond au service Kubernetes
LoadBalancer.Les noms d'équilibreurs de charge de VPC sont au format
kube-<cluster_ID>-<kubernetes_lb_service_UID>. Pour afficher votre ID de cluster, exécutezibmcloud ks cluster get --cluster <cluster_name>. Pour afficher l'UID de service de Kubernetes LoadBalancer, exécutezoc get svc <load-balancer-name> -o yamlet recherchez la zone metadata.uid dans la sortie. Les tirets (-) sont supprimés de l'identifiant unique (UID) du serviceLoadBalancerKubernetes dans le nom de l'équilibreur de charge VPC.ibmcloud is load-balancersExemple de sortie
ID Name Family Subnets Is public Provision status Operating status Resource group r000-5aaaa11f6-c111-111f-b2e0-1c11aaaaf0dc0 kube-c441c43d02mb8mg00r70-3e25d0b5bf11111111fe4ca3f11111cb Network subnet-1 true active online default Application -
Obtenez la définition de service Kubernetes
LoadBalanceret enregistrez la sortie dans un fichier yaml appelémy-lb.yaml.oc describe service my-load-balancer -o yaml -
Supprimez le service Kubernetes
LoadBalancer. Cela supprime également l'équilibreur de charge de VPC correspondant.oc delete service my-load-balancer -
Mettez à jour le fichier de définition de service Kubernetes
LoadBalanceravec les modifications de sous-réseau ou de zone que vous souhaitez implémenter. Ne modifiez pas le nom du serviceLoadBalancer. Pour plus de détails sur la spécification de sous-réseaux ou de zones pour les équilibreurs de charge réseau, voir Configuration d'un équilibreur de charge réseau de VPC. -
Appliquez le nouveau fichier de définition
LoadBalancer.oc apply -f my-lb.yaml -
Vérifiez que le service Kubernetes
LoadBalancerest recréé avec succès dans votre cluster. Lors de la création du service, le champ Ingress ( LoadBalancer ) est renseigné avec une adresse IP externe pour le NLB.oc describe service my-load-balancerExemple de sortie
NAME: my-load-balancer Namespace: default Labels: <none> Annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: nlb Selector: app=echo-server Type: LoadBalancer IP: 172.X.XXX.XX LoadBalancer Ingress: 169.XXX.XXX.XXX Port: tcp-80 80/TCP TargetPort: 8080/TCP NodePort: tcp-80 32022/TCP Endpoints: 172.XX.XX.XXX:8080,172.XX.XX.XX:8080,172.XX.XX.XX:8080 + 3 more... Session Affinity: None External Traffic Policy: Local HealthCheck NodePort: 30882 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal EnsuringLoadBalancer 9m27s (x7 over 15m) service-controller Ensuring load balancer Normal EnsuredLoadBalancer 9m20s service-controller Ensured load balancer Normal CloudVPCLoadBalancerNormalEvent 8m17s ibm-cloud-provider Event on cloud load balancer myvpcnlb for service default/my-load-balancer with UID 2d93b07d-ecf6-41d2-ad3f-9c2985122ec1: The VPC load balancer that routes requests to this Kubernetes LoadBalancer service is currently online/active. -
Vérifiez que l'équilibreur de charge de VPC est recréé et que le sous-réseau ou la zone sont mis à jour. Notez que le provisionnement de l'équilibreur de charge VPC prend quelques minutes et qu'un statut
create_pendingen cours peut s'afficher jusqu'à ce que le provisionnement soit terminé.ibmcloud is load-balancersExemple de sortie
ID Name Family Subnets Is public Provision status Operating status Resource group r006-5ecc68f6-c751-409f-b2e0-1c69babf0dc0 kube-c441c43d02mb8mg00r70-3e25d0b5bf03445796fe4ca3f73885cb Network subnet-2 true active online default
Limitations
Passez en revue les paramètres et limitations par défaut suivants.
- Consultez les limitations connues des équilibreurs de charge d'application VPC et les limitations connues des équilibreurs de charge de réseau VPC.
- Les ALB de VPC privé n'acceptent pas tout le trafic ; ils acceptent uniquement le trafic RFC 1918.
- Les NLB de VPC privés doivent être créés sur un sous-réseau VPC dédié qui doit exister dans le même VPC et dans le même emplacement que votre cluster, mais le sous-réseau ne peut pas être connecté à votre cluster ou à vos nœuds worker.
- Red Hat OpenShift: bien que le protocole SCTP Kubernetes soit généralement disponible dans l'édition de communauté Kubernetes, la création d'équilibreurs de charge qui utilisent ce protocole n'est pas prise en charge dans les clusters IBM Cloud Kubernetes Service.
- Un équilibreur de charge VPC est créé pour chaque service Kubernetes
LoadBalancerque vous créez et il achemine les demandes uniquement vers ce service KubernetesLoadBalancer. Dans tous vos clusters de VPC de votre VPC, vous pouvez créer jusqu'à 50 équilibreurs de charge de VPC. Pour plus d'informations, voir la documentation sur les quotas VPC. - L'équilibreur de charge VPC peut acheminer les demandes vers un nombre limité de noeuds worker. Le nombre maximal de noeuds vers lesquels vous pouvez acheminer des demandes dépend de la manière dont vous définissez l'annotation
externalTrafficPolicy.- Si vous définissez
externalTrafficPolicy: Clusterdans votre configuration d'équilibreur de charge:- L'équilibreur de charge VPC achemine vers les 8 premiers noeuds worker qui sont reconnus dans chaque zone. Pour un cluster avec des nœuds de travail dans trois zones, cela signifie que l'équilibreur de charge achemine les données vers
24 nœuds de travail au total. Pour un cluster à zone unique, l'équilibreur de charge achemine vers 8 noeuds worker au total. Vous pouvez modifier le nombre de nœuds de travail par zone vers lesquels l'équilibreur de charge se dirige
à l'aide de l'option
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-member-quota, mais le nombre total pour toutes les zones ne peut pas dépasser 50. Si la grappe compte moins de 50 nœuds de travail dans toutes les zones, spécifiez 0 pour router vers tous les nœuds de travail d'une zone. Lakube-proxyconfigure les tables IP pour acheminer le trafic entrant du nœud de travail vers le module d'application, quel que soit le nœud sur lequel le module d'application réside.
- L'équilibreur de charge VPC achemine vers les 8 premiers noeuds worker qui sont reconnus dans chaque zone. Pour un cluster avec des nœuds de travail dans trois zones, cela signifie que l'équilibreur de charge achemine les données vers
24 nœuds de travail au total. Pour un cluster à zone unique, l'équilibreur de charge achemine vers 8 noeuds worker au total. Vous pouvez modifier le nombre de nœuds de travail par zone vers lesquels l'équilibreur de charge se dirige
à l'aide de l'option
- Si vous définissez
externalTrafficPolicy: Localdans votre configuration d'équilibreur de charge, l'équilibreur de charge VPC est créé uniquement s'il y a 50 noeuds worker ou moins sur le cluster. Cette limite est définie par les limitations de quota VPC de 50 membres de pool par pool d'équilibreur de charge VPC. Pour éviter cette limitation, utilisez l'annotationservice.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selectorpour limiter les noeuds worker qui se trouvent dans le pool d'équilibreurs de charge. Par exemple, vous pouvez utiliser cette annotation pour forcer le trafic entrant vers un pool de noeuds worker spécifique. Si vous utilisez cette annotation pour forcer le trafic vers un pool de noeuds worker spécifique, vous devez également vous assurer que le pod d'application s'exécute également dans le même pool de noeuds worker.
- Si vous définissez
- Lorsque vous définissez le fichier YAML de configuration pour un service Kubernetes
LoadBalancer, les annotations et paramètres ci-dessous ne sont pas pris en charge :service.kubernetes.io/ibm-load-balancer-cloud-provider-vlan: "<vlan_id>"service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "ipvs"service.kubernetes.io/ibm-load-balancer-cloud-provider-ipvs-scheduler: "<algorithm>"spec.loadBalancerIPspec.loadBalancerSourceRanges- Equilibreurs de charge réseau VPC uniquement :
service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "proxy-protocol" - Equilibreurs de charge d'application VPC uniquement : le paramètre
externalTrafficPolicy: Localest pris en charge, mais il ne conserve pas l'adresse IP source de la demande.
- Lorsque vous supprimez un cluster VPC, tous les équilibreurs de charge VPC non persistants, nommés au format
kube-<cluster_ID>-<kubernetes_lb_service_UID>et créés automatiquement par Red Hat OpenShift on IBM Cloud pour les services KubernetesLoadBalancerdans ce cluster, sont également supprimés automatiquement. Toutefois, les équilibreurs de charge persistants avec des noms uniques et des équilibreurs de charge VPC que vous avez créés manuellement dans votre VPC ne sont pas supprimés. - Vous pouvez enregistrer jusqu'à 128 sous-domaines pour les noms d'hôte d'équilibreur de charge VPC. Cette limite peut être levée sur demande en ouvrant un cas de support.
- Les sous-domaines que vous enregistrez pour les équilibreurs de charge VPC sont limités à 130 caractères maximum.
- Les équilibreurs de charge d'application VPC écoutent sur les mêmes sous-réseaux VPC sur lesquels les noeuds worker de cluster sont alloués, sauf si le service d'équilibreur de charge Kubernetes est créé avec les annotations
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnetsouservice.kubernetes.io/ibm-load-balancer-cloud-provider-zone, ce qui limite le trafic vers des noeuds spécifiques.- Les sous-réseaux et les zones de l'équilibreur de charge d'application VPC peuvent être mis à jour ou modifiés après la création de l'équilibreur de charge d'application. Si vous ajoutez d'autres zones au cluster ou mettez à jour le service
d'équilibreur de charge Kubernetes avec les annotations
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnetsouservice.kubernetes.io/ibm-load-balancer-cloud-provider-zone, l'équilibreur de charge d'application VPC est mis à jour pour être à l'écoute sur les nouveaux sous-réseaux.
- Les sous-réseaux et les zones de l'équilibreur de charge d'application VPC peuvent être mis à jour ou modifiés après la création de l'équilibreur de charge d'application. Si vous ajoutez d'autres zones au cluster ou mettez à jour le service
d'équilibreur de charge Kubernetes avec les annotations
- Les équilibreurs de charge de réseau VPC n'écoutent que sur un seul sous-réseau VPC dans une seule zone. Ils ne peuvent pas être configurés pour être à l'écoute sur plusieurs sous-réseaux VPC ou pour être à l'écoute sur plusieurs zones. Vous
pouvez spécifier le sous-réseau unique pour un équilibreur de charge de réseau à écouter avec les annotations
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnetsouservice.kubernetes.io/ibm-load-balancer-cloud-provider-zone.- Les équilibreurs de charge de réseau VPC transmettent le trafic entrant à tous les noeuds worker du cluster sauf si vous limitez le trafic entrant à des noeuds worker spécifiques avec
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selectorouservice.kubernetes.io/ibm-load-balancer-cloud-provider-zone annotations. Pour limiter le trafic à une zone spécifique, vous pouvez utiliser ces annotations pour spécifier des noeuds worker dans cette zone.
- Les équilibreurs de charge de réseau VPC transmettent le trafic entrant à tous les noeuds worker du cluster sauf si vous limitez le trafic entrant à des noeuds worker spécifiques avec
- La désactivation de l'allocation de noeud d'équilibrage de charge n'est pas prise en charge pour les équilibreurs de charge VPC.
- Les NLB VPC peuvent être configurés avec à la fois UDP et TCP sur le même équilibrateur de charge VPC, mais le port d'écoute doit être différent.