VPC クラスター: Ingress コントローラー用の VPC ロード・バランサーが 1 つのゾーンにのみルーティングされるのはなぜですか?
仮想プライベートクラウド
マルチゾーンの VPC クラスターを作成しました。 ただし、ibmcloud is load-balancers を実行して Ingress コントローラーを公開する VPC ロード・バランサーを見つけると、クラスター内のすべてのゾーンのサブネットではなく、クラスター内の 1 つのゾーンの 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 クラスターを作成する場合、クラスターは最初、1 つのゾーンのワーカーノードのみで作成されます。 その後、ibmcloud oc zone add vpc-gen2 コマンドを使用してワーカー・プールに手動でゾーンを追加することでユーザーがクラスターをマルチゾーンにします。 現時点では、クラスターにゾーンを追加するときに、Ingress コントローラーは新しいゾーンの VPC
サブネットを反映して更新されないので、新しいゾーンのアプリに要求を転送しません。
Ingress コントローラーを再始動して、新しい VPC ロード・バランサーが作成されるようにします。これにより、Ingress コントローラーがホスト名の後ろに登録され、トラフィックが 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-ingressdelete svcコマンドを実行してサービスを削除した後、サービスを完全に削除するためにファイナライザーを削除しなければならない場合があります。 以下のコマンドを実行して、サービスのファイナライザーを削除する:oc get svc -n openshift-ingress router-default -o=json | jq '.metadata.finalizers = null' | kubectl apply -f - -
Ingress コントローラーを公開する新しい VPC ロード・バランサーの プロビジョニング状況 が
activeであり、稼働状況 が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 サブドメイン DNS 登録が更新され、Ingress コントローラーの新しい VPC ロード・バランサーのホスト名が含まれていることを確認します。
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