Bereitstellung von Anwendungen mit Load Balancern für VPC
Virtual Private Cloud
Durch die Einrichtung einer Lastausgleichsfunktion (Load Balancer) für VPC können Sie Ihre App im öffentlichen oder privaten Netz zugänglich machen.
Sie können Apps in einem VPC-Cluster zugänglich machen, indem Sie eine Layer 7-Application Load Balancer for VPC-Instanz erstellen. Sie können optional eine Layer 4- Network Load Balancer for VPCerstellen.
Lastausgleichsfunktionstypen
In der folgenden Tabelle werden die wesentlichen Merkmale der einzelnen Lastausgleichsoptionen beschrieben.
| Merkmal | Application Load Balancer for VPC | Network Load Balancer for VPC |
|---|---|---|
| Unterstützte Red Hat OpenShift-Version | Alle Versionen | Alle Versionen |
| Transportschicht | Layer 7 | Layer 4 |
| Typen von Lastausgleichsfunktionen | Öffentlich und privat | Öffentlich und privat |
| Unterstützte Protokolle | TCP | TCP, UDP |
| Anwendungszugriff | Hostname | Hostname und statische IP-Adresse |
| Bestandserhaltung von Quellen-IP | Konfigurierbar* | Ja |
| Verbesserte Leistung bei DSR (Direct Server Return) | Nein | Ja |
| Mehrzonenrouting | Ja | Ja |
| Portbereiche | Nein | Nur öffentlich |
| Sicherheitsgruppen | Ja | Ja |
Network Load Balancer for VPC
Richten Sie in VPC-Clustern in jeder Zone Ihres Clusters einen layer-4 (VPC NLB) Network Load Balancer for VPC ein, der als externer Einstiegspunkt für eingehende Anfragen an eine App dient.
VPC-NLBs bieten verschiedene Vorteile, zum Beispiel die Bereitstellung eines höheren Durchsatzes und einer besseren Leistung durch den Einsatz von DSR (Direct Server Return). Mithilfe von DSR können App-Antwortpakete vom Workerknoten direkt an die Client-IP-Adresse gesendet und die VPC-NLB übersprungen werden, wodurch sich der Umfang des Datenverkehrs, der von der VPC-NLB verarbeitet werden muss, verringert. Darüber hinaus unterstützt die VPC-NLB standardmäßig das Beibehalten der Quellen-IP-Adresse bei allen Clientanforderungen.
-
Standard-VPC-NLB-Namen haben das Format
kube-<cluster_ID>-<kubernetes_lb_service_UID>. Führen Sieibmcloud oc cluster get --cluster <cluster_name>aus, um Ihre Cluster-ID anzuzeigen. Zum Ermitteln der UID des Kubernetes-Service vom TypLoadBalancerführen Sie den Befehloc get svc myloadbalancer -o yamlaus und suchen in der Ausgabe nach dem Feld metadata.uid. Die Bindestriche (-) werden aus derLoadBalancerService-UID Kubernetes im VPC-NLB-Namen entfernt. -
Persistente VPC-NLB-Namen haben das Format
kube-<cluster_ID>-<kubernetes_lb_service_UID>. Führen Sieibmcloud oc cluster get --cluster <cluster_name>aus, um Ihre Cluster-ID anzuzeigen. Zum Ermitteln der UID des Kubernetes-Service vom TypLoadBalancerführen Sie den Befehloc get svc myloadbalancer -o yamlaus und suchen in der Ausgabe nach dem Feld metadata.uid. Die Bindestriche (-) werden aus derLoadBalancerService-UID Kubernetes im VPC-NLB-Namen entfernt. -
Wenn Sie einen Kubernetes-Service vom Typ
LoadBalancerfür eine App in Ihrem Cluster erstellen und die Annotationservice.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "nlb"einschließen, wird eine VPC-NLB in Ihrer VPC außerhalb Ihres Clusters erstellt. Die VPC-NLB leitet Anforderungen für Ihre App über die privaten Knotenports (NodePorts) weiter, die automatisch auf Ihren Workerknoten geöffnet werden. -
Wenn Sie einen öffentlichen Kubernetes-Service vom Typ
LoadBalancererstellen, können Sie über das Internet mit der externen öffentlichen IP-Adresse, die dem Kubernetes-Service vom TypLoadBalancervon der VPC-NLB zugeordnet wird, auf Ihre App zugreifen. Auch wenn Ihre Workerknoten nur mit einem privaten VPC-Teilnetz verbunden sind, kann die VPC-NLB öffentliche Anforderungen empfangen und an den Service weiterleiten, über den Ihre App zugänglich gemacht wird. Dabei ist zu beachten, dass kein öffentliches Gateway in Ihrem VPC-Teilnetz erforderlich ist, damit öffentliche Anforderungen an Ihre VPC-NLB zugelassen werden. Wenn allerdings Ihre App Zugriff auf eine öffentliche URL benötigt, müssen Sie den VPC-Teilnetzen, mit denen Ihre Workerknoten verbunden sind, öffentliche Gateways zuordnen. -
Wenn Sie einen privaten Kubernetes Service vom Typ
LoadBalancererstellen, ist Ihre App nur für Systeme zugänglich, die mit Ihren privaten Teilnetzen innerhalb derselben Region und VPC verbunden sind. Wenn Sie mit Ihrem privaten VPC-Netz verbunden sind, können Sie auf Ihre App über die externe, private IP-Adresse zugreifen, die vom VPC-NLB dem KubernetesLoadBalancer-Service zugewiesen wird.
Das folgende Diagramm veranschaulicht, wie ein Benutzer vom Internet aus über die VPC-NLB auf eine App zugreift.
- Eine Anforderung an Ihre App verwendet die IP-Adresse, die dem Kubernetes-Service vom Typ
LoadBalancervon der VPC-NLB zugeordnet wird. - Die Anforderung wird von der VPC-NLB automatisch an einen der Knotenports auf dem Workerknoten und dann weiter an die private IP-Adresse des App-Pods geleitet.
- Wenn App-Instanzen auf mehreren Worker-Knoten im Cluster bereitgestellt werden, leitet der VPC NLB die Anfragen zwischen den App-Pods auf verschiedenen Worker-Knoten über alle Zonen des Clusters hinweg weiter.
Application Load Balancer for VPC
Richten Sie eine Layer 7-Application Load Balancer for VPC-Instanz (VPC-ALB) für mehrere Zonen ein, die als externer Einstiegspunkt für eingehende Anforderungen an eine App in Ihrem Cluster dienen soll.
Verwechseln Sie die VPC-Lastausgleichsfunktion für Anwendungen nicht mit Ingress-Lastausgleichsfunktionen für Anwendungen von (Application Load Balancers, ALBs) von Red Hat OpenShift on IBM Cloud. Application Load Balancers for VPC-Instanzen
(VPC-ALBs) werden außerhalb Ihres Clusters in Ihrer VPC ausgeführt und werden von Kubernetes-Services vom Typ LoadBalancer konfiguriert, die Sie erstellen. Ingress-Lastausgleichsfunktionen für Anwendungen sind Ingress-Controller, die auf Workerknoten in Ihrem Cluster ausgeführt werden.
-
Die Namen von VPC-ALBs haben das folgende Format:
kube-<cluster_ID>-<kubernetes_lb_service_UID>. Führen Sieibmcloud oc cluster get --cluster <cluster_name>aus, um Ihre Cluster-ID anzuzeigen. Zum Ermitteln der UID des Kubernetes-Service vom TypLoadBalancerführen Sie den Befehloc get svc myloadbalancer -o yamlaus und suchen in der Ausgabe nach dem Feld metadata.uid. Die Bindestriche (-) werden aus derLoadBalancerService-UID Kubernetes im VPC-ALB-Namen entfernt. -
Wenn Sie einen Kubernetes Service vom Typ
LoadBalancerfür eine App in Ihrem Cluster erstellen, wird standardmäßig eine Application Load Balancer for VPC-Instanz in Ihrer VPC außerhalb Ihres Clusters erstellt. Die VPC-ALB leitet Anforderungen an Ihre App über die privaten Knotenports weiter, die automatisch auf Ihren Workerknoten geöffnet werden. -
Wenn Sie einen öffentlichen Kubernetes
LoadBalancer-Service erstellen, können Sie über das Internet über den Hostnamen, der von der VPC-ALB dem KubernetesLoadBalancer-Service zugeordnet wurde, auf Ihre App im Format1234abcd-<region>.lb.appdomain.cloudzugreifen. Auch wenn Ihre Workerknoten nur mit einem privaten VPC-Teilnetz verbunden sind, kann die VPC-ALB öffentliche Anforderungen empfangen und an den Service weiterleiten, über den Ihre App zugänglich gemacht wird. Dabei ist zu beachten, dass kein öffentliches Gateway in Ihrem VPC-Teilnetz erforderlich ist, damit öffentliche Anforderungen an Ihre VPC-ALB zugelassen werden. Wenn allerdings Ihre App Zugriff auf eine öffentliche URL benötigt, müssen Sie den VPC-Teilnetzen, mit denen Ihre Workerknoten verbunden sind, öffentliche Gateways zuordnen. -
Wenn Sie einen privaten Kubernetes Service vom Typ
LoadBalancererstellen, ist Ihre App nur für Systeme zugänglich, die mit Ihren privaten Teilnetzen innerhalb derselben Region und VPC verbunden sind. Wenn Sie mit Ihrem privaten VPC-Netz verbunden sind, können Sie auf Ihre App über den Hostnamen zugreifen, der von der VPC-ALB dem KubernetesLoadBalancer-Service im Format1234abcd-<region>.lb.appdomain.cloudzugeordnet wird.
Das folgende Diagramm veranschaulicht, wie ein Benutzer vom Internet aus über die VPC-ALB auf eine App zugreift.
- Eine Anforderung an Ihre App verwendet den Hostnamen, der dem Kubernetes
LoadBalancer-Service von der VPC-ALB zugewiesen wird, z. B.1234abcd-<region>.lb.appdomain.cloud. - Die Anforderung wird von der VPC-ALB automatisch an einen der Knotenports auf dem Workerknoten und dann weiter an die private IP-Adresse des App-Pods geleitet.
- Wenn App-Instanzen auf mehreren Workerknoten im Cluster bereitgestellt werden, verteilt die Lastausgleichsfunktion die Anforderungen unter den App-Pods auf verschiedenen Workerknoten. Wenn Sie einen Mehrzonencluster haben, leitet die VPC-ALB Anforderungen zudem an Workerknoten in allen Teilnetzen und Zonen in Ihrem Cluster weiter.
Network Load Balancer for VPC-Instanz einrichten
Stellen Sie Ihre Apps dem öffentlichen oder privaten Netz zur Verfügung, indem Sie in jeder Zone Ihres VPC-Clusters einen öffentlichen oder privaten Kubernetes LoadBalancer-Service
einrichten. Anschließend können Sie optional den VPC-NLB mit einem DNS-Eintrag und einem TLS-Zertifikat registrieren. VPC-NLBs unterstützen sowohl den Protokolltyp TCP als auch den Protokolltyp UDP.
Öffentlichen VPC-NLB einrichten
Machen Sie Ihre App für öffentlichen Netzverkehr zugänglich, indem Sie in jeder Zone Ihres Clusters einen Kubernetes-Service vom Typ LoadBalancer einrichten. Wenn Sie den Kubernetes-Service vom Typ LoadBalancer erstellen,
wird automatisch eine öffentliche Network Load Balancer for VPC-Instanz (VPC-NLB), die Anforderungen an Ihre App weiterleitet, in der VPC-Umgebung außerhalb Ihres Clusters für Sie erstellt.
- Vergewissern Sie sich, dass Sie über die Writer- oder **Manager-**IBM CloudIAM-Service-Zugriffsrolle für den Namensbereich verfügen, in dem Sie den Kubernetes-
LoadBalancer-Service für den VPC NLB bereitstellen. - Rufen Sie Ihren Red Hat OpenShift-Cluster auf.
- Installieren Sie zum Anzeigen von VPC-NLBs das Plug-in
infrastructure-service. Das Präfix für die Ausführung von Befehlen istibmcloud is.ibmcloud plugin install infrastructure-service
-
Stellen Sie die App im Cluster bereit. Stellen Sie sicher, dass Sie im Metadatenabschnitt der Konfigurationsdatei für die Bereitstellung eine Bezeichnung hinzufügen. Mit dieser angepassten Bezeichnung werden alle Pods gekennzeichnet, in denen Ihre App ausgeführt wird und die in den Lastausgleich einbezogen werden sollen.
-
Erstellen Sie eine YAML-Konfigurationsdatei für Ihren Kubernetes Service vom Typ
LoadBalancer. Sie können den Service im Format<app_name>-vpc-nlb-<VPC_zone>benennen.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"- Optional. Schließen Sie einen eindeutigen Namen ein, um Ihre VPC-Lastausgleichsfunktion persistent zu machen. Persistente VPC-Lastausgleichsfunktionen werden nicht gelöscht, wenn der Cluster, zu dem sie gehören, gelöscht wird. Weitere Informationen finden Sie unter Persistente VPC-Lastausgleichsfunktionen. Diese Anmerkung kann nur bei der Erstellung der Lastausgleichsfunktion festgelegt werden. Sie kann nicht in einer Aktualisierungsoperation verwendet werden.
service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "nlb"- Erforderlich: Annotation zum Erstellen einer VPC-NLB. Diese Anmerkung kann nur bei der Erstellung der Lastausgleichsfunktion festgelegt werden. Sie kann nicht in einer Aktualisierungsoperation verwendet werden.
service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type- Optional: Annotation zur Angabe eines Service, der öffentliche Anforderungen akzeptiert. Wenn Sie diese Annotation nicht einschließen, wird eine öffentliche VPC-NLB erstellt. Diese Anmerkung kann nur bei der Erstellung der Lastausgleichsfunktion festgelegt werden. Sie kann nicht in einer Aktualisierungsoperation verwendet werden.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector-
- Optional: Annotation zur Angabe eines Selektors für Workerknotenbezeichnungen. Kennzeichnen Sie die Workerknoten, die Datenverkehr empfangen sollen, indem Sie sich für einen der unterstützten Schlüssel für Bezeichnungsselektoren entscheiden. Dabei ist zu beachten, dass Sie nur einen einzigen Bezeichnungsselektor in die Annotation einschließen können und dass der Selektor im Format
"key=value"angegeben werden muss. Wird diese Annotation nicht angegeben, werden alle Workerknoten, die sich in derselben Zone wie die VPC-NLB befinden, so konfiguriert, dass sie Datenverkehr von der VPC-NLB empfangen. Ist diese Annotation angegeben, hat sie Vorrang vor der Annotationservice.kubernetes.io/ibm-load-balancer-cloud-provider-zoneund die Bezeichnungdedicated: edgefür Workerknoten wird ignoriert. Um den Datenverkehr auf eine bestimmte Zone zu begrenzen, können Sie diese Annotation verwenden, um Workerknoten in dieser Zone anzugeben. - Die folgenden Schlüssel sind zulässig. -
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
- Optional: Annotation zur Angabe eines Selektors für Workerknotenbezeichnungen. Kennzeichnen Sie die Workerknoten, die Datenverkehr empfangen sollen, indem Sie sich für einen der unterstützten Schlüssel für Bezeichnungsselektoren entscheiden. Dabei ist zu beachten, dass Sie nur einen einzigen Bezeichnungsselektor in die Annotation einschließen können und dass der Selektor im Format
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets- Optional: Anmerkung zur Angabe eines oder mehrerer Subnetze in einer Zone, in denen der VPC NLB bereitgestellt wird. Werte können als VPC-Teilnetz-IDs, VPC-Teilnetznamen oder VPC-Teilnetz-CIDRs angegeben werden. Ist diese
Annotation angegeben, hat sie Vorrang vor der Annotation
service.kubernetes.io/ibm-load-balancer-cloud-provider-zone. Dabei ist zu beachten, dass Sie ein Teilnetz in derselben VPC angeben können, bei dem es sich nicht um eines der Teilnetze handelt, mit dem Ihr Cluster verbunden ist. In diesem Fall kann die VPC-NLB, auch wenn sie in einem anderen Teilnetz in derselben VPC bereitgestellt wird, dennoch Datenverkehr an Ihre Workerknoten in den Clusterteilnetzen derselben Zone weiterleiten. Um die Subnetze in allen Ressourcengruppen anzuzeigen, führen Sie folgenden Befehl aus:ibmcloud oc subnets --provider vpc-gen2 --vpc-id <vpc> --zone <zone>. service.kubernetes.io/ibm-load-balancer-cloud-provider-zone-
- Optional: Anmerkung zur Angabe einer VPC-Zone, an die Ihr Cluster angeschlossen ist. Die VPC-NLB wird in demselben Teilnetz der betreffenden Zone bereitgestellt, mit dem auch Ihre Workerknoten verbunden sind. Da die VPC-NLB nicht für mehrere Zonen konzipiert ist, werden nur die Workerknoten Ihres Clusters in dieser Zone für den Empfang von Datenverkehr konfiguriert.
- Um Zonen anzuzeigen, führen Sie folgenden Befehl aus:
ibmcloud oc zone ls --provider vpc-gen2. Wenn Sie diese Anmerkung später in eine andere Zone ändern, wird die VPC-NLB nicht in die neue Zone verschoben. - Beachten Sie: Wenn Sie diese Anmerkung oder die
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnetsAnmerkung nicht angeben, wird der VPC-NLB in der am besten geeigneten Zone bereitgestellt. Die VPC-NLB wird beispielsweise nur in Zonen bereitgestellt, in denen betriebsbereite Workerknoten (StatusReady) vorhanden sind.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-udp-
- Erforderlich, wenn Sie das Protokoll UDP angeben und auf
externalTrafficPolicysetzenCluster. Andernfalls ist diese Anmerkung optional. - Geben Sie einen TCP-Port an, der für TCP-Zustandsprüfungen in einem UDP-Lastenausgleicher verwendet werden soll. Erforderlich für UDP-Lastverteiler, bei denen die Einstellung auf gesetzt
externalTrafficPolicyistCluster. Weitere Informationen zum Festlegen von Portwerten finden Sie unter Konfigurieren von TCP-Zustandsprüfungen für UDP-Lastverteiler.
- Erforderlich, wenn Sie das Protokoll UDP angeben und auf
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-protocol- Optional: Diese Anmerkung legt das Statusprüfungsprotokoll für die VPC-Lastausgleichsressource fest, die dem Kubernetes zugeordnet ist. Normalerweise wird das Protokoll der VPC-LB-Statusprüfung durch den Wert der Einstellung
externalTrafficPolicyin der Spezifikation des Kubernetes-Service für die Lastausgleichsfunktion bestimmt. Diese Annotation überschreibt diese Logik. Diese Annotation ändert nicht das Verhalten von Kubernetesund insbesondere von 'kube-proxy' in Bezug auf die verschiedenen Einstellungen vonexternalTrafficPolicy. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-port- Optional. Der Port TCP, der für die Zustandsprüfungen verwendet wird. Diese Annotation gilt nur, wenn auch
ibm-load-balancer-cloud-provider-vpc-health-check-protocolangegeben ist.- Liegt der angegebene TCP-Port außerhalb des Portbereichs für Kubernetes-Knoten (30.000–32.767), muss die auf die Cluster-Worker-Knoten angewendete VPC-Sicherheitsgruppe angepasst werden, um eingehenden Datenverkehr auf diesem Port zuzulassen.
- Wird diese Anmerkung auf einen Kubernetes-Load-Balancer-Dienst angewendet, der mit einem VPC-ALB verknüpft ist, müssen die ausgehenden Regeln der dem VPC-ALB zugewiesenen Sicherheitsgruppe geändert werden, um ausgehenden Datenverkehr zum angegebenen TCP-Port zuzulassen.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-path- Optional. Der Health-Check- URL spfad für die Health-Checks unter HTTP und HTTPS. Diese Annotation gilt nur, wenn
ibm-load-balancer-cloud-provider-vpc-health-check-protocolaufhttpoderhttpsgesetzt ist.- Der Pfad URL muss im Format eines Origin-Form-Anfrageziels vorliegen.
- Wenn diese Annotation nicht angegeben ist und die Annotation
ibm-load-balancer-cloud-provider-vpc-health-check-protocolaufhttpoderhttpsgesetzt ist, wird der Standardwert/angewendet.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-delay- Optional. Die Anzahl der Sekunden, die zwischen Statusprüfungsversuchen gewartet werden soll. Standardmäßig ist dieser Wert auf
5gesetzt und hat ein Minimum von2und ein Maximum von60. Dieser Wert muss größer als der Wertibm-load-balancer-cloud-provider-vpc-health-check-timeoutsein, der standardmäßig auf2gesetzt ist. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-timeout- Optional. Die Anzahl der Sekunden, die auf eine Antwort auf eine Statusprüfung gewartet wird. Standardmäßig ist dieser Wert auf
2gesetzt und hat ein Minimum von1und ein Maximum von59. Dieser Wert muss kleiner als dieibm-load-balancer-cloud-provider-vpc-health-check-delaysein, die standardmäßig auf5gesetzt ist. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-retries- Optional. Die maximale Anzahl der Wiederholungen der Statusprüfung für die VPC-Lastausgleichsfunktion. Standardmäßig ist dieser Wert auf
2gesetzt und hat ein Minimum von1und ein Maximum von10. selector- Optional. Der Label-Schlüssel (
<selector_key>) und der Wert (<selector_value>), die Sie imspec.template.metadata.labelsAbschnitt Ihrer App-Bereitstellungs-YAML-Datei verwendet haben. Mit dieser angepassten Bezeichnung werden alle Pods gekennzeichnet, in denen Ihre App ausgeführt wird und die in den Lastausgleich einbezogen werden sollen. port- Optional. Der Port, den der Service überwacht.
targetPort- Optional. Der Port, an den der Service den Datenverkehr leitet. Die im Pod ausgeführte Anwendung muss auf eingehenden TCP-Datenverkehr an diesem Zielport warten. Der Zielport wird häufig statisch in dem Image definiert, das im Anwendungspod ausgeführt wird. Der im Pod konfigurierte Zielport unterscheidet sich vom Knotenport für den Service und kann sich auch von dem externen Port unterscheiden, der in der VPC-Lastausgleichsfunktion konfiguriert ist.
externalTrafficPolicy-
- Erforderlich. Angeben
LocaloderCluster. - Setzen Sie die Einstellung auf, um
Localdie Quell-IP-Adresse von Client-Anfragen an Ihre Apps zu erhalten. Diese Einstellung verhindert, dass der eingehende Datenverkehr an einen anderen Knoten weitergeleitet wird. Diese Option konfiguriert auch HTTP-Statusprüfungen. - Wenn gesetzt
Clusterist, wird DSR nur von dem Worker-Knoten aus implementiert, an den der VPC-NLB die eingehende Anfrage ursprünglich weiterleitet. Nach Eingang der eingehenden Anforderung wird die Anforderung an einen Workerknoten weitergeleitet, der den App-Pod enthält, der sich möglicherweise in einer anderen Zone befindet. Die Antwort des App-Pods wird an den ursprünglichen Workerknoten gesendet und dieser Workerknoten verwendet DSR, um die Antwort direkt unter Umgehung der VPC-NLB an den Client zu senden. Diese Option konfiguriert auch TCP-Statusprüfungen. Bei Load Balancern für UDPservice.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-udpist die erforderlich, wenn Sie die OptionClusterwählen. Weitere Informationen finden Sie unter Konfigurieren von TCP-Zustandsprüfungen für UDP-Lastverteiler.
- Erforderlich. Angeben
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-member-quota- Optional. Die Anzahl der Arbeitsknoten pro Zone, zu denen der Load Balancer leitet. Der Standardwert ist '8'. Bei einem Cluster mit Arbeitsknoten in drei Zonen führt dies dazu, dass der Load Balancer an insgesamt 24 Arbeitsknoten weiterleitet. Die Gesamtzahl der Arbeitsknoten in allen Zonen, zu denen der Load Balancer leitet, darf 50 nicht überschreiten. Wenn der Cluster weniger als 50 Arbeitsknoten in allen Zonen hat, geben Sie 0 an, um zu allen Arbeitsknoten in einer Zone zu leiten.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-security-group- Optional. Eine vom Kunden verwaltete Sicherheitsgruppe, die dem VPC-Loadbalancer hinzugefügt wird. Wenn Sie nicht die IBM-verwaltete Sicherheitsgruppe verwenden möchten, geben Sie eine Sicherheitsgruppe an, die Sie besitzen und verwalten. Diese Option entfernt die IBM-verwaltete Sicherheitsgruppe und ersetzt sie durch die von Ihnen angegebene Sicherheitsgruppe. Wenn Sie die Anmerkung von einem vorhandenen Load Balancer entfernen, wird die von Ihnen hinzugefügte Sicherheitsgruppe durch die IBM-verwaltete Sicherheitsgruppe ersetzt. Sie können diesen Vermerk jederzeit hinzufügen oder entfernen. Sie sind für die Verwaltung Ihrer Sicherheitsgruppe verantwortlich und halten sie auf dem neuesten Stand.
-
Erstellen Sie den Kubernetes-Service vom Typ
LoadBalancerin Ihrem Cluster.oc apply -f <filename>.yaml -n <namespace> -
Überprüfen Sie, ob der Kubernetes Service vom Typ
LoadBalancerin Ihrem Cluster erfolgreich erstellt wurde. Wenn der Service erstellt wurde, enthält das Feld LoadBalancer Ingress eine externe IP-Adresse, die von der VPC-NLB zugeordnet wird.
Die Bereitstellung der VPC-NLB in Ihrer VPC dauert einige Minuten. Die externe IP-Adresse des Kubernetes-Service vom Typ LoadBalancer weist möglicherweise den Status pending auf, bis die VPC-NLB vollständig
eingerichtet ist.
```sh {: pre}
oc describe svc myloadbalancer -n <namespace>
```
CLI-Beispielausgabe für einen öffentlichen `LoadBalancer`-Service:
```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.
```
-
Überprüfen Sie, ob die VPC-NLB in Ihrer VPC erfolgreich erstellt wurde. Überprüfen Sie, ob die VPC-NLB in der Ausgabe für Operating Status den Wert
onlineund für Provision Status den Wertactiveaufweist.Benennen Sie keine VPC-NLBs um, die automatisch für
LoadBalancer-Services erstellt wurden. Wenn Sie eine VPC-Netzlastausgleichsfunktion umbenennen, erstellt Red Hat OpenShift on IBM Cloud automatisch eine weitere VPC-Netzlastausgleichsfunktion für denLoadBalancer-Service.ibmcloud is load-balancersIn der folgenden CLI-Beispielausgabe wird die erstellte VPC-NLB mit dem Namen
kube-bh077ne10vqpekt0domg-046e0f754d624dca8b287a033d55f96efür den Kubernetes-Service vom TypLoadBalancerangezeigt: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 -
Greifen Sie auf die IP-Adresse des Kubernetes-
LoadBalancer-Service zu, die Sie in Schritt 4 ermittelt haben. und auf den Port Ihrer App im Format<external_IP>:<app_port>. -
Optional: Wiederholen Sie diese Schritte, um eine öffentliche VPC-NLB in jeder Zone bereitzustellen, in der Ihre App verfügbar gemacht werden soll. Anschließend können Sie die externen IP-Adressen der VPC-NLB in jeder Zone in einer DNS-Unterdomäne registrieren.
Löschen Sie nicht die Teilnetze, die Sie Ihrem Cluster bei der Clustererstellung oder beim Hinzufügen von Workerknoten in einer Zone zugeordnet haben. Wenn Sie ein von Ihrem Cluster verwendetes VPC-Teilnetz löschen, können bei allen VPC-NLBs, die IP-Adressen aus dem Teilnetz verwenden, Probleme auftreten, und Sie können möglicherweise keine neuen Lastausgleichsfunktionen erstellen.
NLB mit Portbereich einrichten
Portbereiche können in öffentlichen NLBs verwendet werden, wenn ein Service von einem einzelnen Hostnamen mit mehreren Back-End-Anwendungen gehostet werden muss, die jeweils an einer separaten Portnummer empfangsbereit sind. Damit Portbereiche
in Ihrem Kubernetes-Cluster verwendet werden können, muss eine manuelle Konfiguration durchgeführt werden. Zuerst muss die Option ibm-load-balancer-cloud-provider-vpc-port-range festgelegt werden. Sie kann einen oder mehrere
Bereiche enthalten, die jeweils durch ein Komma voneinander getrennt sind. Der Wert spec.ports.port muss auch auf den Mindestwert im Portbereich gesetzt werden.
Im folgenden Beispiel wird der Portbereich 30000-30010 verwendet.
Nodeport-Services müssen für jede Implementierung, in der der NLB-Service die Anforderung weiterleitet, manuell erstellt werden. Die Portnummer jedes dieser Nodeport-Services muss innerhalb des Portbereichs liegen, der im NLB-Service konfiguriert ist.
Im folgenden Beispieldiagramm wird ein Nodeport-Service mit Port 30000 für Implementierung 1 erstellt, während ein Nodeport-Service mit Port 30001 für Implementierung 2 erstellt wird.
Der Benutzer stellt eine Anforderung an Port 30001 der NLB, die den Portbereich enthält. Diese Anforderung wird an den VPC-NLB-Service weitergeleitet, der die Anforderung an den Nodeport-Service im Cluster weiterleitet, der auch an Port 30001 empfangsbereit ist, der in diesem Fall für Implementierung 2 bestimmt ist. Anschließend leitet der Nodeport-Service die Anforderung an den Zielport der ausgewählten Pod von Implementierung 2 weiter.
Erstellen Sie mithilfe des folgenden Beispiels eine NLB, die einen Portbereich verwendet. Die Selektor-und Back-End-Pods müssen dem Lastausgleichsservice für den Portbereich zugeordnet werden, damit die Statusprüfungen den Erfolg zurückgeben und Daten an die Ports im Portbereich übermittelt werden. Wenn Sie einen Portbereich verwenden möchten, müssen Sie zusätzliche NodePort-Services erstellen, deren Portwerte in dem vom Lastausgleichsservice definierten Bereich liegen.
-
Speichern Sie die folgende
LoadBalancer-Beispielkonfiguration als Datei mit dem Namenloadbalancer.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 -
Erstellen Sie den Service.
oc apply -f loadbalancer.yaml -
Erstellen Sie einen
NodePort-Service mit Portwerten, die in dem Portbereich liegen, der im zuvor erstelltenLoadBalancerangegeben wurde.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 -
Erstellen Sie den Dienst NodePort.
oc apply -f nodeport.yaml -
Für den Zugriff auf einen Port, der sich in dem von der NLB bereitgestellten Bereich befindet
curl https://<public ip assigned to NLB>:3000330003= Ist ein Knotenport in dem Bereich, der auf die Anforderung antwortet.- Andere Ports im Bereich antworten nur, wenn zusätzliche Knotenportservices erstellt werden.
Privaten VPC-NLB einrichten
Setzen Sie Ihre App auf den privaten Netzdatenverkehr, indem Sie einen Kubernetes-LoadBalancer-Service in jeder Zone Ihres Clusters einrichten. Wenn Sie den Kubernetes-LoadBalancer-Service erstellen, wird ein privates
Lastausgleichsfunktionsnetz für VPC (VPC-NLB), das Anforderungen an Ihre App weiterleitet, automatisch für Sie in Ihrem VPC außerhalb Ihres Clusters erstellt.
Vorbereitende Schritte
- Vergewissern Sie sich, dass Sie über die Writer- oder **Manager-**IBM CloudIAM-Service-Zugriffsrolle für den Namensbereich verfügen, in dem Sie den
Kubernetes-
LoadBalancer-Service für den VPC NLB bereitstellen. - Stellen Sie eine Verbindung zu Ihrem privaten VPC-Netz her, z. B. über eine VPC-VPN-Verbindung,
- Rufen Sie Ihren Red Hat OpenShift-Cluster auf.
- Installieren Sie zum Anzeigen von VPC-NLBs das Plug-in
infrastructure-service. Das Präfix für die Ausführung von Befehlen istibmcloud is.ibmcloud plugin install infrastructure-service
Gehen Sie wie folgt vor, um Ihre App für den Empfang privater Netzanforderungen zu aktivieren:
-
Erstellen Sie ein VPC-Teilnetz, das Ihrem VPC-NLB zugeordnet ist. Dieses Teilnetz muss in derselben VPC und an derselben Position wie Ihr Cluster vorhanden sein, kann aber nicht mit Ihrem Cluster oder Workerknoten verbunden werden.
- Klicken Sie im VPC-Subnetz-Dashboard auf Neues Subnetz.
- Geben Sie einen Namen für Teilnetz ein.
- Wählen Sie die Speicherposition, an dem Ihr Cluster existiert, und die Zone, in der Sie den VPC-NLB erstellen möchten.
- Wählen Sie den Namen des VPC aus, in dem Ihr Cluster vorhanden ist.
- Geben Sie die Anzahl der zu erstellenden IP-Adressen an. Da dieses Teilnetz dem VPC-NLB zugeordnet ist, können Sie eine kleinere Größe auswählen, z. B. 16. Sie können die Anzahl der IPs, über die ein VPC-Teilnetz später verfügt, nicht
ändern. Wenn Sie einen bestimmten IP-Bereich eingeben, verwenden Sie nicht die folgenden reservierten Bereiche:
172.16.0.0/16,172.18.0.0/16,172.19.0.0/16und172.20.0.0/16. - Klicken Sie auf Teilnetz erstellen. Notieren Sie sich nach der Bereitstellung des Teilnetzes die zugehörige ID.
-
Wenn der Client, der sich über die VPC-NLB mit Ihrer App verbinden muss, außerhalb der VPC und der Zone liegt, in der Sie das dedizierte VPC-Teilnetz erstellt haben, müssen Sie eine angepasste Ingress-Routing-Tabelle erstellen. Private VPC-NLBs können der angepassten Routing-Tabelle Regeln hinzufügen, um die Serviceverfügbarkeit für einige Fehlerbedingungen zu gewährleisten. Weitere Informationen finden Sie in der Tabelle unter den bekannten Einschränkungen und unter Über Routing-Tabellen und Routen.
- Klicken Sie im Dashboard VPC-Routing-Tabellen auf Erstellen.
- Geben Sie einen Namen für Ihre Routing-Tabelle ein.
- Wählen Sie die Speicherposition und Zone aus, in der Sie das dedizierte Teilnetz erstellt haben.
- Wählen Sie den Namen des VPC aus, in dem Ihr Teilnetz vorhanden ist.
- Wählen Sie für den Verkehrstyp den Eintrag Ingress aus.
- Wählen Sie, je nachdem wo der Client auf Ihre App zugreift, eine Verkehrsquelleaus. Weitere Informationen zum Einrichten von Verbindungen zu Ihrem privaten VPC-Netz finden Sie in der Dokumentation zur Auswahl des IBM Cloud VPC-VPNTransit Gateway oder Direct Link zur VPC-Konnektivität.
- Lokales Netz: Direkter Link
- Eine weitere VPC- oder klassische Infrastruktur: Transit-Gateway
- Eine andere Zone innerhalb des gleichen VPC: VPC-Zone
-
Stellen Sie die App im Cluster bereit. Stellen Sie sicher, dass Sie im Metadatenabschnitt der Konfigurationsdatei für die Bereitstellung eine Bezeichnung hinzufügen. Mit dieser angepassten Bezeichnung werden alle Pods gekennzeichnet, in denen Ihre App ausgeführt wird und die in den Lastausgleich einbezogen werden sollen.
-
Erstellen Sie eine YAML-Konfigurationsdatei für Ihren Kubernetes Service vom Typ
LoadBalancer. Sie können den Service im Format<app_name>-vpc-nlb-<VPC_zone>benennen.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"- Optional. Schließen Sie einen eindeutigen Namen ein, um Ihre VPC-Lastausgleichsfunktion persistent zu machen. Persistente VPC-Lastausgleichsfunktionen werden nicht gelöscht, wenn der Cluster, zu dem sie gehören, gelöscht wird. Weitere Informationen finden Sie unter Persistente VPC-Lastausgleichsfunktionen.
service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "nlb"- Erforderlich: Annotation zum Erstellen einer VPC-NLB.
service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "private"- Erforderlich: Annotation zur Angabe eines Service, der private Anforderungen akzeptiert.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets- Erforderlich: Annotation zur Angabe des dedizierten Teilnetzes, für das der VPC-NLB implementiert werden soll. Der Wert kann als VPC-Teilnetz-ID, VPC-Teilnetzname oder VPC-Teilnetz-CIDR angegeben werden. Sie müssen nur ein Teilnetz angeben.
Das Teilnetz muss sich in derselben VPC wie Ihr Cluster und in einer Zone befinden, in der Ihr Cluster über Workerknoten verfügt, aber es können keine Workerknoten mit diesem Teilnetz verbunden sein. Die Workerknoten, die sich in der
gleichen Zone wie dieses Teilnetz befinden, sind so konfiguriert, dass sie Verkehr vom VPC-NLB empfangen. Um Teilnetze in allen Ressourcengruppen anzuzeigen, führen Sie
ibmcloud oc subnets --provider vpc-gen2 --vpc-id <vpc> --zone <zone>aus. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector-
- Optional: Annotation zur Angabe eines Selektors für Workerknotenbezeichnungen. Innerhalb derselben Zone wie das dedizierte Teilnetz für den VPC-NLB können Sie bestimmte Workerknoten für den Empfang von Datenverkehr konfigurieren, indem Sie einen der unterstützten Kennzeichenauswahltasten auswählen. Dabei ist zu beachten, dass Sie nur einen einzigen Bezeichnungsselektor in die Annotation einschließen können und dass der Selektor im Format
"key=value"angegeben werden muss. Wenn diese Annotation nicht angegeben wird, werden alle Workerknoten in derselben Zone wie das VPC-Teilnetz, das Sie in der Annotationservice.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnetsangegeben haben, so konfiguriert, dass sie Verkehr vom VPC-NLB empfangen. Wenn diese Option angegeben ist, werden allededicated: edge-Bezeichnungen auf Workerknoten ignoriert. - Die folgenden Schlüssel sind zulässig. -
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
- Optional: Annotation zur Angabe eines Selektors für Workerknotenbezeichnungen. Innerhalb derselben Zone wie das dedizierte Teilnetz für den VPC-NLB können Sie bestimmte Workerknoten für den Empfang von Datenverkehr konfigurieren, indem Sie einen der unterstützten Kennzeichenauswahltasten auswählen. Dabei ist zu beachten, dass Sie nur einen einzigen Bezeichnungsselektor in die Annotation einschließen können und dass der Selektor im Format
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-udp- Optional: Geben Sie einen TCP-Knotenport an, der für TCP-Statusprüfungen in einer UDP-Lastausgleichsfunktion verwendet wird. Erforderlich für UDP-Lastausgleichsfunktionen, bei denen
externalTrafficPolicyaufClusterfestgelegt ist. Weitere Hinweise zum Festlegen eines Portwerts finden Sie unter TCP-Statusprüfungen für UDP-Lastausgleichsfunktionen konfigurieren. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-protocol- Optional: Diese Anmerkung legt das Statusprüfungsprotokoll für die VPC-Lastausgleichsressource fest, die dem Kubernetes zugeordnet ist. Normalerweise wird das Protokoll der VPC-LB-Statusprüfung durch den Wert der Einstellung
externalTrafficPolicyin der Spezifikation des Kubernetes-Service für die Lastausgleichsfunktion bestimmt. Diese Annotation überschreibt diese Logik. Diese Annotation ändert nicht das Verhalten von Kubernetesund insbesondere von 'kube-proxy' in Bezug auf die verschiedenen Einstellungen vonexternalTrafficPolicy. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-port- Optional. Der Port TCP, der für die Zustandsprüfungen verwendet wird. Diese Annotation gilt nur, wenn auch
ibm-load-balancer-cloud-provider-vpc-health-check-protocolangegeben ist.- Liegt der angegebene TCP-Port außerhalb des Portbereichs für Kubernetes-Knoten (30.000–32.767), muss die auf die Cluster-Worker-Knoten angewendete VPC-Sicherheitsgruppe angepasst werden, um eingehenden Datenverkehr auf diesem Port zuzulassen.
- Wird diese Anmerkung auf einen Kubernetes-Load-Balancer-Dienst angewendet, der mit einem VPC-ALB verknüpft ist, müssen die ausgehenden Regeln der dem VPC-ALB zugewiesenen Sicherheitsgruppe geändert werden, um ausgehenden Datenverkehr zum angegebenen TCP-Port zuzulassen.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-path- Optional. Der Health-Check- URL spfad für HTTP und HTTPS-Health-Checks. Diese Annotation gilt nur, wenn
ibm-load-balancer-cloud-provider-vpc-health-check-protocolaufhttpoderhttpsgesetzt ist.- Der Pfad URL muss im Format eines Origin-Form-Anfrageziels vorliegen.
- Wenn diese Annotation nicht angegeben ist und die Annotation
ibm-load-balancer-cloud-provider-vpc-health-check-protocolaufhttpoderhttpsgesetzt ist, wird der Standardwert/angewendet.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-delay- Optional. Die Anzahl der Sekunden, die zwischen Statusprüfungsversuchen gewartet werden soll. Standardmäßig ist dieser Wert auf
5gesetzt und hat ein Minimum von2und ein Maximum von60. Dieser Wert muss größer als der Wertibm-load-balancer-cloud-provider-vpc-health-check-timeoutsein, der standardmäßig auf2gesetzt ist. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-timeout- Optional. Die Anzahl der Sekunden, die auf eine Antwort auf eine Statusprüfung gewartet wird. Standardmäßig ist dieser Wert auf
2gesetzt und hat ein Minimum von1und ein Maximum von59. Dieser Wert muss kleiner als dieibm-load-balancer-cloud-provider-vpc-health-check-delaysein, die standardmäßig auf5gesetzt ist. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-retries- Die maximale Anzahl der Wiederholungen der Statusprüfung für die VPC-Lastausgleichsfunktion. Standardmäßig ist dieser Wert auf
2gesetzt und hat ein Minimum von1und ein Maximum von10. selector- Der Bezeichnungsschlüssel (
<selector_key>) und der Wert (<selector_value>), die Sie im Abschnittspec.template.metadata.labelsIhrer YAML-Datei für die App-Bereitstellung verwendet haben. Mit dieser angepassten Bezeichnung werden alle Pods gekennzeichnet, in denen Ihre App ausgeführt wird und die in den Lastausgleich einbezogen werden sollen. port- Der Port, den der Service überwacht.
targetPort- Optional: Der Port, an den der Datenverkehr vom Service weitergeleitet wird. Die im Pod ausgeführte Anwendung muss auf eingehenden TCP-Datenverkehr an diesem Zielport warten. Der Zielport wird häufig statisch in dem Image definiert, das im Anwendungspod ausgeführt wird. Der im Pod konfigurierte Zielport unterscheidet sich vom Knotenport für den Service und kann sich auch von dem externen Port unterscheiden, der in der VPC-Lastausgleichsfunktion konfiguriert ist.
externalTrafficPolicy-
- Erforderlich. Angeben
LocaloderCluster. - Setzen Sie die Einstellung auf, um
Localdie Quell-IP-Adresse von Client-Anfragen an Ihre Apps zu erhalten. Diese Einstellung verhindert, dass der eingehende Datenverkehr an einen anderen Knoten weitergeleitet wird. Diese Option konfiguriert auch HTTP-Statusprüfungen. - Wenn gesetzt
Clusterist, wird DSR nur von dem Worker-Knoten aus implementiert, an den der VPC-NLB die eingehende Anfrage ursprünglich weiterleitet. Nach Eingang der eingehenden Anforderung wird die Anforderung an einen Workerknoten weitergeleitet, der den App-Pod enthält, der sich möglicherweise in einer anderen Zone befindet. Die Antwort des App-Pods wird an den ursprünglichen Workerknoten gesendet und dieser Workerknoten verwendet DSR, um die Antwort direkt unter Umgehung der VPC-NLB an den Client zu senden. Diese Option konfiguriert auch TCP-Statusprüfungen. Bei Load Balancern für UDPservice.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-udpist die erforderlich, wenn Sie die OptionClusterwählen. Weitere Informationen finden Sie unter Konfigurieren von TCP-Zustandsprüfungen für UDP-Lastverteiler.
- Erforderlich. Angeben
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-member-quota- Optional. Die Anzahl der Arbeitsknoten pro Zone, zu denen der Load Balancer leitet. Der Standardwert ist '8'. Bei einem Cluster mit Arbeitsknoten in drei Zonen führt dies dazu, dass der Load Balancer an insgesamt 24 Arbeitsknoten weiterleitet. Die Gesamtzahl der Arbeitsknoten in allen Zonen, zu denen der Load Balancer leitet, darf 50 nicht überschreiten. Wenn der Cluster weniger als 50 Arbeitsknoten in allen Zonen hat, geben Sie 0 an, um zu allen Arbeitsknoten in einer Zone zu leiten.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-security-group- Optional. Eine vom Kunden verwaltete Sicherheitsgruppe, die dem VPC-Loadbalancer hinzugefügt wird. Wenn Sie nicht die IBM-verwaltete Sicherheitsgruppe verwenden möchten, geben Sie eine Sicherheitsgruppe an, die Sie besitzen und verwalten. Diese Option entfernt die IBM-verwaltete Sicherheitsgruppe und ersetzt sie durch die von Ihnen angegebene Sicherheitsgruppe. Wenn Sie die Anmerkung von einem vorhandenen Load Balancer entfernen, wird die von Ihnen hinzugefügte Sicherheitsgruppe durch die IBM-verwaltete Sicherheitsgruppe ersetzt. Sie können diesen Vermerk jederzeit hinzufügen oder entfernen. Sie sind für die Verwaltung Ihrer Sicherheitsgruppe verantwortlich und halten sie auf dem neuesten Stand.
-
Erstellen Sie den Kubernetes-Service vom Typ
LoadBalancerin Ihrem Cluster.oc apply -f <filename>.yaml -n <namespace> -
Überprüfen Sie, ob der Kubernetes Service vom Typ
LoadBalancerin Ihrem Cluster erfolgreich erstellt wurde. Wenn der Service erstellt wurde, enthält das Feld LoadBalancer Ingress eine externe IP-Adresse, die von der VPC-NLB zugeordnet wird.
Die Bereitstellung der VPC-NLB in Ihrer VPC dauert einige Minuten. Die externe IP-Adresse des Kubernetes-Service vom Typ LoadBalancer weist möglicherweise den Status pending auf, bis die VPC-NLB vollständig
eingerichtet ist.
```sh {: pre}
oc describe svc myloadbalancer -n <namespace>
```
Beispiel für eine CLI-Ausgabe für einen privaten `LoadBalancer` -Service:
```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.
```
-
Überprüfen Sie, ob die VPC-NLB in Ihrer VPC erfolgreich erstellt wurde. Überprüfen Sie, ob die VPC-NLB in der Ausgabe für Operating Status den Wert
onlineund für Provision Status den Wertactiveaufweist.ibmcloud is load-balancersIn der folgenden CLI-Beispielausgabe wird die erstellte VPC-NLB mit dem Namen
kube-bh077ne10vqpekt0domg-046e0f754d624dca8b287a033d55f96efür den Kubernetes-Service vom TypLoadBalancerangezeigt: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 -
Greifen Sie über Ihre Verbindung zum privaten VPC-Netzwerk auf die IP-Adresse des Kubernetes-
LoadBalancer-Dienstes zu, die Sie in Schritt 6 gefunden haben, und auf Ihren App-Port im Format<external_IP>:<app_port>. -
Optional: Wiederholen Sie diese Schritte, um einen privaten VPC-NLB in jeder Zone bereitzustellen, in der Sie Ihre App bereitstellen möchten. Anschließend können Sie die externen IP-Adressen der VPC-NLB in jeder Zone in einer DNS-Unterdomäne registrieren.
DNS-Datensatz und TLS-Zertifikat registrieren
VPC-NLBs stellen statische externe IP-Adressen bereit, über die Sie auf Ihre App zugreifen können. Zur Registrierung eines SSL-Zertifikats für Ihre App-Domäne für die Unterstützung von HTTPS können Sie eine von IBM bereitgestellte Unterdomäne erstellen oder eine eigene angepasste Domäne bereitstellen.
Sie haben zum Beispiel einen Mehrzonencluster und führen Replikate Ihrer App auf Workerknoten in jeder Zone Ihres Clusters aus. Sie erstellen genau eine VPC-NLB pro Zone, um die App-Replikate zugänglich zu machen. Anschließend können Sie die externen IP-Adressen, die von jeder VPC-NLB bereitgestellt werden, in einem DNS-Eintrag registrieren.
Nach der Erstellung einer DNS-Unterdomäne für VPC-NLBs können Sie keine nlb-dns health-monitor-Befehle verwenden, um eine angepasste Statusprüfung zu erstellen. Stattdessen wird die VPC-Standardstatusprüfung verwendet. Weitere
Informationen finden Sie in der VPC-Dokumentation.
- Erstellen Sie eine VPC-NLB pro Zone für Ihre App. Stellen Sie sicher, dass Sie in Ihrem Kubernetes-Service vom Typ
LoadBalancer, von dem die VPC-NLB konfiguriert wird, einen HTTPS-Port definieren. - Um das SSL-Zertifikat für den Zugriff über HTTPS auf Ihre App verwenden zu können, muss Ihre App in der Lage sein, TLS-Verbindungen zu beenden.
Gehen Sie wie folgt vor, um VPC-NLB-IP-Adressen mit einer DNS-Unterdomäne zu registrieren:
-
Rufen Sie die externe IP-Adresse Ihrer Lastausgleichsfunktion ab.
oc get svc -o wideBeispielausgabe
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 -
Erstellen Sie eine angepasste oder von IBM bereitgestellte DNS-Unterdomäne für die IP-Adresse.
-
Angepasste Domäne:
- Registrieren Sie in Zusammenarbeit mit Ihrem DNS-Provider (DNS = Domain Name Service) oder mit dem IBM Cloud-DNS eine angepasste Domäne.
- Definieren Sie einen Aliasnamen für Ihre angepasste Domäne, indem Sie die IP-Adressen der Lastausgleichsfunktionen als A-Datensätze angeben.
-
Von IBM bereitgestellte Unterdomäne: Mit
nlb-dns-Befehlen können Sie eine Unterdomäne mit einem SSL-Zertifikat für die IP-Adressen generieren. IBM Cloud übernimmt für Sie die Generierung und Verwaltung des Platzhalter-SSL-Zertifikats für die Unterdomäne.- Erstellen Sie eine DNS-Unterdomäne und ein SSL-Zertifikat.
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> - Überprüfen Sie, ob die Unterdomäne erstellt wurde. Weitere Informationen finden Sie unter Informationen zum Unterdomänenformat.
Beispielausgabeibmcloud 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>
- Erstellen Sie eine DNS-Unterdomäne und ein SSL-Zertifikat.
-
-
Öffnen Sie einen Web-Browser und geben Sie die URL für den Zugriff auf Ihre App über die Unterdomäne ein.
Wenn Sie das SSL-Zertifikat für den Zugriff auf Ihre App über HTTPS verwenden möchten, stellen Sie sicher, dass in Ihrem Kubernetes-Service vom Typ LoadBalancer ein HTTPS-Port definiert ist.
Sie können überprüfen, ob Anforderungen ordnungsgemäß über den HTTPS-Port weitergeleitet werden, indem Sie curl -v --insecure https://<domain> ausführen. Ein Verbindungsfehler weist darauf hin, dass kein HTTPS-Port für
den Service geöffnet ist. Stellen Sie außerdem sicher, dass TLS-Verbindungen von Ihrer Anwendung beendet werden können. Sie können überprüfen, ob Ihre App TLS ordnungsgemäß beendet, indem Sie curl -v https://<domain> ausführen.
Ein Zertifikatsfehler gibt an, dass Ihre App TLS-Verbindungen nicht korrekt beendet.
Application Load Balancer for VPC-Instanz einrichten
Sie richten einen Kubernetes-Service vom Typ LoadBalancer (Lastausgleichsfunktion) in Ihrem Cluster ein, um Ihre App im öffentlichen oder privaten Netz zugänglich zu machen. Wenn Sie Ihre App zugänglich machen, wird eine Application
Load Balancer for VPC-Instanz (VPC-ALB), die Anforderungen an Ihre App weiterleitet, automatisch in Ihrer VPC außerhalb Ihres Clusters erstellt. VPC-ALBs unterstützen ausschließlich das TCP-Protokoll.
Verwechseln Sie die VPC-Lastausgleichsfunktion für Anwendungen nicht mit Ingress-Lastausgleichsfunktionen für Anwendungen von (Application Load Balancers, ALBs) von Red Hat OpenShift on IBM Cloud. Application Load Balancers for VPC-Instanzen
(VPC-ALBs) werden außerhalb Ihres Clusters in Ihrer VPC ausgeführt und werden von Kubernetes-Services vom Typ LoadBalancer konfiguriert, die Sie erstellen. Ingress-Lastausgleichsfunktionen für Anwendungen sind Ingress-Controller, die auf Workerknoten in Ihrem Cluster ausgeführt werden.
Öffentliche oder private VPC-ALB einrichten
Vorbereitende Schritte
- Vergewissern Sie sich, dass Sie über die Writer- oder **Manager-**IBM CloudIAM-Service-Zugriffsrolle für den Namensbereich verfügen, in dem Sie den
Kubernetes-
LoadBalancer-Service für den VPC NLB bereitstellen. - Rufen Sie Ihren Red Hat OpenShift-Cluster auf.
- Installieren Sie zum Anzeigen von VPC-ALBs das Plug-in
infrastructure-service. Das Präfix für die Ausführung von Befehlen istibmcloud is.ibmcloud plugin install infrastructure-service
Damit Ihre App öffentliche oder private Anforderungen empfangen kann:
-
Stellen Sie die App im Cluster bereit. Stellen Sie sicher, dass Sie im Metadatenabschnitt der Konfigurationsdatei für die Bereitstellung eine Bezeichnung hinzufügen. Mit dieser angepassten Bezeichnung werden alle Pods gekennzeichnet, in denen Ihre App ausgeführt wird und die in den Lastausgleich einbezogen werden sollen.
-
Erstellen Sie eine YAML-Konfigurationsdatei für Ihren Kubernetes Service vom Typ
LoadBalancerund geben Sie der Datei den Namenmyloadbalancer.yaml.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"-
Optional. Schließen Sie einen eindeutigen Namen ein, um Ihre VPC-Lastausgleichsfunktion persistent zu machen. Persistente VPC-Lastausgleichsfunktionen werden nicht gelöscht, wenn der Cluster, zu dem sie gehören, gelöscht wird. Weitere Informationen finden Sie unter Persistente VPC-Lastausgleichsfunktionen.
service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "proxy-protocol"-
Optional: Aktivieren Sie das PROXY-Protokoll. Die Lastausgleichsfunktion übergibt Clientverbindungsinformationen, einschließlich der Client-IP-Adresse, der Proxy-Server-IP-Adresse und der beiden Portnummern, in Anforderungsheadern an Ihre Back-End-App. Dabei ist zu beachten, dass Ihre Back-End-App so konfiguriert sein muss, dass sie das PROXY-Protokoll akzeptiert. Beispielsweise können Sie eine NGINX-Anwendung so konfigurieren, dass sie das PROXY-Protokoll akzeptiert, indem Sie die folgenden Schritte ausführen.
service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type-
Annotation zur Angabe eines Service, der öffentliche oder private Anforderungen akzeptiert. Wenn Sie diese Annotation nicht einschließen, wird eine öffentliche
LoadBalancererstellt. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector-
- Anmerkung zur Festlegung eines Selektors für Worker-Knoten-Labels. Kennzeichnen Sie die Workerknoten, die Datenverkehr empfangen sollen, indem Sie sich für einen der unterstützten Schlüssel für Bezeichnungsselektoren entscheiden. Dabei ist zu beachten, dass Sie nur einen einzigen Bezeichnungsselektor in die Annotation einschließen können und dass der Selektor im Format
"key=value"angegeben werden muss. Wird diese Annotation nicht angegeben, werden alle Workerknoten, die sich in derselben Zone wie Ihr Cluster befinden, so konfiguriert, dass sie Datenverkehr von der VPC-ALB empfangen. Ist diese Annotation angegeben, hat sie Vorrang vor der Annotationservice.kubernetes.io/ibm-load-balancer-cloud-provider-zoneund die Bezeichnungdedicated: edgefür Workerknoten wird ignoriert. - Die folgenden Schlüssel sind zulässig: -
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
- Anmerkung zur Festlegung eines Selektors für Worker-Knoten-Labels. Kennzeichnen Sie die Workerknoten, die Datenverkehr empfangen sollen, indem Sie sich für einen der unterstützten Schlüssel für Bezeichnungsselektoren entscheiden. Dabei ist zu beachten, dass Sie nur einen einzigen Bezeichnungsselektor in die Annotation einschließen können und dass der Selektor im Format
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets-
Anmerkung zur Angabe eines oder mehrerer Subnetze, in denen der VPC-ALB-Dienst bereitgestellt wird. Ist diese Annotation angegeben, hat sie Vorrang vor der Annotation
service.kubernetes.io/ibm-load-balancer-cloud-provider-zone. Dabei ist zu beachten, dass Sie ein Teilnetz in derselben VPC angeben können, bei dem es sich nicht um eines der Teilnetze handelt, mit dem Ihr Cluster verbunden ist. In diesem Fall kann die VPC-ALB, auch wenn sie in einem anderen Teilnetz in derselben VPC bereitgestellt wird, dennoch Datenverkehr an Ihre Workerknoten in den Clusterteilnetzen derselben Zone weiterleiten. Um Teilnetze in allen Ressourcengruppen anzuzeigen, führen Sieibmcloud oc subnets --provider vpc-gen2 --vpc-id <vpc> --zone <zone>aus. service.kubernetes.io/ibm-load-balancer-cloud-provider-zone-
Annotation zur Angabe einer VPC-Zone, der Ihr Cluster zugeordnet ist. Wenn Sie eine Zone in dieser Annotation angeben, werden zwei Prozesse ausgeführt.
- Die VPC-ALB wird in demselben Teilnetz der betreffenden Zone bereitgestellt, mit dem auch Ihre Workerknoten verbunden sind.
- Nur die Workerknoten in Ihrem Cluster in dieser Zone werden so konfiguriert, dass sie Datenverkehr von der VPC-ALB empfangen.
-
Zum Anzeigen von Zonen führen Sie
ibmcloud oc zone ls --provider vpc-gen2aus. -
- Wenn Sie die Lastausgleichsfunktion in einer bestimmten Zone platzieren möchten, müssen Sie diese Annotation beim Erstellen der Lastausgleichsfunktion angeben. Wenn Sie diese Annotation später in eine andere Zone ändern, wird die Lastausgleichsfunktion selbst nicht in die neue Zone verschoben. Die Lastausgleichsfunktion wird jedoch so neu konfiguriert, dass Datenverkehr nur an Workerknoten in der neuen Zone gesendet wird.
- Wenn die Bezeichnung
dedicated: edgeauf Workerknoten festgelegt ist und Sie diese Annotation angeben, werden nur Edge-Knoten in der angegebenen Zone für den Empfang von Datenverkehr konfiguriert. Edge-Knoten in anderen Zonen und Nicht-Edge-Knoten in der angegebenen Zone empfangen keinen Datenverkehr von der Lastausgleichsfunktion.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-protocol-
Optional: Diese Anmerkung legt das Statusprüfungsprotokoll für die VPC-Lastausgleichsressource fest, die dem Kubernetes zugeordnet ist. Normalerweise wird das Protokoll der VPC-LB-Statusprüfung durch den Wert der Einstellung
externalTrafficPolicyin der Spezifikation des Kubernetes-Service für die Lastausgleichsfunktion bestimmt. Diese Annotation überschreibt diese Logik. Diese Annotation ändert nicht das Verhalten von Kubernetesund insbesondere von 'kube-proxy' in Bezug auf die verschiedenen Einstellungen vonexternalTrafficPolicy. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-port-
Optional. Der Port TCP, der für die Zustandsprüfungen verwendet wird. Diese Annotation gilt nur, wenn auch
ibm-load-balancer-cloud-provider-vpc-health-check-protocolangegeben ist.- Liegt der angegebene TCP-Port außerhalb des Portbereichs für Kubernetes-Knoten (30.000–32.767), muss die auf die Cluster-Worker-Knoten angewendete VPC-Sicherheitsgruppe angepasst werden, um eingehenden Datenverkehr auf diesem Port zuzulassen.
- Wird diese Anmerkung auf einen Kubernetes-Load-Balancer-Dienst angewendet, der mit einem VPC-ALB verknüpft ist, müssen die ausgehenden Regeln der dem VPC-ALB zugewiesenen Sicherheitsgruppe geändert werden, um ausgehenden Datenverkehr zum angegebenen TCP-Port zuzulassen.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-path-
Optional. Der Health-Check- URL spfad für HTTP und HTTPS-Health-Checks. Diese Annotation gilt nur, wenn
ibm-load-balancer-cloud-provider-vpc-health-check-protocolaufhttpoderhttpsgesetzt ist.- Der Pfad URL muss im Format eines Origin-Form-Anfrageziels vorliegen.
- Wenn diese Annotation nicht angegeben ist und die Annotation
ibm-load-balancer-cloud-provider-vpc-health-check-protocolaufhttpoderhttpsgesetzt ist, wird der Standardwert/angewendet.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-delay-
Optional. Die Anzahl der Sekunden, die zwischen Statusprüfungsversuchen gewartet werden soll. Standardmäßig ist dieser Wert auf
5gesetzt und hat ein Minimum von2und ein Maximum von60. Dieser Wert muss größer als der Wertibm-load-balancer-cloud-provider-vpc-health-check-timeoutsein, der standardmäßig auf2gesetzt ist. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-timeout-
Optional. Die Anzahl der Sekunden, die auf eine Antwort auf eine Statusprüfung gewartet wird. Standardmäßig ist dieser Wert auf
2gesetzt und hat ein Minimum von1und ein Maximum von59. Dieser Wert muss kleiner als dieibm-load-balancer-cloud-provider-vpc-health-check-delaysein, die standardmäßig auf5gesetzt ist. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-retries-
Die maximale Anzahl der Wiederholungen der Statusprüfung für die VPC-Lastausgleichsfunktion. Standardmäßig ist dieser Wert auf
2gesetzt und hat ein Minimum von1und ein Maximum von10. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-idle-connection-timeout-
Optional. Das Zeitlimit für inaktive Verbindungen des Listeners in Sekunden. Das Standardinaktivitätszeitlimit hängt von Ihren Kontoeinstellungen ab. Normalerweise lautet dieser Wert
50. Einige Konten, die in der Zulassungsliste aufgeführt sind, haben jedoch größere Zeitlimiteinstellungen. Wenn Sie die Annotation nicht festlegen, verwenden Ihre Lastausgleichsfunktionen die Zeitlimiteinstellung in Ihrem Konto. Sie können das Zeitlimit explizit angeben, indem Sie diese Annotation festlegen. Der Mindestwert ist50. Das Maximum beträgt7200. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-private-dns-instance-crn: "private-dns-crn"-
Optional. Kann nur für private VPC ALBs in Version angewendet werden4.15 oder später. Die DNS-Einträge, die diesem Load Balancer zugeordnet werden
instancesollen. Weitere Informationen finden Sie unter Registrieren eines privaten DNS-Eintrags. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-private-dns-zone-id: "dns-zone-id"-
Optional. Kann nur für private VPC ALBs in Version angewendet werden4.15 oder später. Die DNS-Einträge, die diesem Load Balancer zugeordnet werden
zonesollen. Weitere Informationen finden Sie unter Registrieren eines privaten DNS-Eintrags. selector-
Der Bezeichnungsschlüssel (
<selector_key>) und der Wert (<selector_value>), die Sie im Abschnittspec.template.metadata.labelsIhrer YAML-Datei für die App-Bereitstellung verwendet haben. Mit dieser angepassten Bezeichnung werden alle Pods gekennzeichnet, in denen Ihre App ausgeführt wird und die in den Lastausgleich einbezogen werden sollen. port-
Der Port, den der Service überwacht.
targetPort-
Optional: Der Port, an den der Datenverkehr vom Service weitergeleitet wird. Die im Pod ausgeführte Anwendung muss auf eingehenden TCP-Datenverkehr an diesem Zielport warten. Der Zielport wird häufig statisch in dem Image definiert, das im Anwendungspod ausgeführt wird. Der im Pod konfigurierte Zielport unterscheidet sich vom Knotenport für den Service und kann sich auch von dem externen Port unterscheiden, der in der VPC-Lastausgleichsfunktion konfiguriert ist.
externalTrafficPolicy-
- Erforderlich. Geben Sie
LocaloderClusteran. - Setzen Sie die Einstellung auf, um
Localdie Quell-IP-Adresse von Client-Anfragen an Ihre Apps zu bewahren. Diese Einstellung verhindert, dass der eingehende Datenverkehr an einen anderen Knoten weitergeleitet wird. Diese Option konfiguriert auch HTTP-Statusprüfungen. Bei Load Balancern für UDPservice.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-udpist die erforderlich, wenn Sie die OptionClusterwählen. Weitere Informationen finden Sie unter Konfigurieren von TCP-Zustandsprüfungen für UDP-Lastverteiler.
- Erforderlich. Geben Sie
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-member-quota-
Optional. Die Anzahl der Arbeitsknoten pro Zone, zu denen der Load Balancer leitet. Der Standardwert ist '8'. Bei einem Cluster mit Arbeitsknoten in drei Zonen führt dies dazu, dass der Load Balancer an insgesamt 24 Arbeitsknoten weiterleitet. Die Gesamtzahl der Arbeitsknoten in allen Zonen, zu denen der Load Balancer leitet, darf 50 nicht überschreiten. Wenn der Cluster weniger als 50 Arbeitsknoten in allen Zonen hat, geben Sie 0 an, um zu allen Arbeitsknoten in einer Zone zu leiten.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-security-group-
Optional. Eine vom Kunden verwaltete Sicherheitsgruppe, die dem VPC-Loadbalancer hinzugefügt wird. Wenn Sie nicht die IBM-verwaltete Sicherheitsgruppe verwenden möchten, geben Sie eine Sicherheitsgruppe an, die Sie besitzen und verwalten. Diese Option entfernt die IBM-verwaltete Sicherheitsgruppe und ersetzt sie durch die von Ihnen angegebene Sicherheitsgruppe. Wenn Sie die Anmerkung von einem vorhandenen Load Balancer entfernen, wird die von Ihnen hinzugefügte Sicherheitsgruppe durch die IBM-verwaltete Sicherheitsgruppe ersetzt. Sie können diesen Vermerk jederzeit hinzufügen oder entfernen. Sie sind für die Verwaltung Ihrer Sicherheitsgruppe verantwortlich und halten sie auf dem neuesten Stand.
-
Erstellen Sie den Kubernetes-Service vom Typ
LoadBalancerin Ihrem Cluster.oc apply -f myloadbalancer.yaml -n <namespace> -
Überprüfen Sie, ob der Kubernetes Service vom Typ
LoadBalancerin Ihrem Cluster erfolgreich erstellt wurde. Wenn der Service erstellt wurde, enthält das Feld LoadBalancer Ingress einen Hostnamen, der von der VPC-ALB zugeordnet wird.
Die Bereitstellung der VPC-ALB in Ihrer VPC dauert einige Minuten. Sie können erst unter Verwendung des Hostnamens Ihres Kubernetes-LoadBalancer-Service auf Ihre App zugreifen, wenn die VPC-ALB vollständig bereitgestellt
wurde.
```sh {: pre}
oc describe svc myloadbalancer -n <namespace>
```
CLI-Beispielausgabe für einen öffentlichen `LoadBalancer`-Service:
```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.
```
-
Überprüfen Sie, ob die VPC-ALB in Ihrer VPC erfolgreich erstellt wurde. Überprüfen Sie, ob die VPC-ALB in der Ausgabe für Operating Status den Wert
onlineund für Provision Status den Wertactiveaufweist.Benennen Sie keine VPC-ALBs um, die automatisch für
LoadBalancer-Services erstellt wurden. Wenn Sie eine VPC-Lastausgleichsfunktion für Anwendungen umbenennen, erstellt Red Hat OpenShift on IBM Cloud automatisch eine weitere VPC-Lastausgleichsfunktion für Anwendungen für denLoadBalancer-Service.ibmcloud is load-balancersIn der folgenden CLI-Beispielausgabe wird die erstellte VPC-ALB mit dem Namen
kube-bsaucubd07dhl66e4tgg-1f4f408ce6d2485499bcbdec0fa2d306für den Kubernetes-Service vom TypLoadBalancerangezeigt: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 -
Wenn Sie einen öffentlichen
LoadBalancer-Service erstellt haben, rufen Sie den Hostnamen des Kubernetes-Service vom TypLoadBalancer(siehe Schritt 4), der von der VPC-ALB zugeordnet wird, mit Curl auf. Beispiel:curl 06496f64-us-south.lb.appdomain.cloud:8080Beispielausgabe
Hello world from hello-world-deployment-5fd7787c79-sl9hn! Your app is up and running in a cluster!Wenn Sie einen privaten
LoadBalancer-Service erstellt haben, müssen Sie mit Ihrem privaten VPC-Netz verbunden sein,, um den Hostnamen mit dem Curl-Befehl aufrufen zu können.
Löschen Sie nicht die Teilnetze, die Sie Ihrem Cluster bei der Clustererstellung oder beim Hinzufügen von Workerknoten in einer Zone zugeordnet haben. Wenn Sie ein von Ihrem Cluster verwendetes VPC-Teilnetz löschen, können bei allen Lastausgleichsfunktionen, die IP-Adressen aus dem Teilnetz verwenden, Probleme auftreten, und Sie können möglicherweise keine neuen Lastausgleichsfunktionen erstellen.
VPC-ALBs und NLBs, die nicht an Kubernetes oder OpenShift-Cluster gebunden sind, können direkt über ibmcloud is-Befehle oder im Abschnitt VPC-Infrastruktur in der Konsole aktualisiert werden. Ändern Sie beispielsweise den Port eines Front-End-Listeners oder das Zeitlimit für die Statusprüfung. Bei VPC-Load-Balancer, die mit Kubernetes- oder OpenShift-Clustern verknüpft sind, müssen Änderungen jedoch über Annotationen in der Ingress-Konfiguration vorgenommen werden. Der IBM Cloud-Anbieter führt regelmäßig eine Neusynchronisierung mit allen zugehörigen VPC-ALBs und NLBs durch, um sicherzustellen, dass der laufende Load Balancer der erwarteten Konfiguration des Ingress entspricht. Wenn Sie also Änderungen an einer solchen Lastausgleichsfunktion direkt über VPC vornehmen, anstatt Ingress-Annotationen zu verwenden, werden diese Änderungen zurückgesetzt.
DNS-Datensatz und TLS-Zertifikat registrieren
Application Load Balancer for VPC (VPC ALB) stellt einen HTTP-Standardhostnamen im Format 1234abcd-<region>.lb.appdomain.cloud bereit, über den Sie auf Ihre App zugreifen können. Wenn Sie jedoch ein TLS-Zertifikat für Ihre
App-Domäne wünschen, um HTTPS zu unterstützen, können Sie für öffentliche wie auch für private VPC-ALBs eine von IBM bereitgestellte Unterdomäne erstellen oder eine eigene angepasste Domäne verwenden.
Nachdem Sie eine DNS-Unterdomäne für einen VPC-ALB-Hostnamen erstellt haben, können Sie keine nlb-dns health-monitor-Befehle zum Erstellen einer angepassten Statusprüfung verwenden. Stattdessen wird die VPC-Standardstatusprüfung
für Lastausgleichsfunktionen verwendet, die für den Standard-Hostnamen der VPC-ALB bereitgestellt wird. Weitere Informationen finden Sie in der VPC-Dokumentation.
Vorbereitende Schritte
- Richten Sie eine VPC-ALB ein. Stellen Sie sicher, dass Sie in Ihrem Kubernetes-Service vom Typ
LoadBalancer, von dem die VPC-ALB konfiguriert wird, einen HTTPS-Port definieren. - Um das TLS-Zertifikat für den Zugriff über HTTPS auf Ihre App verwenden zu können, muss Ihre Anwendung in der Lage sein, TLS-Verbindungen zu beenden.
Um einen VPC-ALB-Hostnamen mit einer DNS-Unterdomäne zu registrieren:
-
Rufen Sie den Hostnamen für Ihre VPC-ALB ab, indem Sie den Befehl
get svcausführen. Suchen Sie in der Ausgabe in der Spalte EXTERNAL-IP nach dem Hostnamen. Zum Beispiel1234abcd-us-south.lb.appdomain.cloud.oc get svc -o wideBeispielausgabe
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 -
Erstellen Sie eine angepasste oder von IBM bereitgestellte DNS-Unterdomäne für den Hostnamen der Lastausgleichsfunktion.
-
Benutzerdefinierte Domain: Geben Sie Ihre eigene benutzerdefinierte Domain an und weisen Sie ihr einen Alias zu, indem Sie die externe IP-Adresse des Load Balancers im Format eines
1234abcd-us-south.lb.appdomain.cloudCanonical Name-Eintrags (CNAME) angeben.- Registrieren Sie in Zusammenarbeit mit Ihrem DNS-Provider (DNS = Domain Name Service) oder mit dem IBM Cloud-DNS eine angepasste Domäne.
- Definieren Sie einen Alias für Ihre benutzerdefinierte Domain, indem Sie die externe IP-Adresse des Load Balancers als Canonical Name-Eintrag (CNAME) angeben. Im folgenden Beispiel ist die Lastausgleichsfunktion mit der externen
IP
1234abcd-us-south.lb.appdomain.cloudunterwww.your-custom-domain.comerreichbar.
- Host/Service
- Das Präfix, unter dem Sie Ihre App aufrufen möchten, z. B.
www. - Ressourcentyp
- Wählen Sie
CNAMEaus. - TTL
- Wählen Sie eine Lebensdauer aus.
- Wert/Ziel
- Die externe IP der LoadBalancer, die Sie zuvor abgerufen haben Beispiel:
1234abcd-us-south.lb.appdomain.cloud.. Wenn Sie IBM Cloud DNS verwenden, stellen Sie sicher, dass Sie einen abschließenden Punkt eingeben.
-
Von IBMbereitgestellte Unterdomäne: Mit
nlb-dns-Befehlen können Sie eine Unterdomäne mit einem TLS-Zertifikat für den Hostnamen der VPC-ALB generieren. IBM Cloud übernimmt die Generierung und Verwaltung des TLS-Platzhalterzertifikats für die Unterdomäne für Sie.- Erstellen Sie eine DNS-Unterdomäne und ein TLS-Zertifikat.
ibmcloud oc nlb-dns create vpc-gen2 --cluster <cluster_name_or_id> --lb-host <vpc_lb_hostname> --type (public|private) - Überprüfen Sie, ob die Unterdomäne erstellt wurde. Weitere Informationen finden Sie unter Informationen zum Unterdomänenformat.
Beispielausgabeibmcloud 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>
- Erstellen Sie eine DNS-Unterdomäne und ein TLS-Zertifikat.
-
-
Wenn Sie eine Subdomain für einen öffentlichen VPC-ALB erstellt haben, öffnen Sie einen Webbrowser und geben Sie URL ein, um über die Subdomain auf Ihre App zuzugreifen, wie im Beispiel gezeigt
www.your-custom-domain.com. Wenn Sie eine Unterdomäne für eine private VPC-ALB erstellt haben, müssen Sie mit Ihrem privaten VPC-Netz verbunden sein, um den Zugriff auf Ihre Unterdomäne testen zu können.
Wenn Sie das TLS-Zertifikat für den Zugriff auf Ihre App über HTTPS verwenden möchten, stellen Sie sicher, dass in Ihrem Kubernetes Service vom Typ LoadBalancer ein HTTPS-Port definiert ist.
Sie können überprüfen, ob Anforderungen ordnungsgemäß über den HTTPS-Port weitergeleitet werden, indem Sie curl -v --insecure https://<domain> ausführen. Ein Verbindungsfehler weist darauf hin, dass kein HTTPS-Port für
den Service geöffnet ist. Stellen Sie außerdem sicher, dass TLS-Verbindungen von Ihrer Anwendung beendet werden können. Sie können überprüfen, ob Ihre App TLS ordnungsgemäß beendet, indem Sie curl -v https://<domain> ausführen.
Ein Zertifikatsfehler gibt an, dass Ihre App TLS-Verbindungen nicht korrekt beendet.
Registrieren eines privaten DNS-Eintrags für ein privates VPC ALB
In der Version4.15 oder später können Sie die folgenden optionalen Annotationen verwenden, um einen eigenen DNS zu verknüpfen instance welches einen benutzerdefinierten DNS bereitstellt zone mit einem privaten VPC
ALB. Hierzu müssen die beiden optionalen Annotationen gesetzt werden. Wenn sie nicht angegeben sind, dann DNS A Datensätze für diesen Load Balancer hostname Eigenschaft wird zur öffentlichen DNS-Zone hinzugefügt
lb.appdomain.cloud.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-private-dns-instance-crn: "private-dns-crn" :
Die DNS-Einträge, die diesem Load Balancer zugeordnet werden instance sollen. Die angegebene Instanz kann sich je nach IAM-Richtlinien in einer anderen Region oder einem anderen Konto befinden. Mögliche Werte: 9 ≤ Länge
≤ 512
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-private-dns-zone-id: "dns-zone-id" :
Die DNS-Einträge, die diesem Load Balancer zugeordnet werden zone sollen. Die angegebene Zone kann sich je nach IAM-Richtlinien in einer anderen Region oder einem anderen Konto befinden. Mögliche Werte: 1 ≤ Länge ≤ 128,
der Wert muss dem regulären Ausdruck [a-z0-9-]^*[a-z0-9]$ entsprechen
Bevor Sie diese Funktion nutzen können, müssen Sie Folgendes als Voraussetzung tun:
- Erstellen Sie die DNS-Zone, die an einen Load Balancer gebunden werden kann
- Aktivieren Sie die Service-to-Service-Autorisierung zwischen VPC LBs undDNS Services
- Fügen Sie das VPC des Clusters zu den zulässigen Netzwerken der Zone hinzu
Ausführliche Informationen finden Sie in den Dokumenten Integration eines Anwendungs-Load-Balancers mit IBM Cloud DNS Services und Hinzufügen einer VPC als zugelassenes Netzwerk zur DNS-Zone.
Beispiel:
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
...
Persistente VPC-Lastausgleichsfunktionen
Standardmäßig werden VPC-Lastausgleichsfunktionen gelöscht, wenn der Cluster, dem sie zugeordnet sind, gelöscht wird. Wenn Sie jedoch eine LoadBalancer-Servicedefinition erstellen, können Sie Ihre Lastausgleichsfunktion persistent
machen, sodass sie auch nach dem Löschen Ihres Clusters verfügbar bleibt. Eine persistente VPC-Lastausgleichsfunktion kann auf einen anderen Cluster angewendet werden, nachdem der vorherige Cluster gelöscht wurde.
VPC-Lastausgleichsfunktionsnamen werden standardmäßig als kube-<cluster_ID>-<kubernetes_lb_service_UID> formatiert. Wenn ein Cluster gelöscht wird, gibt dieses Namensformat die zugeordneten Lastausgleichsfunktionen an,
die dann ebenfalls gelöscht werden. Um sicherzustellen, dass Ihre Lastausgleichsfunktion nicht gelöscht wird, wenn Sie einen Cluster löschen, schließen Sie die Annotation service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name in Ihre LoadBalancer-Servicedefinition ein, um Ihrer Lastausgleichsfunktion einen eindeutigen Namen zu geben. Der Name der Lastausgleichsfunktion muss innerhalb Ihrer VPC eindeutig sein und darf nur alphanumerische Zeichen in
Kleinschreibung und Bindestriche (-) enthalten. Die Annotation kann auf alle VPC-Lastausgleichsfunktionstypen angewendet werden.
Sie sind für das Löschen persistenter VPC-Lastausgleichsfunktionen verantwortlich, wenn sie nicht länger benötigt werden. Um eine persistente VPC-Lastausgleichsfunktion zu löschen, löschen Sie die Servicedefinition Kubernetes LoadBalancer,
der die VPC-Lastausgleichsfunktion zugeordnet ist.
VPC-Lastausgleichsfunktion von einem Cluster in einen anderen verschieben
Persistente VPC-Lastausgleichsfunktionen können von einem VPC-Cluster abgehängt und dann einem anderen zugeordnet werden. Der neue Cluster muss sich innerhalb derselben VPC wie der ursprüngliche Cluster befinden.
VPC-Lastausgleichsfunktion von einem Cluster abhängen
VPC-Lastverteiler sind mit der LoadBalancer Dienstdefinition Kubernetes verknüpft, mit der sie erstellt wurden. Um eine persistente VPC-Lastausgleichsfunktion von einem Cluster abzuhängen, müssen Sie die Verbindung zum LoadBalancer-Service
unterbrechen, indem Sie die VPC-Lastausgleichsfunktion umbenennen oder die Annotation service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name aus der ursprünglichen LoadBalancer-Servicedefinition entfernen. Sie können auch eine persistente VPC-Lastausgleichsfunktion von einem Cluster abhängen, indem Sie den Cluster löschen.
Wenn Sie die Annotation entfernen, wird der ursprüngliche LoadBalancer-Service zurückgesetzt und eine nicht persistente VPC-Lastausgleichsfunktion im ursprünglichen Cluster erstellt. Diese nicht persistente VPC-Lastausgleichsfunktion
folgt der Namenskonvention kube-<cluster_ID>-<kubernetes_lb_service_UID>.
VPC-Lastausgleichsfunktion einem Cluster zuordnen
Nachdem ein persistenter VPC-Load-Balancer von einem Cluster getrennt wurde, können Sie ihn an einen anderen Cluster anbinden, indem Sie eine neue KubernetesLoadBalancer-Dienstdefinition erstellen, die auf den VPC-Load-Balancer
verweist.
Wenn Sie einen neuen LoadBalancer-Service im neuen Cluster erstellen, können Sie mithilfe der Annotation service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name den Namen der VPC-Lastausgleichsfunktion
angeben, die Sie zuordnen wollen.
Wenn Sie den Service LoadBalancer erstellen, müssen der Typ der VPC-Lastausgleichsfunktion (ALB, NLB) und der IP-Typ (öffentlich, privat) den Spezifikationen im LoadBalancer-Service entsprechen. Beispiel: Ein vorhandener LoadBalancer-Service
auf dem neuen Cluster, der einen NLB-Typ angibt, kann nicht verwendet werden, um dem Cluster eine VPC-ALB zuzuordnen. Die Annotationen, die den Lastausgleichsfunktionstyp und den IP-Typ angeben, sind service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features bzw. service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type.
Die im LoadBalancer-Service angegebenen Port-und Knotenports müssen nicht mit denen übereinstimmen, mit denen die VPC-Lastausgleichsfunktion erstellt wurde. Die VPC-Lastausgleichsfunktion rekonfiguriert mit den Portdefinitionen
des LoadBalancer-Service, dem sie im neuen Cluster zugeordnet ist.
Statusprüfungen für Lastausgleichsfunktionen
VPC-Lastausgleichsfunktionen werden automatisch mit Statusprüfungen konfiguriert, die Sie mit der Annotation externalTrafficPolicy konfigurieren. Sie können zusätzliche Annotationen verwenden, um Statusprüfungen anzupassen für Ihre Lastausgleichsfunktionen.
- Wenn
externalTrafficPolicyaufClustergesetzt wurde, werden TCP-Statusprüfungen angewendet. Wenn Sie eine UDP-Lastausgleichsfunktion konfigurieren, müssen Sie zusätzliche Portangaben machen. - Wenn
externalTrafficPolicyaufLocalgesetzt wurde, werden HTTP-Statusprüfungen angewendet. Eingehender Datenverkehr wird nur an den Anwendungspod zugestellt, der sich auf diesem bestimmten Knoten befindet. Wenn auf diesem Knoten kein Anwendungspod vorhanden ist, wird der eingehende Datenverkehr gelöscht.
Die Einstellung externalTrafficPolicy: Local kann dazu führen, dass Statusprüfungen auf Ihren Workerknoten der Lastausgleichsfunktion fehlschlagen. In der Regel ist dieses Ergebnis das erwartete Verhalten und weist nicht unbedingt
auf ein Problem hin, da der Datenverkehr absichtlich gelöscht wird, wenn die Lastausgleichsfunktion versucht, eine Verbindung zu einem Knoten herzustellen, der keinen Anwendungspod hat. Weitere Informationen finden Sie unter Warum schlagen Statusprüfungen der VPC-Lastausgleichsfunktion auf meinen Workerknoten fehl?.
Statusprüfungen für VPC-Lastausgleichsfunktionen anpassen
Für mehr Kontrolle über die Statusprüfungen Ihrer VPC-Lastausgleichsfunktion können Sie optionale Annotationen verwenden, um Ihre Statusprüfungen mit erweiterten Konfigurationen für Testintervalle, Zeitlimits und Wiederholungen anzupassen. Sie können diese Anpassungen jederzeit ändern oder entfernen.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-protocol- Optional: Diese Anmerkung legt das Statusprüfungsprotokoll für die VPC-Lastausgleichsressource fest, die dem Kubernetes zugeordnet ist. Normalerweise wird das Protokoll der VPC-LB-Statusprüfung durch den Wert der Einstellung
externalTrafficPolicyin der Spezifikation des Kubernetes-Service für die Lastausgleichsfunktion bestimmt. Diese Annotation überschreibt diese Logik. Diese Annotation ändert nicht das Verhalten von Kubernetesund insbesondere von 'kube-proxy' in Bezug auf die verschiedenen Einstellungen vonexternalTrafficPolicy. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-port- Optional. Der Port TCP, der für die Zustandsprüfungen verwendet wird. Diese Annotation gilt nur, wenn auch
ibm-load-balancer-cloud-provider-vpc-health-check-protocolangegeben ist.- Liegt der angegebene TCP-Port außerhalb des Portbereichs für Kubernetes-Knoten (30.000–32.767), muss die auf die Cluster-Worker-Knoten angewendete VPC-Sicherheitsgruppe angepasst werden, um eingehenden Datenverkehr auf diesem Port zuzulassen.
- Wird diese Anmerkung auf einen Kubernetes-Load-Balancer-Dienst angewendet, der mit einem VPC-ALB verknüpft ist, müssen die ausgehenden Regeln der dem VPC-ALB zugewiesenen Sicherheitsgruppe geändert werden, um ausgehenden Datenverkehr zum angegebenen TCP-Port zuzulassen.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-path- Optional. Der Health-Check- URL spfad für HTTP und HTTPS-Health-Checks. Diese Annotation gilt nur, wenn
ibm-load-balancer-cloud-provider-vpc-health-check-protocolaufhttpoderhttpsgesetzt ist.- Der Pfad URL muss im Format eines Origin-Form-Anfrageziels vorliegen.
- Wenn diese Annotation nicht angegeben ist und die Annotation
ibm-load-balancer-cloud-provider-vpc-health-check-protocolaufhttpoderhttpsgesetzt ist, wird der Standardwert/angewendet.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-delay- Optional. Die Anzahl der Sekunden, die zwischen Statusprüfungsversuchen gewartet werden soll. Standardmäßig ist dieser Wert auf
5gesetzt und hat ein Minimum von2und ein Maximum von60. Dieser Wert muss größer als der Wertibm-load-balancer-cloud-provider-vpc-health-check-timeoutsein, der standardmäßig auf2gesetzt ist. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-timeout- Optional. Die Anzahl der Sekunden, die auf eine Antwort auf eine Statusprüfung gewartet wird. Standardmäßig ist dieser Wert auf
2gesetzt und hat ein Minimum von1und ein Maximum von59. Dieser Wert muss kleiner als der Wertibm-load-balancer-cloud-provider-vpc-health-check-delaysein, der standardmäßig auf5gesetzt ist. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-retries- Die maximale Anzahl der Wiederholungen der Statusprüfung für die VPC-Lastausgleichsfunktion. Standardmäßig ist dieser Wert auf
2gesetzt und hat ein Minimum von1und ein Maximum von10.
TCP-Statusprüfungen für UDP-Lastausgleichsfunktionen aktivieren
Da es keine UDP-Statusprüfungen gibt, muss für UDP-Lastausgleichsfunktionen, die TCP-Statusprüfungen verwenden, ein zusätzlicher TCP-Port mit der Annotation service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-udp angegeben werden.
Sie können den TCP-Knotenport für eine andere Lastausgleichsfunktion oder einen anderen Knotenport angeben, die bzw. der in Ihrem Cluster ausgeführt wird. Wenn sich der Knotenport jedoch außerhalb des 30000-32767-Bereichs befindet,
müssen Sie Sicherheitsgruppe des VPC-Clusters kube-<cluster-ID> ändern, um eingehenden Datenverkehr bis zum angegebenen Port zuzulassen.
Beachten Sie: Wenn der angegebene Portwert für einen Dienst gilt, der unerwartet ausfällt oder dessen Portwert neu konfiguriert wird, funktionieren die TCP-Zustandsprüfungen nicht mehr, bis der Dienst wieder verfügbar ist oder Sie die Anmerkung
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-udp mit einem neuen Portwert für TCP neu konfigurieren. Um dies zu vermeiden, können Sie den kubelet Port 10250 angeben, bei dem
es sich um einen statischen Portwert handelt, bei dem keine Serviceunterbrechungen auftreten. Sie müssen jedoch Sicherheitsgruppe des VPC-Clusters ändern kube-<cluster-ID> angeben, um eingehenden Datenverkehr vom kubelet-Port zu akzeptieren.
Möchten Sie die Komplexität vermeiden, zusätzliche TCP-Ports für Zustandsprüfungen in einem UDP-Load-Balancer angeben zu müssen? Setzen Sie externalTrafficPolicy auf Local, um HTTP-Statusprüfungen zu verwenden, die
keine zusätzlichen Portspezifikationen erfordern.
Teilnetze oder Zonen der Lastausgleichsfunktion ändern
Nachdem Sie eine VPC-NLB erstellt haben, können Sie das empfangsbereite Teilnetz, mit dem es erstellt wurde, nicht neu konfigurieren. Wenn Sie das Listening-Subnetz eines bestehenden VPC-NLB ändern möchten, müssen Sie den entsprechenden KubernetesLoadBalancer-Dienst
löschen, aktualisieren und erneut anwenden.
-
Listen Sie Ihre Kubernetes-Services auf und suchen Sie den Namen des
LoadBalancer-Service, den Sie ändern möchten.oc get servicesBeispielausgabe
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 -
Suchen Sie die VPC-Lastausgleichsfunktion, die dem Kubernetes-
LoadBalancer-Service entspricht.Namen von VPC-Lastausgleichsfunktionen haben das Format
kube-<cluster_ID>-<kubernetes_lb_service_UID>. Führen Sieibmcloud ks cluster get --cluster <cluster_name>aus, um Ihre Cluster-ID anzuzeigen. Um die UID des Kubernetes-LoadBalancer-Service anzuzeigen, führen Sieoc get svc <load-balancer-name> -o yamlaus und suchen Sie in der Ausgabe nach dem Feld metadata.uid. Die Bindestriche (-) werden aus derLoadBalancerService-UID Kubernetes im Namen des VPC-Lastenausgleichs entfernt.ibmcloud is load-balancersBeispielausgabe
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 -
Rufen Sie die Kubernetes-
LoadBalancer-Servicedefinition ab und speichern Sie die Ausgabe als YAML-Datei mit dem Namenmy-lb.yaml.oc describe service my-load-balancer -o yaml -
Löschen Sie den Kubernetes-
LoadBalancer-Service. Dadurch wird auch die entsprechende VPC-Lastausgleichsfunktion gelöscht.oc delete service my-load-balancer -
Aktualisieren Sie die Kubernetes-
LoadBalancer-Servicedefinitionsdatei mit den Teilnetz-oder Zonenänderungen, die Sie implementieren möchten. Ändern Sie nicht den Namen desLoadBalancer-Service. Details zum Angeben von Teilnetzen oder Zonen für Netzlastausgleichsfunktionen finden Sie unter Network Load Balancer for VPC einrichten. -
Wenden Sie die neue Definitionsdatei
LoadBalanceran.oc apply -f my-lb.yaml -
Überprüfen Sie, ob der Kubernetes-
LoadBalancer-Service in Ihrem Cluster erfolgreich neu erstellt wurde. Bei der Erstellung des Dienstes wird das Feld LoadBalancer-Ingress mit einer externen IP-Adresse für den NLB ausgefüllt.oc describe service my-load-balancerBeispielausgabe
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. -
Überprüfen Sie, ob die VPC-Lastausgleichsfunktion erneut erstellt wurde und ob das Teilnetz oder die Zone aktualisiert wurde. Beachten Sie, dass die Bereitstellung des VPC-Load-Balancers einige Minuten dauert und möglicherweise ein bestimmter Status
create_pendingangezeigt wird, bis die Bereitstellung vollständig abgeschlossen ist.ibmcloud is load-balancersBeispielausgabe
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
Einschränkungen
Machen Sie sich mit den folgenden Standardeinstellungen und Einschränkungen vertraut.
- Prüfen Sie die bekannten Einschränkungen für VPC-ALBs und die bekannten Einschränkungen für VPC-NLBs.
- Private VPC-ALBs akzeptieren nicht den gesamten Datenverkehr, sondern nur RFC 1918-Datenverkehr.
- Private VPC-NLBs müssen in einem dedizierten VPC-Teilnetz erstellt werden, das in derselben VPC und an derselben Position wie Ihr Cluster vorhanden sein muss, aber das Teilnetz kann nicht an Ihren Cluster oder an Workerknoten angehängt werden.
- Red Hat OpenShift: Obwohl das Kubernetes SCTP-Protokoll allgemein im Release der Kubernetes-Community verfügbar ist, wird die Erstellung von Lastausgleichsfunktionen, die dieses Protokoll verwenden, in IBM Cloud Kubernetes Service-Clustern nicht unterstützt.
- Für jeden Kubernetes Service vom Typ
LoadBalancer, den Sie erstellen, wird genau eine VPC-Lastausgleichsfunktion erstellt und diese leitet Anforderungen nur an diesen Kubernetes Service vom TypLoadBalancerweiter. In allen VPC-Clustern in Ihrer VPC können maximal 50 VPC-Lastausgleichsfunktionen erstellt werden. Weitere Informationen finden Sie in der Dokumentation zu VPC-Quoten. - Die VPC-Lastausgleichsfunktion kann Anforderungen an eine begrenzte Anzahl von Workerknoten weiterleiten. Die maximale Anzahl Knoten, an die Sie Anforderungen weiterleiten können, hängt davon ab, wie Sie die Annotation
externalTrafficPolicyfestlegen.- Wenn Sie
externalTrafficPolicy: Clusterin Ihrer Konfiguration der Lastausgleichsfunktion festlegen:- Die VPC-Lastausgleichsfunktion wird zu den ersten 8 Workerknoten weitergeleitet, die in jeder Zone erkannt werden. Bei einem Cluster mit Arbeitsknoten in drei Zonen führt dies dazu, dass der Load Balancer insgesamt 24 Arbeitsknoten
ansteuert. Bei einem Einzelzonencluster leitet die Lastausgleichsfunktion an insgesamt 8 Workerknoten weiter. Sie können die Anzahl der Arbeitsknoten pro Zone, zu denen der Load Balancer leitet, mit
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-member-quotaändern, aber die Gesamtzahl über alle Zonen hinweg darf 50 nicht überschreiten. Wenn der Cluster weniger als 50 Arbeitsknoten in allen Zonen hat, geben Sie 0 an, um zu allen Arbeitsknoten in einer Zone zu leiten. Diekube-proxykonfiguriert IP-Tabellen, um den eingehenden Datenverkehr vom Arbeitsknoten an den Anwendungs-Pod auf dem jeweiligen Knoten weiterzuleiten, auf dem sich der Anwendungs-Pod befindet.
- Die VPC-Lastausgleichsfunktion wird zu den ersten 8 Workerknoten weitergeleitet, die in jeder Zone erkannt werden. Bei einem Cluster mit Arbeitsknoten in drei Zonen führt dies dazu, dass der Load Balancer insgesamt 24 Arbeitsknoten
ansteuert. Bei einem Einzelzonencluster leitet die Lastausgleichsfunktion an insgesamt 8 Workerknoten weiter. Sie können die Anzahl der Arbeitsknoten pro Zone, zu denen der Load Balancer leitet, mit
- Wenn Sie
externalTrafficPolicy: Localin Ihrer Lastausgleichskonfiguration festlegen, wird die VPC-Lastausgleichsfunktion nur erstellt, wenn sich 50 oder weniger Workerknoten im Cluster befinden. Dieser Grenzwert wird durch VPC-Quotenbegrenzungen von 50 Poolmitgliedern pro VPC-Lastausgleichsfunktionspool festgelegt. Um diese Einschränkung zu vermeiden, verwenden Sie die Annotationservice.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector, um zu begrenzen, welche Workerknoten sich im Pool der Lastausgleichsfunktion befinden. Sie können diese Annotation beispielsweise verwenden, um eingehenden Datenverkehr an einen bestimmten Worker-Pool zu erzwingen. Wenn Sie diese Annotation verwenden, um den Datenverkehr zu einem bestimmten Worker-Pool zu erzwingen, müssen Sie außerdem sicherstellen, dass der Anwendungspod auch in demselben Worker-Pool ausgeführt wird.
- Wenn Sie
- Wenn Sie die YAML-Konfigurationsdatei für einen Kubernetes Service vom Typ
LoadBalancerdefinieren, werden die folgenden Annotationen und Einstellungen nicht unterstützt: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- Nur VPC-NLBs:
service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "proxy-protocol" - Nur VPC-ALBs: Die Einstellung
externalTrafficPolicy: Localwird zwar unterstützt, jedoch wird bei dieser Einstellung die Quellen-IP-Adresse der Anforderung nicht beibehalten.
- Wenn Sie einen VPC-Cluster löschen, werden auch alle nicht persistenten VPC-Lastausgleichsfunktionen, die im
kube-<cluster_ID>-<kubernetes_lb_service_UID>-Format benannt sind und automatisch von Red Hat OpenShift on IBM Cloud für die KubernetesLoadBalancer-Services in dem Cluster erstellt werden, automatisch gelöscht. Allerdings werden persistente Lastausgleichsfunktionen mit eindeutigen Namen und VPC-Lastausgleichsfunktionen, die Sie manuell in Ihrer VPC erstellt haben, nicht gelöscht. - Sie können bis zu 128 Unterdomänen für Hostnamen von VPC-Lastausgleichsfunktionen registrieren. Diese Begrenzung kann auf Anforderung aufgehoben werden, indem ein Supportfall geöffnet wird.
- Subdomains, die Sie für VPC-Load-Balancer registrieren, dürfen maximal 130 Zeichen lang sein.
- VPC-ALBs sind in denselben VPC-Teilnetzen empfangsbereit, in denen die Cluster-Workerknoten zugeordnet sind, es sei denn, der Lastausgleichsservice Kubernetes wird mit den Annotationen
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnetsoderservice.kubernetes.io/ibm-load-balancer-cloud-provider-zoneerstellt, die den Datenverkehr auf bestimmte Knoten beschränken.- Die Teilnetze und Zonen der VPC-ALB können nach der Erstellung der ALB aktualisiert oder geändert werden. Wenn Sie dem Cluster weitere Zonen hinzufügen oder den Kubernetes-Service für die Lastausgleichsfunktion mit den Annotationen
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnetsoderservice.kubernetes.io/ibm-load-balancer-cloud-provider-zoneaktualisieren, wird die VPC-ALB aktualisiert, sodass sie für die neuen Teilnetze empfangsbereit ist.
- Die Teilnetze und Zonen der VPC-ALB können nach der Erstellung der ALB aktualisiert oder geändert werden. Wenn Sie dem Cluster weitere Zonen hinzufügen oder den Kubernetes-Service für die Lastausgleichsfunktion mit den Annotationen
- VPC-NLBs sind nur in einem einzelnen VPC-Teilnetz in einer einzelnen Zone empfangsbereit. Sie können nicht so konfiguriert werden, dass sie in mehreren VPC-Teilnetzen oder in mehreren Zonen empfangsbereit sind. Sie können das einzelne Teilnetz
angeben, an dem eine NLB mit den Annotationen
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnetsoderservice.kubernetes.io/ibm-load-balancer-cloud-provider-zoneempfangsbereit sein soll.- VPC-NLBs leiten eingehenden Datenverkehr an alle Workerknoten im Cluster weiter, es sei denn, Sie beschränken den eingehenden Datenverkehr auf bestimmte Workerknoten mit
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selectoroderservice.kubernetes.io/ibm-load-balancer-cloud-provider-zone annotations. Zur Begrenzung des Datenverkehrs auf eine bestimmte Zone können Sie diese Annotationen verwenden, um Workerknoten in dieser Zone anzugeben.
- VPC-NLBs leiten eingehenden Datenverkehr an alle Workerknoten im Cluster weiter, es sei denn, Sie beschränken den eingehenden Datenverkehr auf bestimmte Workerknoten mit
- Die Inaktivierung der NodePort-Zuordnung der Lastausgleichsfunktion wird für VPC-Lastausgleichsfunktionen nicht unterstützt.
- VPC-NLBs können sowohl mit UDP als auch mit TCP auf demselben VPC-LB eingerichtet werden, allerdings müssen die Listening-Ports unterschiedlich sein.