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 하위 도메인을 업데이트하십시오.
-
다음 명령을 실행하여 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 -
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 - -
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 -
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 -
클러스터에 대한 Ingress 하위 도메인을 가져오십시오.
ibmcloud oc cluster get -c <cluster_name_or_ID> | grep 'Ingress Subdomain'출력 예
Ingress Subdomain: mycluster-35366fb2d3d90fd50548180f69e7d12a-0000.us-south.containers.appdomain.cloud -
새 VPC 로드 밸런서 호스트 이름을 사용하도록 Ingress 하위 도메인 DNS 등록을 업데이트하십시오.
ibmcloud oc nlb-dns replace --cluster <cluster_name_or_ID> --nlb-subdomain <Ingress_subdomain> --lb-host <vpc_lb_hostname> -
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