Clusters VPC: por que o balanceador de carga VPC para o controlador de ingresso roteia apenas para uma zona?

Nuvem privada virtual

Você cria um cluster VPC multizona. No entanto, ao executar ibmcloud is load-balancers para localizar o balanceador de carga VPC que expõe o controlador de ingresso, a sub-rede VPC para apenas uma zona em seu cluster é listada em vez das sub-redes para todas as zonas em seu cluster. Na saída, procure o nome do balanceador de carga VPC que começa com 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

Quando você cria um cluster Red Hat OpenShift na infraestrutura VPC na CLI, o cluster é criado inicialmente com nós de trabalho em apenas uma zona. Em seguida, você torna o cluster multizona incluindo manualmente as zonas em seus conjuntos de trabalhadores com o comando ibmcloud oc zone add vpc-gen2. Atualmente, ao incluir zonas em seu cluster, o controlador do Ingress não é atualizado com as sub-redes VPC para as novas zonas e não roteia as solicitações para apps nas novas zonas.

Reinicie o controlador de ingresso para que um novo balanceador de carga VPC seja criado, o qual registra o controlador de ingresso por trás de um nome de host e encaminha o tráfego para o controlador de ingresso. Em seguida, atualize seu subdomínio do Ingress para usar o novo nome do host do balanceador de carga de VPC.

  1. Execute o comando a seguir para localizar o balanceador de carga VPC que expõe o controlador de ingresso. Na saída, procure o nome do balanceador de carga VPC que começa com kube-crtmgr-<cluster_ID>.

    ibmcloud is load-balancers
    

    Saída de exemplo

    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. Remova o serviço router-default e aguarde que ele seja automaticamente recriado.

    oc delete svc router-default -n openshift-ingress
    

    Depois de executar o comando delete svc para excluir o serviço, você pode precisar remover os finalizadores para remover totalmente o serviço. Execute o seguinte comando para excluir os finalizadores do serviço:

    oc get svc -n openshift-ingress router-default -o=json | jq '.metadata.finalizers = null' | kubectl apply -f -
    
  3. Verifique se o novo balanceador de carga VPC que expõe o controlador de ingresso tem Status de provisão de active e um Status de operação de online. Além disso, verifique se a lista Sub-redes agora inclui sub-redes para cada zona de seu cluster.

    ibmcloud is load-balancers
    

    Na saída, procure o nome do balanceador de carga VPC que começa com 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
    
  4. Para o serviço router-default, copie o nome do host que é designado pelo novo balanceador de carga de VPC no campo EXTERNAL-IP.

    oc get svc -n openshift-ingress
    

    Saída de exemplo

    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. Obtenha o subdomínio do Ingress para seu cluster.

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

    Saída de exemplo

    Ingress Subdomain:              mycluster-35366fb2d3d90fd50548180f69e7d12a-0000.us-south.containers.appdomain.cloud
    
  6. Atualize o registro de DNS do subdomínio do Ingress para usar o novo nome do host do balanceador de carga de VPC.

    ibmcloud oc nlb-dns replace --cluster <cluster_name_or_ID> --nlb-subdomain <Ingress_subdomain> --lb-host <vpc_lb_hostname>
    
  7. Verifique se o registro DNS de subdomínio do ingresso está atualizado para incluir o novo nome de host do balanceador de carga VPC para seu controlador de ingresso.

    ibmcloud oc nlb-dns ls -c <cluster_name_or_ID>
    

    Saída de exemplo

    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