Einrichten eines Private Path- Network Load Balancer for VPC s
Virtual Private Cloud4.16 und höher
In vollständig privaten VPC-Umgebungen ohne öffentlichen Internetzugang können Sie einen Private Path Network Load Balancer verwenden, um den Netzwerkverkehr auszugleichen, der zu den in Ihren VPC-Clustern ausgeführten Anwendungen fließt. Weitere Informationen finden Sie in den Anwendungsfällen des Dienstes Private Trasse.
Voraussetzungen
-
Wenn Sie noch keine laufende Anwendung haben, stellen Sie eine Anwendung in Ihrem 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.
Konfigurieren des Dienstes LoadBalancer
-
Kopieren Sie die
LoadBalancerKonfiguration und speichern Sie sie in einer Datei mit dem Namenlb.yaml.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: "private-path" # Required service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "private" # Required service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets: "<subnet_ID>" 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. -
Passen Sie die Felder für Ihren Anwendungsfall an. Eine vollständige Liste der Anmerkungen finden Sie unter Anmerkungen und Spezifikationen.
-
Speichern Sie Ihre Änderungen.
-
Stellen Sie den Load Balancer-Dienst in Ihrem Cluster bereit.
oc apply -f lb.yaml
Erstellen eines Private Path-Dienstes
Folgen Sie den Anweisungen zum Erstellen eines Dienstes "Private Path".
Einrichten eines virtuellen privaten Endpunkt-Gateways
Nachdem Sie nun einen Load Balancer-Dienst konfiguriert haben, müssen Sie ein Virtual Private Endpoint (VPE)-Gateway für den Zugriff auf die Anwendungen in Ihrem Cluster einrichten.
Weitere Informationen finden Sie unter Erstellen eines Endpunkt-Gateways in der Benutzeroberfläche.
Verbinden mit Ihren Anwendungen über Ihr VPE
Informationen zum Herstellen einer Verbindung zu Ihren Anwendungen über Ihren VPE finden Sie unter Zugriff auf Ihren virtuellen privaten Endpunkt nach dem Einrichten Ihres Endpunkt-Gateways.
Anmerkungen und Spezifikationen
Überprüfen Sie die erforderlichen und optionalen VPC NLB-Anmerkungen und Spezifikationen.
Erforderliche Vermerke und Spezifikationen
externalTrafficPolicy- Geben Sie
LocaloderClusteran. - Definieren Sie diesen Parameter mit
Local, um die Quellen-IP-Adresse von Clientanforderungen an Ihre Apps beizubehalten. Diese Einstellung verhindert, dass der eingehende Verkehr an einen anderen Knoten weitergeleitet wird. Diese Option konfiguriert auch HTTP-Statusprüfungen. - Wenn der Wert
Clusterfestgelegt ist, wird DSR nur über den ersten Workerknoten implementiert, an den die VPC-NLB die eingehende Anforderung zu Anfang weiterleitet. Nachdem die eingehende Anfrage eingetroffen ist, wird sie an einen Arbeitsknoten weitergeleitet, der den App-Pod enthält, der sich in einer anderen Zone befinden kann. 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.
Optionale Anmerkungen und Spezifikationen
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name- Geben Sie einen eindeutigen Namen an, um Ihren VPC-Loadbalancer beständig zu machen. Persistente VPC-Loadbalancer werden nicht gelöscht, wenn der Cluster, zu dem sie gehören, gelöscht wird. Weitere Informationen finden Sie unter Persistente VPC-Loadbalancer. Dieser Vermerk kann nur bei der Erstellung des Load Balancers gesetzt werden. Sie kann nicht in einem Aktualisierungsvorgang verwendet werden.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-protocol- Diese Anmerkung legt das Protokoll für die Zustandsprüfung der VPC-Load-Balancer-Ressource fest, die mit dem Kubernetes verbunden ist. Verfügbare Optionen sind
http,https, odertcp. Normalerweise wird das VPC LB-Zustandsprüfungsprotokoll durch den Wert derexternalTrafficPolicyin der Kubernetes bestimmt. Mit dieser Anmerkung wird diese Logik jedoch außer Kraft gesetzt. Diese Anmerkung ändert nicht, wie sich Kubernetes und insbesondere kube-proxy in Bezug auf die verschiedenen Einstellungen vonexternalTrafficPolicyverhält. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-port- 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 der „ 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. Weitere Informationen finden Sie unter Verstehen von standardmäßig sicheren Cluster-VPC-Netzwerken und Erstellen und Verwalten von VPC-Sicherheitsgruppen. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets- Anmerkung zur Angabe, welches Subnetz für die Zuweisung der IP-Adressen für den ppNLB verwendet werden soll. Diese IP-Adressen werden nur intern verwendet. Der Wert kann eine VPC-Subnetz-ID, ein VPC-Subnetz-Name oder ein VPC-Subnetz-CIDR
sein. Sie müssen nur ein Teilnetz angeben. Der gesamte eingehende Verkehr scheint von diesen IP-Adressen zu kommen. Auch wenn sich alle Adressen in einer einzigen Zone befinden, verarbeitet der ppNLB den eingehenden Verkehr aus allen Zonen.
Wenn diese spezielle Zone ausfällt, funktioniert der eingehende Verkehr aus den anderen Zonen weiterhin. Wenn Sie diese Anmerkung nicht angeben, wird das Teilnetz automatisch ausgewählt und das Teilnetz des Clusterknotens mit den meisten
freien IP-Adressen verwendet. Um Teilnetze in allen Ressourcengruppen anzuzeigen, führen Sie
ibmcloud oc subnets --provider vpc-gen2 --vpc-id VPC_ID --zone ZONEaus. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector- Anmerkung zur Festlegung eines Selektors für Worker-Knoten-Labels. Sie können bestimmte Arbeitsknoten in Ihrem Cluster für den Empfang von Datenverkehr konfigurieren, indem Sie Label-Selektorschlüssel angeben. Sie dürfen nur einen Label-Selektor
in die Anmerkung aufnehmen, und dieser Selektor muss im Format
"key=value"angegeben werden. Wenn diese Anmerkung nicht angegeben ist, sind alle Worker-Knoten in Ihrem Cluster so konfiguriert, dass sie Datenverkehr vom VPC-NLB empfangen. Diese Anmerkung hat Vorrang vor der Anmerkungservice.kubernetes.io/ibm-load-balancer-cloud-provider-zone, und alle Labelsdedicated: edgeauf Worker-Knoten werden ignoriert. Um den Datenverkehr auf eine bestimmte Zone zu beschränken, können Sie diese Anmerkung verwenden, um Arbeitsknoten in dieser Zone anzugeben. Beachten Sie, dass das Festlegen eines neuen Labels auf einem Cluster-Arbeitsknoten den Arbeitsknoten nicht automatisch für den Empfang von Datenverkehr konfiguriert; Sie müssen den VPC NLB neu erstellen oder aktualisieren, damit der neu gelabelte Arbeitsknoten Datenverkehr empfangen kann. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-path- Der Pfad für die Gesundheitsprüfung URL für HTTP und HTTPs Gesundheitsprüfungen. Dieser Vermerk gilt nur, wenn
ibm-load-balancer-cloud-provider-vpc-health-check-protocolaufhttpoderhttpsgesetzt ist. Der Pfad URL muss das Format eines origin-form request target haben. Wenn diese Anmerkung nicht angegeben wird und dieibm-load-balancer-cloud-provider-vpc-health-check-protocolAnmerkung 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 einen Mindestwert von2und einen Höchstwert von60. Dieser Wert muss größer sein als deribm-load-balancer-cloud-provider-vpc-health-check-timeoutWert, 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 einen Mindestwert von1und einen Höchstwert von59. Dieser Wert muss kleiner sein als deribm-load-balancer-cloud-provider-vpc-health-check-delay, 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 einen Mindestwert von1und einen Höchstwert von10. 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 Worker-Knoten in drei Zonen führt dies dazu, dass der Load Balancer die Last auf insgesamt 24 Worker-Knoten verteilt. 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.
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 ist oft statisch im Image definiert, das im Anwendungs-Pod läuft. Der im Pod konfigurierte Zielport unterscheidet sich vom Knotenport für den Dienst und kann sich auch vom externen Port unterscheiden, der auf der VPC LB konfiguriert ist.