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.
-
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-balancersBeispielausgabe
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 -
Entfernen Sie den
router-default-Service und warten Sie, bis er automatisch erneut erstellt wird.oc delete svc router-default -n openshift-ingressNach 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 - -
Bestätigen Sie, dass die neue VPC-Lastausgleichsfunktion, die den Ingress-Controller zugänglich macht, den Bereitstellungsstatus von
activeund einen Betriebsstatus vononlineaufweist. Überprüfen Sie außerdem, dass die Liste der Teilnetze (Subnets) nun Teilnetze aller Zonen Ihres Clusters einschließt.ibmcloud is load-balancersSuchen 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 -
Kopieren Sie für den Service
router-defaultden Hostnamen, der von der neuen VPC-Lastausgleichsfunktion im Feld EXTERNAL-IP zugeordnet wurde.oc get svc -n openshift-ingressBeispielausgabe
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 -
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 -
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> -
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