Verwaltung von VPC-Lastverteilern
Nehmen Sie Änderungen an Ihren vorhandenen VPC-Loadbalancern vor.
Benennen Sie keine VPC NLBs oder ALBs um. Das Umbenennen eines VPC-Load-Balancers führt zu einem Fehler beim Dienst LoadBalancer Kubernetes, was Ihre Workloads beeinträchtigen könnte.
Dauerhafte VPC-Lastverteiler
Standardmäßig werden VPC-Loadbalancer gelöscht, wenn der Cluster, dem sie zugeordnet sind, gelöscht wird. Wenn Sie jedoch eine LoadBalancer-Dienstdefinition erstellen, können Sie Ihren Load Balancer persistent machen, damit er auch
nach dem Löschen Ihres Clusters verfügbar bleibt. Ein persistenter VPC-Loadbalancer kann auf einen anderen Cluster angewendet werden, nachdem der vorherige Cluster gelöscht wurde.
VPC-Load-Balancer-Namen werden standardmäßig als kube-<cluster_ID>-<kubernetes_lb_service_UID> formatiert. Wenn ein Cluster gelöscht wird, gibt dieses Namensformat die zugehörigen Load Balancer an, die dann ebenfalls
gelöscht werden. Um sicherzustellen, dass Ihr Load Balancer nicht gelöscht wird, wenn Sie einen Cluster löschen, fügen Sie die service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name-Anmerkung in Ihre LoadBalancer-Dienstdefinition
ein, um Ihrem Load Balancer einen eindeutigen Namen zu geben. Der Load Balancer-Name muss innerhalb Ihrer VPC eindeutig sein und darf nur alphanumerische Kleinbuchstaben und Bindestriche enthalten (-). Die Anmerkung kann auf alle
VPC-Load-Balancer-Typen angewendet werden.
Sie sind dafür verantwortlich, persistente VPC-Loadbalancer zu löschen, wenn sie nicht mehr benötigt werden. Um einen dauerhaften VPC-Load-Balancer zu löschen, löschen Sie die Kubernetes LoadBalancer-Dienstdefinition, mit der der
VPC-Load-Balancer verbunden ist.
Verschieben eines VPC-Loadbalancers von einem Cluster zu einem anderen
Persistente VPC-Load-Balancer können von einem VPC-Cluster abgetrennt und dann einem anderen hinzugefügt werden. Der neue Cluster muss sich in der gleichen VPC befinden wie der ursprüngliche Cluster.
Lösen eines VPC-Lastverteilers von einem Cluster
VPC-Loadbalancer sind mit der Kubernetes LoadBalancer-Dienstdefinition verknüpft, mit der sie erstellt wurden. Um einen persistenten VPC-Loadbalancer von einem Cluster zu trennen, müssen Sie die Verbindung mit dem LoadBalancer-Dienst
unterbrechen. Dadurch wird der LoadBalancer-Dienst unbrauchbar und kann sicher gelöscht werden. Der VPC-Loadbalancer kann dann einem anderen Cluster zugeordnet werden.
Um die Verbindung zwischen dem VPC-Loadbalancer und dem LoadBalancer-Dienst zu unterbrechen, können Sie entweder den VPC-Loadbalancer umbenennen oder die service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name-Anmerkung aus der ursprünglichen LoadBalancer-Dienstdefinition entfernen. Beachten Sie, dass dies der einzige Fall ist, in dem
Sie einen VPC-Loadbalancer umbenennen sollten, da dies einen Fehler für die Kubernetes-Ressource erzeugt. Wenn Ihr Ziel jedoch darin besteht, den VPC-Load Balancer auf einem anderen Cluster zu verwenden, wird dieser Fehler Ihre Arbeitslast
nicht beeinträchtigen. Benennen Sie den VPC-Loadbalancer nicht um, wenn Sie den Loadbalancer auf demselben Cluster behalten möchten.
Anhängen eines VPC-Loadbalancers an einen Cluster
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-Dienst auf dem neuen Cluster erstellen, können Sie die service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name-Anmerkung verwenden, um den Namen des VPC-Load-Balancers
anzugeben, den Sie hinzufügen möchten.
Wenn Sie den LoadBalancer-Dienst erstellen, müssen der VPC-Loadbalancer-Typ (ALB, NLB) und der IP-Typ (öffentlich, privat) mit den Angaben im LoadBalancer-Dienst übereinstimmen. So kann beispielsweise ein vorhandener LoadBalancer-Dienst
auf dem neuen Cluster, der einen NLB-Typ angibt, nicht verwendet werden, um einen VPC ALB an den Cluster anzuhängen. Die Anmerkungen, die den Load Balancer-Typ und den IP-Typ angeben, sind service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features und service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type.
Die im LoadBalancer-Dienst angegebenen Ports und Knotenports müssen nicht mit denen übereinstimmen, mit denen der VPC-Loadbalancer erstellt wurde. Der VPC-Load-Balancer konfiguriert sich mit den Port-Definitionen des LoadBalancer-Dienstes
neu, mit dem er im neuen Cluster verbunden ist.
Statusprüfungen für Lastausgleichsfunktionen
VPC-Load-Balancer werden automatisch mit Zustandsprüfungen konfiguriert, die Sie mit der externalTrafficPolicy-Anmerkung konfigurieren. Sie können zusätzliche Anmerkungen verwenden, um Zustandsprüfungen auf Ihren Load Balancern anzupassen.
- 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 Anwendungs-Pod weitergeleitet, der sich auf diesem speziellen Knoten befindet. Wenn es auf dem betreffenden Knoten keinen Anwendungs-Pod gibt, wird der eingehende Verkehr verworfen.
Die Einstellung externalTrafficPolicy: Local kann dazu führen, dass die Gesundheitsprüfungen auf den Worker Nodes des Load Balancer fehlschlagen. Normalerweise ist dieses Ergebnis das erwartete Verhalten und deutet nicht unbedingt
auf ein Problem hin, da der Datenverkehr absichtlich unterbrochen wird, wenn der Load Balancer versucht, eine Verbindung zu einem Knoten herzustellen, der nicht über einen Anwendungs-Pod verfügt. Weitere Informationen finden Sie unter Warum schlagen die Zustandsprüfungen des VPC-Lastverteilers auf meinen Arbeitsknoten fehl?.
Anpassen von Zustandsprüfungen für VPC-Lastverteiler
Um mehr Kontrolle über Ihre VPC-Load-Balancer-Zustandsprüfungen zu erhalten, können Sie optionale Anmerkungen verwenden, um Ihre Zustandsprüfungen mit erweiterten Konfigurationen für Testintervalle, Timeouts und Wiederholungsversuche 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 Protokoll für die Zustandsprüfung der VPC-Loadbalancer-Ressource fest, die mit dem Kubernetes-Loadbalancer-Dienst verbunden ist. Normalerweise wird das VPC LB-Zustandsprüfungsprotokoll
durch den Wert der
externalTrafficPolicy-Einstellung in der Kubernetes-Load-Balancer-Dienstspezifikation bestimmt. Diese Anmerkung setzt diese Logik außer Kraft. Diese Anmerkung ändert nicht, wie Kubernetes, und insbesondere kube-proxy, sich in Bezug auf die verschiedenen Einstellungen vonexternalTrafficPolicyverhält. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-port- Optional. Der Port TCP, der für die Zustandsprüfungen verwendet wird. Dieser Vermerk 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.
- Wenn diese Anmerkung auf einen Kubernetes-Load-Balancer-Dienst angewendet wird, 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 Pfad für die Gesundheitsprüfung URL für HTTP und HTTPs-Gesundheitsprüfungen. Diese Bemerkung gilt nur, wenn
ibm-load-balancer-cloud-provider-vpc-health-check-protocolaufhttpoderhttpsgesetzt ist.- Der Pfad URL muss das Format "Ursprung-Formular-Anfrage-Ziel" haben.
- Wenn diese Anmerkung nicht angegeben wird und die
ibm-load-balancer-cloud-provider-vpc-health-check-protocol-Anmerkung aufhttpoderhttpsgesetzt ist, wird der Standardwert/verwendet.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-delay- Optional. Die Anzahl der Sekunden, die zwischen den Gesundheitsprüfungen gewartet wird. Standardmäßig ist dieser Wert auf
5gesetzt und hat ein Minimum von2und ein Maximum von60. Dieser Wert muss größer sein als deribm-load-balancer-cloud-provider-vpc-health-check-timeout-Wert, 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 Gesundheitsprüfung gewartet wird. Standardmäßig ist dieser Wert auf
2gesetzt und hat ein Minimum von1und ein Maximum von59. Dieser Wert muss kleiner sein als deribm-load-balancer-cloud-provider-vpc-health-check-delay-Wert, der standardmäßig auf5gesetzt ist. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-retries- Die maximale Anzahl der Wiederholungen der Zustandsprüfung für den VPC-Loadbalancer. 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. Bei der Cluster- 4.14-Version und früheren Versionen müssen Sie, wenn der Knotenport
außerhalb des 30000-32767 Bereichs liegt, die VPC-Cluster-Sicherheitsgruppe anpassen, kube-<cluster-ID> um eingehenden Datenverkehr an
den 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 Zustandsprüfungen für TCP nicht mehr, bis der Dienst wieder verfügbar ist oder Sie die
Annotation 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. Bei Cluster-Versionen und 4.14 früheren Versionen müssen Sie jedoch den eingehenden Datenverkehr vom Port kubelet Sicherheitsgruppe des VPC-Clusters ändern kube-<cluster-ID> zulassen.
Möchten Sie die Komplexität vermeiden, zusätzliche TCP-Ports für Zustandsprüfungen in einem UDP-Load-Balancer festlegen zu müssen? Setzen Sie externalTrafficPolicy auf Local, um HTTP-Statusprüfungen zu verwenden,
die keine zusätzlichen Portspezifikationen erfordern.
Ändern des Subnetzes oder der Zone eines Load Balancers
Nachdem Sie eine VPC NLB erstellt haben, können Sie das überwachende Subnetz, mit dem sie 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 servicesBeispielhafte Ausgabe.
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_NAMEaus, 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-balancersBeispielhafte Ausgabe.
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-balancerBeispielhafte Ausgabe.
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-balancersBeispielhafte Ausgabe.
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