VPC 클러스터: Ingress 제어기의 VPC 로드 밸런서가 한 구역으로만 라우팅하는 이유는 무엇입니까?

가상 프라이빗 클라우드

다중 구역 VPC 클러스터를 작성합니다. 그러나 Ingress 제어기를 노출하는 VPC 로드 밸런서를 찾기 위해 ibmcloud is load-balancers를 실행하면 클러스터에 있는 모든 구역의 서브넷 대신 클러스터에 있는 한 구역의 VPC 서브넷만 나열됩니다. 출력에서 kube-crtmgr-<cluster_ID> 로 시작하는 VPC 로드 밸런서 이름을 찾습니다.

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

CLI에서 VPC 인프라에 Red Hat OpenShift 클러스터를 만들면 처음에는 하나의 영역에만 워커 노드로 클러스터가 만들어집니다. 사용자는 그 후 ibmcloud oc zone add vpc-gen2 명령으로 작업자 풀에 구역을 추가하여 클러스터를 다중 구역 클러스터로 전환합니다. 현재는 클러스터에 구역을 추가하는 경우 Ingress 제어기가 새 구역의 VPC 서브넷으로 업데이트되지 않으며 새 구역의 앱으로 요청을 라우팅하지 않습니다.

호스트 이름에 Ingress 제어기를 등록하고 Ingress 제어기에 트래픽을 전달하는 새 VPC 로드 밸런서가 작동되도록 Ingress 제어기를 다시 시작하십시오. 그 후 새 VPC 로드 밸런서 호스트 이름을 사용하도록 Ingress 하위 도메인을 업데이트하십시오.

  1. 다음 명령을 실행하여 Ingress 제어기를 노출하는 VPC 로드 밸런서를 찾으십시오. 출력에서 kube-crtmgr-<cluster_ID>로 시작하는 VPC 로드 밸런서 이름을 찾으십시오.

    ibmcloud is load-balancers
    

    출력 예

    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. router-default 서비스를 제거하고 자동으로 다시 작성될 때까지 기다리십시오.

    oc delete svc router-default -n openshift-ingress
    

    서비스를 삭제하기 위해 delete svc 명령을 실행한 후 서비스를 완전히 제거하려면 파이널라이저를 제거해야 할 수도 있습니다. 다음 명령을 실행하여 서비스에서 파이널라이저를 삭제합니다:

    oc get svc -n openshift-ingress router-default -o=json | jq '.metadata.finalizers = null' | kubectl apply -f -
    
  3. Ingress 제어기를 노출하는 새 VPC 로드 밸런서의 Provision status가 active이고 Operating status가 online인지 확인하십시오. 또한 Subnets 목록이 클러스터에 있는 각 구역의 서브넷을 포함하는지 확인하십시오.

    ibmcloud is load-balancers
    

    출력에서 kube-crtmgr-<cluster_ID>로 시작하는 VPC 로드 밸런서 이름을 찾으십시오.

    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. router-default 서비스의 경우에는 EXTERNAL-IP 필드에서 새 VPC 로드 밸런서에 의해 지정된 호스트 이름을 복사하십시오.

    oc get svc -n openshift-ingress
    

    출력 예

    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. 클러스터에 대한 Ingress 하위 도메인을 가져오십시오.

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

    출력 예

    Ingress Subdomain:              mycluster-35366fb2d3d90fd50548180f69e7d12a-0000.us-south.containers.appdomain.cloud
    
  6. 새 VPC 로드 밸런서 호스트 이름을 사용하도록 Ingress 하위 도메인 DNS 등록을 업데이트하십시오.

    ibmcloud oc nlb-dns replace --cluster <cluster_name_or_ID> --nlb-subdomain <Ingress_subdomain> --lb-host <vpc_lb_hostname>
    
  7. Ingress 제어기에 대한 새 VPC 로드 밸런서 호스트 이름을 포함하도록 Ingress 하위 도메인 DNS 등록이 업데이트되었는지 확인하십시오.

    ibmcloud oc nlb-dns ls -c <cluster_name_or_ID>
    

    출력 예

    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