Container Service for Kubernetes (ACK) コンソールには、一般的なIngressの問題の診断に役立つIngress診断機能があります。 このトピックでは、Ingress診断項目について説明し、これらの問題を修正する方法について提案します。
Ingress診断の診断項目には、Ingress、起動パラメーター、Ingressポッドエラーログ、およびIngressコントローラーServer Load Balancer (SLB) インスタンスが含まれます。
診断機能を使用すると、ACKはクラスター内の各ノードでデータ収集プログラムを実行し、診断結果を収集します。 収集される情報には、システムのバージョン、ロードのステータス、Docker、およびkubelet、およびシステムログの主要なエラー情報が含まれます。 ACKはビジネス情報や機密データを収集しません。
侵入診断アイテム
診断項目は、クラスタ構成に基づいて変化し得る。 診断ページの実際の診断項目が優先されます。
カテゴリ | 説明 |
Ingressリソースの可用性を確認します。 | |
Ingressコンポーネント、Ingressに関連付けられているサービス、およびIngressポッドの起動パラメーターを確認します。 | |
Ingressコントローラーが使用するSLBインスタンスのステータス、最大接続数、QPS、およびヘルスステータスを確認します。 |
Ingress
診断アイテム | 説明 | どのように修正する |
Ingressチェック | 指定されたIngressが存在するかどうかを確認します。 | 指定されたURLに対してIngressルールが作成されているかどうかを確認します。 URLが有効な場合は、Ingressルールを確認します。 たとえば、パスとして正規表現が指定されているかどうか、またはuse-regexアノテーションが使用されているかどうかを確認します。 |
base-url-schemeチェック |
| Ingressコントローラーのバージョンを確認し、注釈を削除するか、他の注釈を使用します。 |
grpc-backendチェック |
| Ingressコントローラーのバージョンを確認し、注釈を削除するか、他の注釈を使用します。 |
mirror-uriチェック |
| Ingressコントローラーのバージョンを確認し、注釈を削除するか、他の注釈を使用します。 |
secure-backendsチェック |
| Ingressコントローラーのバージョンを確認し、注釈を削除するか、他の注釈を使用します。 |
session-cookie-ハッシュチェック |
| Ingressコントローラーのバージョンを確認し、注釈を削除するか、他の注釈を使用します。 |
nginx.com/nginx.orgチェック | Ingressが | NGINX Ingressコントローラーのオープンソースバージョンのアノテーションを使用します。 Ingressの詳細については、公式サイトの「NGINX Ingress管理」または「NGINX Ingress Controller」をご参照ください。 |
カナリアのステータス | カナリア機能を使用するには、 | Ingressのカナリア機能を有効にするには、ingressルールに |
アドオン
診断アイテム | 説明 | どのように修正する |
準備完了状態のIngressポッドの割合 | Ingress Deploymentによって作成されたポッドと比較して、準備状態にあるポッドの割合を確認します。 値が100未満の場合、一部のIngressポッドは起動に失敗するか、ヘルスチェックに合格しません。 | エラーログを確認して障害のあるポッドを見つけ、問題を修正します。 Ingressのトラブルシューティングの詳細については、「NGINX Ingressコントローラーのトラブルシューティング」をご参照ください。 |
Ingress IPアドレスチェック | IngressコントローラーがIngressにIPアドレスを割り当てているかどうかを確認します。 | IPアドレスが割り当てられていない場合は、IngressコントローラーがIngressのIngressClassに存在するかどうか、およびIngressコントローラーが正常に機能するかどうかを確認します。 診断結果に基づいて問題を修正します。 |
リーダーポッドチェック | リーダーポッドが選択されているかどうかを確認します。 リーダーポッドが選択されていない場合、ポッドの起動時間が短すぎるか、Ingressコントローラーの権限が適切に構成されていない可能性があります。 | Ingressポッドがエラーログを生成するかどうかを確認し、エラーログに示される問題を修正します。 Ingressのトラブルシューティングの詳細については、「NGINX Ingressコントローラーのトラブルシューティング」をご参照ください。 |
NGINX Ingressesが使用する注釈 | NGINX Ingressコントローラーのオープンソースバージョンでは、 | NGINX Ingressコントローラーのオープンソースバージョンでサポートされているアノテーションを使用します。 注釈の詳細については、「注釈」をご参照ください。 |
NGINX Ingressでのrewrite-targetでのキャプチャグループの使用 | NGINX Ingressの書き換え対象アノテーションがキャプチャグループと一緒に使用されているかどうかを確認します。 Ingressコントローラー0.22.0以降のバージョンでは、書き換え対象のアノテーションを使用する場合、キャプチャグループを明示的に指定する必要があります。 そうでない場合、トラフィック転送エラーが発生します。 | Ingressを適切に設定します。 Ingress設定の詳細については、「高度なNGINX Ingress設定」をご参照ください。 |
NGINX Ingressカナリアルール | service-matchまたはservice-weightで2つ以下のサービスが指定されているかどうかを確認します。 service-matchまたはservice-weightを指定して、2つのサービス間でのみトラフィックを分散できます。 2つ以上のサービスを指定した場合、過剰なサービスは無視されます。 その結果、トラフィック転送が要件を満たしていない場合があります。 | サービスの数を調整します。 |
Ingress名 | 一致するIngressルールの名前を表示します。 | なし。 |
ポッドエラーログ | Ingressコントローラポッドがエラーログを生成するかどうかを確認します。 エラーログが生成されると、Ingressコントローラーが期待どおりに実行されない場合があります。 | 原因を特定し、エラーログに基づいて問題を修正します。 Ingressのトラブルシューティングの詳細については、「NGINX Ingressコントローラーのトラブルシューティング」をご参照ください。 |
rewrite-targetのパスでのキャプチャグループの使用 | Ingressコントローラー0.22.0以降のバージョンで、 | Ingressを適切に設定します。 Ingressの詳細については、「特定のURLからトラフィックをリダイレクトするルーティングルールの設定」をご参照ください。 |
サービス内の複数のターゲット-* | service-matchまたはservice-weightを指定して、2つのサービス間でのみトラフィックを分散できます。 | service-weightまたはservice-matchで2つのサービスのみを指定します。 詳細については、「NGINX Ingressコントローラーを使用したカナリアリリースと青緑色の展開の実装」をご参照ください。 |
Ingressサービスチェック | Ingressの起動パラメーターで指定されたサービスが存在するかどうかを確認します。 サービスが削除されると、Ingressの起動に失敗する可能性があります。 | Deploymentの起動パラメーターで削除されたサービスの名前を確認し、問題を修正します。 詳細については、「ネットワークおよびSLBインスタンスに関連するリスクの高い操作」をご参照ください。 |
Ingress Serviceエンドポイントチェック | Ingressに関連付けられているサービスにエンドポイントがあるかどうかを確認します。 サービスにエンドポイントがない場合、SLBインスタンスはトラフィックをIngressコントローラーにルーティングできません。 | サービスのラベルセレクターが正常に機能するかどうかを確認します。 |
Ingress Serviceイベント | Ingressに関連付けられたサービスが警告イベントまたはエラーイベントを生成するかどうかを確認します。 この問題は、SLB設定エラーが原因で発生する可能性があります。 | サービスイベントを確認し、原因を特定して問題を修正します。 サービスのトラブルシューティングの詳細については、「サービスのエラーと解決策」をご参照ください。 |
Ingress Service外部トラフィックポリシー | 外部トラフィックポリシーは、クラスター内の外部トラフィックの分散方法を指定します。 デフォルトの外部トラフィックポリシーはローカルです。 クラスターに設定することもできます。 ローカルモードの使用を推奨します。 クラスターモードでは、クライアントIPアドレスは保持されません。 その結果、ヘルスチェック結果が正しくない可能性があります。 | ビジネスでクラスターモードが必要な場合、またはクラスター内からSLBインスタンスのIPアドレスを介してIngressコントローラーにアクセスする場合は、上記の予防策は適用されません。 |
Ingress Service外部IPアドレス | クラウドコントローラマネージャがIngressに関連付けられているサービスにIPアドレスを割り当てているかどうかを確認します。 IPアドレスが割り当てられていない場合、Ingressはインターネットにアクセスできない可能性があります。 | サービスのステータス、クラウドコントローラマネージャのステータス、およびSLBクォータが正常であることを確認してください。 ほとんどの問題はイベントを通じて公開されます。 |
Ingressサービスタイプ (LoadBalancer) | Ingressの起動パラメーターで指定されたサービスのタイプがLoadBalancerであるかどうかを確認します。 サービスタイプがLoadBalancerでない場合、Ingressコントローラーにインターネット経由でアクセスできない可能性があります。 | ビジネスがLoadBalancerタイプのサービスを必要としない場合、上記の予防措置は適用されません。 それ以外の場合は、サービスのタイプをLoadBalancerに変更します。 |
-- force-namespace-分離チェック |
| Ingressコントローラーのバージョンを確認し、起動パラメーターを削除します。 |
-- sort-backendsチェック |
| Ingressコントローラーのバージョンを確認し、起動パラメーターを削除します。 |
SLB
診断アイテム | 説明 | どのように修正する |
SLBインスタンス | IngressコントローラーのSLBインスタンスが存在するかどうかを確認します。 | Ingress Controllerで指定されたサービスが存在するかどうか、サービスが異常イベントを生成するかどうか、およびSLBコンソールにSLBインスタンスが存在するかどうかを確認します。 SLBインスタンスが誤って削除された場合は、サービスを再作成して問題を修正します。 詳細については、「」をご参照ください。誤ってSLBインスタンスを削除した場合はどうすればよいですか? |
IngressコントローラーSLBインスタンスのバックエンドサーバーの正常性 | SLBインスタンスのバックエンドサーバーのヘルスステータスを確認します。 | SLBインスタンスのバックエンドサーバーが正常でない場合、Ingressコントローラーで指定されたサービスが異常イベントを生成するかどうか、およびコンポーネントが圧倒されるかどうかを確認します。 コンポーネントのトラブルシューティングの詳細については、「NGINX Ingressコントローラーのトラブルシューティング」をご参照ください。 |
SLB ID | SLBインスタンスのIDを表示します。 | なし。 |
IngressコントローラーSLBインスタンス接続 | 過去3日間のSLBインスタンスの接続数が上限の80% を超えているかどうかを確認します。 接続数が上限に達した場合、クライアントはSLBインスタンスへの接続を確立できません。 | SLBインスタンスの接続数が上限に達した場合は、業務の中断を避けるためにSLBインスタンスをアップグレードします。 詳細については、「既存のSLBインスタンスの使用」をご参照ください。 |
IngressコントローラーSLBインスタンスの新しい接続レート | 過去3日間のSLBインスタンスの新規接続率が上限の80% を超えているかどうかを確認します。 レートが上限に達すると、クライアントは短期間でSLBインスタンスへの新しい接続を確立できません。 | SLBインスタンスの新規接続率が上限に達した場合は、業務の中断を避けるためにSLBインスタンスをアップグレードします。 詳細については、「既存のSLBインスタンスの使用」をご参照ください。 |
IngressコントローラーSLBインスタンスQPS | 過去3日間のSLBインスタンスのQPS値が上限の80% を超えているかどうかを確認します。 QPS値が上限に達すると、クライアントはSLBインスタンスに接続できません。 | SLBインスタンスのQPSが上限に達した場合は、業務の中断を避けるためにSLBインスタンスをアップグレードします。 詳細については、「既存のSLBインスタンスの使用」をご参照ください。 |
TLSのホストとSecretName | Ingress TLSを設定するときは、HostパラメーターとSecretNameパラメーターの両方を指定する必要があります。 | ホストとSecretNameの両方のパラメーターを指定し、ホストが証明書のホストと同じであることを確認します。 |
Ingress Controller SLBヘルスチェック | SLBインスタンスが過去3日以内にヘルスチェックに合格しないかどうかを確認します。 この問題は、コンポーネントが圧倒されるか、SLB設定にエラーが含まれる場合に発生します。 | SLBインスタンスが過去3日以内にヘルスチェックに合格しなかった場合、業務の中断を防ぐために、Ingressコントローラーで指定されたサービスが異常イベントを生成しているかどうか、およびコンポーネントが圧倒されているかどうかを確認します。 コンポーネントのトラブルシューティングの詳細については、「NGINX Ingressコントローラーのトラブルシューティング」をご参照ください。 |