VPC-Cluster: Warum leitet die VPC-Lastausgleichsfunktion für Ingress-Controller nur an eine Zone weiter?

Virtuelle private Cloud

Sie erstellen einen VPC-Mehrzonencluster. Wenn Sie jedoch ibmcloud is load-balancers ausführen, um die VPC-Lastausgleichsfunktion zu finden, die den Ingress-Controller zugänglich macht, wird das VPC-Teilnetz für nur eine Zone in Ihrem Cluster anstelle der Teilnetze für alle Zonen in Ihrem Cluster aufgelistet. Suchen Sie in der Ausgabe nach dem Namen des VPC-Lastverteilers, der mit kube-crtmgr-<cluster_ID> beginnt.

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 Red Hat OpenShift Cluster auf einer VPC-Infrastruktur in der CLI erstellen, wird der Cluster zunächst mit Arbeitsknoten in nur einer Zone erstellt. Sie ändern den Cluster anschließend in einen Mehrzonencluster, indem Sie mithilfe des Befehls ibmcloud oc zone add vpc-gen2 manuell Zonen zu Ihren Worker-Pools hinzufügen. Wenn Sie Ihrem Cluster Zonen hinzufügen, wird der Ingress-Controller zurzeit nicht mit den VPC-Teilnetzen für die neuen Zonen aktualisiert und er leitet keine Anforderungen an Apps in den neuen Zonen weiter.

Starten Sie den Ingress-Controller erneut, damit eine neue VPC-Lastausgleichsfunktion erstellt wird, die den Ingress-Controller hinter einem Hostnamen registriert und Datenverkehr an den Ingress-Controller weiterleitet. Aktualisieren Sie Ihre Ingress-Unterdomäne anschließend, sodass der neue Hostname der VPC-Lastausgleichsfunktion verwendet wird.

  1. Führen Sie den folgenden Befehl aus, um die VPC-Lastausgleichsfunktion zu suchen, die den Ingress-Controller zugänglich macht. Suchen Sie in der Ausgabe nach dem Namen der VPC-Lastausgleichsfunktion, der mit kube-crtmgr-<cluster_ID> beginnt.

    ibmcloud is load-balancers
    

    Beispielausgabe

    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. Entfernen Sie den router-default-Service und warten Sie, bis er automatisch erneut erstellt wird.

    oc delete svc router-default -n openshift-ingress
    

    Nach der Ausführung des delete svc-Befehls zum Löschen des Service müssen Sie möglicherweise die Finalizer entfernen, um den Service vollständig zu entfernen. Führen Sie den folgenden Befehl aus, um die Finalizer des Dienstes zu löschen:

    oc get svc -n openshift-ingress router-default -o=json | jq '.metadata.finalizers = null' | kubectl apply -f -
    
  3. Bestätigen Sie, dass die neue VPC-Lastausgleichsfunktion, die den Ingress-Controller zugänglich macht, den Bereitstellungsstatus von active und einen Betriebsstatus von online aufweist. Überprüfen Sie außerdem, dass die Liste der Teilnetze (Subnets) nun Teilnetze aller Zonen Ihres Clusters einschließt.

    ibmcloud is load-balancers
    

    Suchen Sie in der Ausgabe nach dem Namen der VPC-Lastausgleichsfunktion, der mit kube-crtmgr-<cluster_ID> beginnt.

    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-1, mysubnet-us-south-2, mysubnet-us-south-3   true        active             online             default
    
  4. Kopieren Sie für den Service router-default den Hostnamen, der von der neuen VPC-Lastausgleichsfunktion im Feld EXTERNAL-IP zugeordnet wurde.

    oc get svc -n openshift-ingress
    

    Beispielausgabe

    NAME                       TYPE           CLUSTER-IP      EXTERNAL-IP                            PORT(S)                      AGE
    router-default             LoadBalancer   172.21.47.119   1234abcd-us-south.lb.appdomain.cloud   80:32637/TCP,443:31719/TCP   2m
    router-internal-default    ClusterIP      172.21.51.30    <none>                                 80/TCP,443/TCP,1936/TCP      2m
    
  5. Rufen Sie die Ingress-Unterdomäne für Ihren Cluster ab.

    ibmcloud oc cluster get -c <cluster_name_or_ID> | grep 'Ingress Subdomain'
    

    Beispielausgabe

    Ingress Subdomain:              mycluster-35366fb2d3d90fd50548180f69e7d12a-0000.us-south.containers.appdomain.cloud
    
  6. Aktualisieren Sie die DNS-Registrierung der Ingress-Unterdomäne, sodass der neue Hostname der VPC-Lastausgleichsfunktion verwendet wird.

    ibmcloud oc nlb-dns replace --cluster <cluster_name_or_ID> --nlb-subdomain <Ingress_subdomain> --lb-host <vpc_lb_hostname>
    
  7. Bestätigen Sie, dass die DNS-Registrierung der Ingress-Unterdomäne aktualisiert wurde und den neuen Hostnamen der VPC-Lastausgleichsfunktion für Ihren Ingress-Controller einschließt.

    ibmcloud oc nlb-dns ls -c <cluster_name_or_ID>
    

    Beispielausgabe

    Subdomain                                                                             Load Balancer Hostname                 SSL Cert Status   SSL Cert Secret Name                            Secret Namespace   
    mycluster-d84d4d2137685d8446c88eacf59b5038-0000.us-south.containers.appdomain.cloud   1234abcd-us-south.lb.appdomain.cloud   created           cluster-d84d4d2137685d8446c88eacf59b5038-0000   openshift-ingress