ALB Ingress コントローラーは、外部トラフィックをクラスター内のサービスにルーティングする Kubernetes クラスター用の Ingress コントローラーです。ALB Ingress を使用してサービスにアクセスすると、ALB Ingress コントローラーは関連付けられた Endpoint リソースの変更を監視します。その後、バックエンドノードのステータスを対応するバックエンドサーバーグループにリアルタイムで同期し、変更を Application Load Balancer (ALB) インスタンスに適用します。このトピックでは、ALB Ingress の使用時に発生する可能性のある問題を診断および解決する方法について説明します。
仕組み
ALB Ingress を介してサービスにアクセスすると、ALB Ingress コントローラーはさまざまなリソースの変更を監視し、その変更を関連付けられた ALB インスタンスに同期します。さまざまな制限や構成エラーが原因で、同期が失敗することがあります。次の図は、さまざまなリソース間の論理的な関係と同期プロセスを示しています。
ステップ 1: 異常イベントの表示
コンソールの使用: 左側のナビゲーションウィンドウで、 を選択します。ターゲットの名前空間を選択し、ターゲット Ingress の名前をクリックして詳細ページを開き、イベント タブをクリックします。
kubectl の使用:
kubectl describe ingress <ingress-name> -n <namespace>期待される出力:
... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedBuildModel 2m28s (x10 over 6m43s) ingress listener is not exist in alb, port: 443, protocol: HTTPS Normal Sync 19s (x32 over 11d) ingress Scheduled for sync Normal SuccessfullyReconciled 4s (x20 over 11d) ingress Successfully reconciled
説明 列または Message フィールドで、Ingress のイベント情報を見つけることができます。
Scheduled for sync: イベントが開始されたことを示します。Successfully reconciled: 調整が完了し、イベントが正常に終了したことを示します。Warningメッセージについては、ステップ 2 でトラブルシューティングを参照してください。変更が有効にならず、異常イベントが報告されない場合は、「ALB Ingress への変更が有効にならないが、異常イベントが報告されない場合はどうすればよいですか?
ステップ 2: 異常イベントの分析と解決
次の表は、一般的な異常イベント、その原因、および解決策について説明しています。
ALB Ingress コントローラーの古いバージョンと新機能との間の非互換性によって引き起こされる問題を回避するため、トラブルシューティングを開始する前に、コンポーネントを最新バージョンにアップグレードすることをお勧めします。詳細については、「リリースノート」およびコンポーネントをアップグレードする方法をご参照ください。
エラーメッセージ (Message) | 原因 | 解決策 |
listener does not exist in alb, port: 80, protocol: HTTP | ALB Ingress コントローラー V2.11.0 以降では、Ingress のリスナーは関連付けられるだけで、自動的には作成されません。このエラーは、AlbConfig で対応するリスナーを作成せずに Ingress でリスナーを使用した場合に発生します。 | ALB Ingress コントローラー V2.11.0 以降を使用する場合、AlbConfig で Ingress リソースに必要なリスナーを作成する必要があります。詳細については、「AlbConfig を使用して ALB リスナーを構成する」をご参照ください。 |
listener not found for (80/HTTP), with ingresses 1 | ALB Ingress コントローラー V2.11.0 以降では、このエラーは、まだ Ingress に関連付けられている AlbConfig からリスナーを削除した場合に発生します。エラーメッセージには、見つからないリスナーと関連付けられている Ingress の数が表示されます。 | リスナーを削除するには、まずそれに関連付けられているすべての Ingress を削除する必要があります。 重要 誤ってリスナーを削除した場合は、再度追加してください。 |
no certificate found for host | TLS が有効になっており、ドメイン名に対して証明書の自動検出機能が使用されていますが、Certificate Management Service でそのドメイン名に使用できる証明書が見つかりません。 |
|
The param Rules.1.RuleConditions.2.PathConfig.Values.1 is illegal | 転送ルールに無効なパスパラメーターが含まれています。 |
|
The param ServerGroupName is illegal | ALB バックエンドサーバーグループの名前が無効なフォーマットです。 | サーバーグループの名前が正しいフォーマットであることを確認してください。 サーバーグループ名は |
The specified resource sgp-vz2fb219vv792flx3u is in use | ACK が管理する ALB バックエンドサーバーグループが、別の ALB インスタンスによって参照されています。 | Application Load Balancer (ALB) コンソールにログオンします。左側のナビゲーションウィンドウで、 を選択します。[サーバーグループ] ページで、ターゲットのバックエンドサーバーグループを見つけ、必要に応じて ALB インスタンスの関連付けを解除します。 |
Message: Invalid parameter. Check the parameter input. | このエラーは、AlbConfig で証明書を指定する際に証明書 ID が誤って構成されている場合によく発生します。 | 証明書 ID が数値 ID ではなくリソース ID であることを確認してください。CertIdentifier で指定された証明書 ID を使用する必要があります。 |
Message: Failed to create SSL Certificate with name default-https-secret-1-b585e6 ({namespace}-{name}-{identity}). Error: The certificate has expired. | Secret 証明書の有効期限が切れています。エラーメッセージの証明書名は、
|
詳細については、「暗号化通信のために HTTPS 証明書を構成する」をご参照ください。 |
failed to createSSLCertificateWithName: XXX ErrorCode: NameRepeat Message: The name is already used. Please enter another name. | Ingress は Secret 証明書を使用します。証明書の有効期限が切れた後、AlbConfig を使用して新しい証明書をアップロードすると、期限切れの証明書の名前が再利用されます。これにより、SSL 証明書名が重複します。 | |
invalid server group Cookie: |
| Cookie の書き換えメソッドを使用する場合は、Cookie の値を構成する必要があります: パラメーターの詳細については、「アノテーションを使用してセッション維持を実装する」をご参照ください。 |
| ||
The quota of alb_quota_server_added_num is exceeded for resource eni-xxxx, usage 202/200 | ALB の | クォータセンターに移動して、サーバーグループのクォータを増やす。 |
よくある質問
ALB Ingress への変更が有効にならないが、異常イベントが報告されない場合はどうすればよいですか?
AlbConfig に関連する調整イベントが実行されない場合、または変更イベントが正常に処理されない場合、問題は IngressClass と AlbConfig の間の不正なバインディングが原因である可能性があります。詳細については、「IngressClass を使用して AlbConfig を Ingress に関連付ける」をご参照ください。IngressClass で指定された spec.parameters パラメーターが正しい AlbConfig リソースオブジェクト名に関連付けられていることを確認してください。