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. Anschließend können Sie die VPC-ALB optional mit einem DNS-Eintrag und einem TLS-Zertifikat registrieren. 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

Damit Ihre App öffentliche oder private Anfragen empfangen kann:

  1. 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.

  2. Erstellen Sie eine YAML-Konfigurationsdatei für Ihren Kubernetes Service vom Typ LoadBalancer. In der YAML-Datei geben Sie die service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type-Anmerkung entweder als "public" oder "private" an. Der Abschnitt annotations in der Beispieldatei enthält nur einige verfügbare Anmerkungen. Eine vollständige Liste der erforderlichen und optionalen VPC ALB-Anmerkungen finden Sie unter Anmerkungen und Spezifikationen.

    Damit Ihr VPC ALB leicht identifizierbar ist, sollten Sie den Dienst im Format <app_name>-vpc-alb-<VPC_zone> benennen.

    apiVersion: v1
    kind: Service
    metadata:
      name: myloadbalancer
      annotations:
        service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name: "`<app_name>-vpc-alb-<VPC_zone>`"
        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>"
    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.
    
  3. Erstellen Sie den Kubernetes-Service vom Typ LoadBalancer in Ihrem Cluster.

    oc apply -f myloadbalancer.yaml -n <namespace>
    
  4. Überprüfen Sie, ob der Kubernetes Service vom Typ LoadBalancer in 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.
```
  1. Ü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 online und für Provision Status den Wert active aufweist.

    ibmcloud is load-balancers
    

    In der folgenden CLI-Beispielausgabe wird die erstellte VPC-ALB mit dem Namen kube-bsaucubd07dhl66e4tgg-1f4f408ce6d2485499bcbdec0fa2d306 für den Kubernetes-Service vom Typ LoadBalancer angezeigt:

    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
    
  2. Wenn Sie einen öffentlichen LoadBalancer-Service erstellt haben, rufen Sie den Hostnamen des Kubernetes-Service vom Typ LoadBalancer (siehe Schritt 4), der von der VPC-ALB zugeordnet wird, mit Curl auf. Beispiel:

    curl 06496f64-us-south.lb.appdomain.cloud:8080
    

    Beispielausgabe

    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 mit Clustern unter Kubernetes oder OpenShift verknüpft sind, können direkt über „ibmcloud is“-Befehle oder im Abschnitt „VPC-Infrastruktur“ in der Konsole aktualisiert werden. Ändern Sie zum Beispiel den Port eines Front-End-Listeners oder den Timeout-Wert für die Zustandsprüfung. Bei VPC-Load-Balancern, die mit Clustern unter Kubernetes oder OpenShift verknüpft sind, müssen alle Änderungen jedoch über Annotationen in der Ingress-Konfiguration vorgenommen werden. Der „ IBM Cloud “-Provider führt regelmäßig eine Neusynchronisierung mit allen zugehörigen VPC-ALBs und NLBs durch, um sicherzustellen, dass der aktive Load Balancer der erwarteten Konfiguration des Ingress entspricht. Wenn Sie also Änderungen an einem solchen Load Balancer direkt über die VPC vornehmen, anstatt Ingress-Annotationen zu verwenden, werden diese Änderungen rückgängig gemacht.

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.

Gehen Sie wie folgt vor, um ein Hostnamen für die VPC-ALB in einer DNS-Unterdomäne zu registrieren:

  1. Rufen Sie den Hostnamen für Ihre VPC-ALB ab, indem Sie den Befehl get svc ausführen. Suchen Sie in der Ausgabe in der Spalte EXTERNAL-IP nach dem Hostnamen. Zum Beispiel 1234abcd-us-south.lb.appdomain.cloud.

    oc get svc -o wide
    

    Beispielausgabe

    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
    
  2. 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.cloud Canonical Name-Eintrags (CNAME) angeben.

      1. Registrieren Sie in Zusammenarbeit mit Ihrem DNS-Provider (DNS = Domain Name Service) oder mit dem IBM Cloud-DNS eine angepasste Domäne.
      2. 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 der Load Balancer mit der externen IP von 1234abcd-us-south.lb.appdomain.cloud unter www.your-custom-domain.com erreichbar.
      Host/Service
      Das Präfix, über das Sie Ihre Anwendung erreichen möchten, z. B. www.
      Ressourcentyp
      Wählen Sie CNAME aus.
      TTL
      Wählen Sie eine Zeit zum Leben.
      Wert/Ziel
      Die LoadBalancer externe IP, die Sie zuvor abgerufen haben. Zum Beispiel 1234abcd-us-south.lb.appdomain.cloud.. Beachten Sie, dass Sie bei der Verwendung von IBM Cloud DNS darauf achten, dass Sie einen Punkt am Ende 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.

      1. 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)
        
      2. Überprüfen Sie, ob die Unterdomäne erstellt wurde. Weitere Informationen finden Sie unter Informationen zum Unterdomänenformat.
        ibmcloud oc nlb-dns ls --cluster CLUSTER_NAME_OR_ID
        
        Beispielausgabe
        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>
        
  3. 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.

Registrierung eines privaten DNS-Eintrags für einen privaten VPC ALB

In Version 4.15 oder später können Sie die folgenden optionalen Anmerkungen verwenden, um einen eigenen DNS instance, der einen benutzerdefinierten DNS zone bedient, mit einem privaten VPC ALB zu verknüpfen. Hierfür müssen beide optionalen Anmerkungen gesetzt werden. Wenn keine Angaben gemacht werden, werden DNS- A-Einträge für die Eigenschaft „ hostname “ dieses Load Balancers zur öffentlichen DNS-Zone „ lb.appdomain.cloud “ hinzugefügt.

service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-private-dns-instance-crn: "private-dns-crn"
Die DNS- instance, die diesem Load Balancer zugeordnet werden soll. Die angegebene Instanz kann sich in einer anderen Region oder einem anderen Konto befinden und unterliegt den IAM-Richtlinien. 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- zone, die diesem Load Balancer zugeordnet werden soll. Die angegebene Zone kann sich in einer anderen Region oder einem anderen Konto befinden, abhängig von den IAM-Richtlinien. Mögliche Werte: 1 ≤ Länge ≤ 128, Wert muss dem regulären Ausdruck [1]*[a-z0-9]$ entsprechen

Bevor Sie diese Funktion nutzen können, müssen Sie die folgenden Voraussetzungen erfüllen:

  • Erstellen der DNS-Zone, die an einen Load Balancer gebunden werden kann
  • Aktivieren der Dienst-zu-Dienst-Autorisierung zwischen VPC LBs und DNS Services
  • Hinzufügen der VPC des Clusters zu den zulässigen Netzwerken der Zone

Detaillierte Informationen finden Sie in den Dokumenten Integration eines Application 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
...

Anmerkungen und Spezifikationen

Überprüfen Sie die erforderlichen und optionalen VPC ALB-Anmerkungen und Spezifikationen.

Erforderliche Vermerke und Spezifikationen

service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "alb"
Anmerkung, um eine VPC ALB zu erstellen. Wenn Sie service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features nicht angeben, wird standardmäßig ein VPC ALB bereitgestellt.
service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "private"
(Erforderlich für private VPC ALBs) Anmerkung zur Angabe eines Dienstes, der öffentliche oder private Anfragen annimmt. Wenn diese Anmerkung nicht enthalten ist, wird eine öffentliche VPC ALB erstellt.
externalTrafficPolicy
Geben Sie Cluster an, um eine Anfrage an einen Arbeitsknoten weiterzuleiten, der den App-Pod enthält. Dieser Arbeitsknoten kann sich in einer anderen Zone befinden. Standardmäßig ist diese Anmerkung auf gesetzt Cluster.
Geben Sie Local an, um die Weiterleitung des eingehenden Datenverkehrs an einen anderen Knoten zu verhindern. Diese Option konfiguriert auch HTTP-Statusprüfungen.
Um die ursprüngliche Client-Quell-IP für VPC ALBs zu verwenden, müssen Sie das PROXY-Protokoll mit der service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "proxy-protocol"-Anmerkung aktivieren.

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-enable-features: "proxy-protocol"
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-App so konfigurieren, dass sie das PROXY-Protokoll akzeptiert, indem Sie die folgenden Schritte ausführen.
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 Anmerkung angeben, laufen zwei Prozesse ab: (1) Der VPC ALB wird in demselben Subnetz in dieser Zone bereitgestellt, mit dem Ihre Arbeitsknoten verbunden sind, und (2) nur die Arbeitsknoten in Ihrem Cluster in dieser Zone sind so konfiguriert, dass sie Verkehr vom VPC ALB empfangen. Wenn Sie die Lastausgleichsfunktion in einer bestimmten Zone platzieren möchten, müssen Sie diese Annotation beim Erstellen der Lastausgleichsfunktion angeben. Wenn Sie diese Anmerkung später in eine andere Zone ändern, werden die Abhör- und Backend-Arbeitsknoten automatisch an die neue Zone angepasst. Wenn das Label dedicated: edge auf Worker-Knoten gesetzt ist und Sie diese Anmerkung angeben, werden nur Edge-Knoten in der angegebenen Zone so konfiguriert, dass sie Datenverkehr empfangen. Edge-Knoten in anderen Zonen und Nicht-Edge-Knoten in der angegebenen Zone empfangen keinen Datenverkehr von der Lastausgleichsfunktion. Führen Sie zum Anzeigen von Zonen den Befehl ibmcloud ks zone ls --provider vpc-gen2 aus.
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. Ohne diese Anmerkung werden die Subnetze, die der VPC ALB einsetzt, automatisch aktualisiert, um mit den Zonen eines Clusters übereinzustimmen, wenn der Cluster von einer Einzelzonenregion zu einer Multizonenregion oder umgekehrt aktualisiert wird. 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 Sie ibmcloud oc subnets --provider vpc-gen2 --vpc-id VPC_ID --zone ZONE aus. Dieser Vermerk kann für bestehende VPC ALBs hinzugefügt oder geändert werden.
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. 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. Diese Anmerkung hat Vorrang vor der Anmerkung service.kubernetes.io/ibm-load-balancer-cloud-provider-zone, und alle Labels dedicated: edge auf 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 ALB neu erstellen oder aktualisieren, damit der neu gelabelte Arbeitsknoten Datenverkehr empfangen kann.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-protocol
Das Zustandsprüfungsprotokoll für die VPC-Load-Balancer-Ressource, die mit dem Kubernetes-Load-Balancer-Dienst verbunden ist. Verfügbare Optionen sind http, https, oder tcp. Normalerweise wird das VPC LB-Zustandsprüfungsprotokoll durch den Wert der externalTrafficPolicy-Einstellung in der Kubernetes-Load-Balancer-Service-Spezifikation bestimmt, aber 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 von externalTrafficPolicy verhä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-protocol angegeben ist.
Wenn Ihr Cluster nicht Secure by Default ausführt, müssen Sie möglicherweise die folgenden Änderungen an den angewandten VPC-Sicherheitsgruppen vornehmen. Wenn Ihr Cluster mit Secure by Default arbeitet, werden diese Änderungen automatisch übernommen.
  • 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.
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. Diese Bemerkung gilt nur, wenn ibm-load-balancer-cloud-provider-vpc-health-check-protocol auf http oder https gesetzt ist. Der Pfad URL muss das Format eines origin-form request target haben. Wenn diese Anmerkung nicht angegeben wird und die ibm-load-balancer-cloud-provider-vpc-health-check-protocol-Anmerkung auf http oder https gesetzt ist, wird der Standardwert / verwendet.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-delay
Die Anzahl der Sekunden, die zwischen den Gesundheitsprüfungen gewartet wird. Standardmäßig ist dieser Wert auf 5 gesetzt und hat ein Minimum von 2 und ein Maximum von 60. Dieser Wert muss größer sein als der ibm-load-balancer-cloud-provider-vpc-health-check-timeout-Wert, der standardmäßig auf 2 gesetzt ist.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-timeout
Die Anzahl der Sekunden, die auf eine Antwort auf eine Gesundheitsprüfung gewartet wird. Standardmäßig ist dieser Wert auf 2 gesetzt und hat ein Minimum von 1 und ein Maximum von 59. Dieser Wert muss kleiner sein als der ibm-load-balancer-cloud-provider-vpc-health-check-delay, der standardmäßig auf 5 gesetzt 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 2 gesetzt und hat ein Minimum von 1 und ein Maximum von 10.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-idle-connection-timeout
Das Zeitlimit für inaktive Verbindungen des Listeners in Sekunden. Die standardmäßige Leerlaufzeit hängt von Ihren Kontoeinstellungen ab. Normalerweise ist dieser Wert 50. Einige Konten auf der Zulassen-Liste haben jedoch größere Timeout-Einstellungen. Wenn Sie den Vermerk nicht setzen, verwenden Ihre Lastverteiler die Zeitüberschreitungseinstellung in Ihrem Konto. Sie können die Zeitüberschreitung explizit angeben, indem Sie diesen Vermerk setzen. Der Mindestwert ist 50. Das Maximum beträgt 7200.
service.kubernetes.io/ibm-load-balancer-cloud-provider-dns-name: "example-ingress-domain.<region>.containers.appdomain.cloud"
Versionen- 4.17 oder höher.
Registrieren Sie die IP-Adresse des Load Balancer mit der angegebenen Ingress-Domäne. Wenn die angegebene Domäne nicht existiert, wird eine Domäne erstellt, die den internen, IBM verwalteten Anbieter (IBM NS1) verwendet. Um eine neue Domäne zu erstellen, muss der Name in allen vorhandenen Domänen (nicht nur in denen Ihres Clusters) eindeutig sein. Durch das Löschen des Load Balancer-Dienstes wird die IP-Adresse aus der Domäne entfernt. Durch das Entfernen der Anmerkung wird die IP-Adresse jedoch nicht aus der Domäne entfernt.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-private-dns-instance-crn: "private-dns-crn"
Versionen- 4.15 oder höher.
Die DNS-Einträge, die diesem Load Balancer zugeordnet werden instance sollen. 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"
Versionen- 4.15 oder höher.
Die DNS-Einträge, die diesem Load Balancer zugeordnet werden zone sollen. Weitere Informationen finden Sie unter Registrieren eines privaten DNS-Eintrags.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-member-quota
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.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-security-group
Versionen- 1.30 oder höher.
Eine vom Kunden verwaltete Sicherheitsgruppe, die dem VPC-Loadbalancer hinzugefügt wird. Wenn Sie die IBM Sicherheitsgruppe nicht verwenden möchten, geben Sie eine Sicherheitsgruppe an, die Sie besitzen und verwalten. Diese Option entfernt die IBM 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 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.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-allow-outbound-traffic
Verfügbar für Cluster, die Secure by Default ausführen. Anmerkung, um Sicherheitsgruppen für jede IP-Adresse eines ALB zu erstellen, die mit einem von Ihnen angegebenen externen Port verbunden ist. Diese Regeln werden in der Clustersicherheitsgruppe erstellt und automatisch aktualisiert, wenn sich die IP-Adresse des VPC ALB ändert. Geben Sie gültige externe Ports in einer kommagetrennten Liste an, z. B. 80,443. Wenn in diesem Beispiel jeder öffentliche ALB, der mit jedem externen Portwert verbunden ist, zwei IP-Adressen hat, wird eine ausgehende Regel pro IP-Adresse erstellt, was insgesamt 4 neue Regeln ergibt. Sie können diesen Vermerk jederzeit hinzufügen oder entfernen.
selector
Der Bezeichnungsschlüssel (<selector_key>) und der Wert (<selector_value>), die Sie im Abschnitt spec.template.metadata.labels Ihrer 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
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 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.

  1. a-z0-9- ↩︎