VPC クラスター: アプリがロード・バランサー経由で接続できないのはなぜですか?
インフラストラクチャー・プロバイダー: VPC
VPC クラスター内に Kubernetes LoadBalancer
サービスを作成して、アプリを公開しました。 Kubernetes LoadBalancer
に割り当てられたホスト名を使用してアプリに接続しようとすると、接続が失敗するか、タイムアウトになります。
kubectl describe svc <kubernetes_lb_service_name>
を実行すると、Events セクションに以下のような警告メッセージが表示される場合があります。
The VPC load balancer that routes requests to this Kubernetes `LoadBalancer` service is offline.
The VPC load balancer that routes requests to this Kubernetes `LoadBalancer` service was deleted from your VPC.
クラスターに Kubernetes LoadBalancer
サービスを作成すると、VPC に VPC ロード・バランサーが自動的に作成されます。 VPC ロード・バランサーは、Kubernetes LoadBalancer
サービスが公開しているアプリにのみ要求を転送します。
以下の状況では、要求をアプリにルーティングできません。
- VPC セキュリティー・グループにより、アプリへの着信要求を含め、ワーカー・ノードへの着信トラフィックがブロックされている。
- ロード・バランサーのプロビジョニング・エラーや VSI 接続エラーが原因で、VPC ロード・バランサーがオフラインになっている。
- VPC ロード・バランサーが VPC コンソールまたは CLI で削除された。
- VPC ロード・バランサーの DNS エントリーがまだ登録中である。
- 1 つのアカウントで許可される VPC ロード・バランサーの最大数に達した。 VPC 内のすべての VPC クラスターに渡る VPC リソース割り当て量については、VPC 割り当て量に関する資料 を確認します。
VPC セキュリティー・グループがクラスターへのトラフィックをブロックしていないこと、および VPC ロード・バランサーが使用可能であることを確認してください。
-
Kubernetes
LoadBalancer
サービスの VPC ロード・バランサーが存在することを確認します。 出力で、kube-<cluster_ID>-<kubernetes_lb_service_UID>
という形式の VPC ロード・バランサーを探します。kubectl get svc <service_name> -o yaml
を実行して、KubernetesLoadBalancer
サービス UID を取得できます。ibmcloud is load-balancers
- VPC ロード・バランサーがリストに含まれていない場合は、以下のいずれかの理由で存在しません。
- 1 つのアカウントで許可される VPC ロード・バランサーの最大数に達した。 VPC 内のすべての VPC クラスターで、最大 20 個の VPC ロード・バランサーを作成できます。 VPC ロード・バランサーは、作成した Kubernetes
LoadBalancer
サービスごとに 1 つ作成され、その KubernetesLoadBalancer
サービスにのみ要求を転送します。 - VPC ロード・バランサーが VPC コンソールまたは CLI で削除された。 Kubernetes
LoadBalancer
サービス用の VPC ロード・バランサーを再作成するには、ibmcloud ks cluster master refresh --cluster <cluster_name_or_id>
を実行して Kubernetes マスターを再始動します。
VPC クラスター内のアプリのロード・バランシング・セットアップを削除する場合は、
kubectl delete svc <kubernetes_lb_service_name>
を実行して KubernetesLoadBalancer
サービスを削除します。 KubernetesLoadBalancer
サービスに関連付けられている VPC ロード・バランサーは VPC から自動的に削除されます。 -
ロード・バランサーが存在する場合は、接続されている VPC セキュリティー・グループを表示します。 ロード・バランサーに自動的に接続される
kube-<vpc-id>
セキュリティー・グループに変更を加えた場合は、元のルールをセキュリティー・グループに設定します。- VPC ロード・バランサーがリストされていて、接続されているセキュリティー・グループを変更していない場合は、以下の理由で応答しない可能性があります。
- DNS エントリーがまだ登録中である。 VPC ロード・バランサーが作成されると、ホスト名がパブリック DNS を介して登録されます。 場合によっては、クライアントが使用している特定の DNS にこの DNS エントリーが複製されるまでに数分かかることがあります。 ホスト名が DNS に登録されるまで待つか、VPC ロード・バランサーのいずれかの IP アドレスを使用して直接アクセスすることができます。 VPC ロード・バランサーの IP アドレスを確認するには、
ibmcloud is lb <LB_ID>
を実行し、パブリック IP フィールドを確認します。 - 数分経ってもロード・バランサーに到達できない場合は、プロビジョニングまたは接続の問題が原因でロード・バランサーがオフラインになっている可能性があります。 IBM Cloud サポート Case を開きます。 タイプには**「Technical」を選択します。 カテゴリーには VPC セクションの「Network」**を選択します。 説明にはクラスター ID と VPC ロード・バランサー ID を含めます。
- DNS エントリーがまだ登録中である。 VPC ロード・バランサーが作成されると、ホスト名がパブリック DNS を介して登録されます。 場合によっては、クライアントが使用している特定の DNS にこの DNS エントリーが複製されるまでに数分かかることがあります。 ホスト名が DNS に登録されるまで待つか、VPC ロード・バランサーのいずれかの IP アドレスを使用して直接アクセスすることができます。 VPC ロード・バランサーの IP アドレスを確認するには、
- VPC ロード・バランサーがリストされていて、接続されているセキュリティー・グループを変更していない場合は、以下の理由で応答しない可能性があります。