Clusters VPC : Pourquoi l'équilibreur de charge VPC pour le contrôleur Ingress ne route-t-il que vers une seule zone ?
Cloud privé virtuel
Vous créez un cluster VPC multizone. Toutefois, lorsque vous exécutez ibmcloud is load-balancers pour rechercher l'équilibreur de charge VPC qui expose le contrôleur Ingress, le sous-réseau VPC pour une seule zone de votre cluster
est répertorié à la place des sous-réseaux pour toutes les zones de votre cluster. Dans la sortie, recherchez le nom de l'équilibreur de charge VPC qui commence par kube-crtmgr-<cluster_ID>.
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
Lorsque vous créez un cluster Red Hat OpenShift sur une infrastructure VPC dans le CLI, le cluster est initialement créé avec des nœuds de travail dans une seule zone. Pour que le cluster devienne un cluster multizone, vous ajoutez ensuite manuellement
des zones à vos pools de noeuds worker avec la commande ibmcloud oc zone add vpc-gen2. Actuellement, lorsque vous ajoutez des zones à votre cluster, le contrôleur Ingress n'est pas mis à jour avec les sous-réseaux VPC pour les nouvelles
zones et n'achemine pas les demandes vers les applications dans les nouvelles zones.
Redémarrez le contrôleur Ingress pour qu'un nouvel équilibreur de charge VPC soit créé, qui enregistre le contrôleur Ingress derrière un nom d'hôte et achemine le trafic vers le contrôleur Ingress. Mettez ensuite à jour votre sous-domaine Ingress pour qu'il utilise le nouveau nom de l'équilibreur de charge VPC.
-
Exécutez la commande suivante pour rechercher l'équilibreur de charge VPC qui expose le contrôleur Ingress. Dans la sortie, recherchez le nom d'équilibreur de charge VPC qui commence par
kube-crtmgr-<cluster_ID>.ibmcloud is load-balancersExemple de sortie
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 -
Supprimez le service
router-defaultet attendez qu'il soit automatiquement recréez-le.oc delete svc router-default -n openshift-ingressAprès avoir exécuté la commande
delete svcpour supprimer le service, vous devrez peut-être supprimer les finaliseurs pour supprimer complètement le service. Exécutez la commande suivante pour supprimer les finaliseurs du service :oc get svc -n openshift-ingress router-default -o=json | jq '.metadata.finalizers = null' | kubectl apply -f - -
Vérifiez que le nouvel équilibreur de charge VPC qui expose le contrôleur Ingress possède Statut de la disposition de
activeet Statut d'exploitation deonline. Vérifiez également que la liste des sous-réseaux comprend désormais des sous-réseaux pour chaque zone de votre cluster.ibmcloud is load-balancersDans la sortie, recherchez le nom d'équilibreur de charge VPC qui commence par
kube-crtmgr-<cluster_ID>.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 -
Pour le service
router-default, copiez le nom d'hôte attribué par le nouvel équilibreur de charge VPC dans la zone EXTERNAL-IP.oc get svc -n openshift-ingressExemple de sortie
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 -
Obtenez le sous-domaine Ingress correspondant à votre cluster.
ibmcloud oc cluster get -c <cluster_name_or_ID> | grep 'Ingress Subdomain'Exemple de sortie
Ingress Subdomain: mycluster-35366fb2d3d90fd50548180f69e7d12a-0000.us-south.containers.appdomain.cloud -
Mettez à jour votre enregistrement DNS de sous-domaine Ingress pour qu'il utilise le nom d'hôte du nouvel équilibreur de charge VPC.
ibmcloud oc nlb-dns replace --cluster <cluster_name_or_ID> --nlb-subdomain <Ingress_subdomain> --lb-host <vpc_lb_hostname> -
Vérifiez que l'enregistrement DNS du sous-domaine d'entrée est mis à jour pour inclure le nouveau nom d'hôte de l'équilibreur de charge VPC pour votre contrôleur Ingress.
ibmcloud oc nlb-dns ls -c <cluster_name_or_ID>Exemple de sortie
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