NetScaler Ingress Controller のトラブルシューティング

最終公開日 : Oct 02, 2026
NetScaler Ingress Controller は、以下の方法でデバッグできます。まず、イベントベースのデバッグ方法を使用し、次にログベースのデバッグ方法を使用します。高度なデバッグには、NetScaler kubectl プラグインと NSIC 診断ツールを使用してください。

イベントベースのデバッグ

Kubernetes のイベントは、他の Kubernetes エンティティの運用フローに関する洞察を提供するエンティティです。
NetScaler Ingress Controller のイベントベースのデバッグは、Pod レベルで有効になっています。NetScaler Ingress Controller のイベントを表示するには、次のコマンドを使用します。
kubectl describe pods <citrix-k8s-ingress-controller pod name> -n <namespace of pod>
イベントはEventsセクションで確認できます。
以下の例では、NetScaler は意図的に到達不能にされており、同じ情報がEventsセクションで確認できます。
    kubectl describe pods cic-vpx-functionaltest -n functionaltest

    Name:         cic-vpx-functionaltest
    Namespace:    functionaltest

    Events:
    Type     Reason     Age   From                                Message
    ----     ------     ----  ----                                -------
    Normal   Pulled     33m   kubelet, rak-asp4-node2             Container image "citrix-ingress-controller:latest" already present on machine
    Normal   Created    33m   kubelet, rak-asp4-node2             Created container cic-vpx-functionaltest
    Normal   Started    33m   kubelet, rak-asp4-node2             Started container cic-vpx-functionaltest
    Normal   Scheduled  33m   default-scheduler                   Successfully assigned functionaltest/cic-vpx-functionaltest to rak-asp4-node2

    Normal   Created    33m   CIC ENGINE, cic-vpx-functionaltest  CONNECTED: NetScaler:&lt;NetScaler IP>:80
    Normal   Created    33m   CIC ENGINE, cic-vpx-functionaltest  SUCCESS: Test LB Vserver Creation on NetScaler:
    Normal   Created    33m   CIC ENGINE, cic-vpx-functionaltest  SUCCESS: ENABLING INIT features on NetScaler:
    Normal   Created    33m   CIC ENGINE, cic-vpx-functionaltest  SUCCESS: GET Default VIP from NetScaler:
    Warning  Created    17s   CIC ENGINE, cic-vpx-functionaltest  UNREACHABLE: NetScaler: Check Connectivity::&lt;NetScaler IP>:80
さらにデバッグするには、NetScaler Ingress Controller Pod のログを確認してください。

ログベースのデバッグ

ConfigMap 機能を使用して、NetScaler Ingress Controller のログレベルをランタイムで変更できます。ランタイム中にログレベルを変更する方法については、ConfigMapドキュメントを参照してください。
NetScaler Ingress Controller のログを確認するには、次のコマンドを使用します。
kubectl logs <citrix-k8s-ingress-controller> -n namespace
次の表に、一般的な問題とその回避策をいくつか示します。
問題 ログ 回避策
NetScaler インスタンスに到達できません 2019-01-10 05:05:27,250 - ERROR - [nitrointerface.py:login_logout:94] (MainThread) 例外: HTTPConnectionPool(host='10.106.76.200', port=80): URLでの最大再試行回数を超過しました: /nitro/v1/config/login (原因: NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f4d45bd63d0>: 新しい接続の確立に失敗しました: [Errno 113] ホストへのルートがありません',)) NetScaler が稼働しており、NSIP アドレスに ping できることを確認してください。
ユーザー名またはパスワードが間違っています 2019-01-10 05:03:05,958 - エラー - [nitrointerface.py:login_logout:90] (メインスレッド) Nitro 例外::ログイン_ログアウト::エラーコード=354,メッセージ=無効なユーザー名またはパスワード
SNIP で管理アクセスが有効になっていません 2019-01-10 05:43:03,418 - ERROR - [nitrointerface.py:login_logout:94] (MainThread) 例外: HTTPConnectionPool(host='10.106.76.242', port=80): URLでの最大再試行回数を超過しました: /nitro/v1/config/login (原因: NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f302a8cfad0>: 新しい接続の確立に失敗しました: [Errno 110] 接続がタイムアウトしました',)) NetScaler で管理アクセスが有効になっていること (NetScaler VPX 高可用性の場合)、および管理アクセスが有効になっている IP アドレス NSIP が設定されていることを確認してください。
アノテーションの解析中にエラーが発生しました 2019-01-10 05:16:10,611 - ERROR - [kubernetes.py:set_annotations_to_csapp:1040] (MainThread) set_annotations_to_csapp: エラーメッセージ=No JSON object could be decodedInvalid Annotation $service_weights 修正して適用してください ${"frontend":, "catalog":95}
NITRO アクセスのポートが間違っています 2019-01-10 05:18:53,964 - ERROR - [nitrointerface.py:login_logout:94] (MainThread) 例外: HTTPConnectionPool(host='10.106.76.242', port=34438): URL: /nitro/v1/config/login で最大再試行回数を超過しました (NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fc592cb8b10>: 新しい接続の確立に失敗しました: [Errno 111] 接続が拒否されました',)) NITROアクセスに正しいポートが指定されているか確認してください。デフォルトでは、NetScaler Ingress Controller は通信にポート 80 を使用します。
Ingressクラスが間違っています 2019-01-10 05:27:27,149 - INFO - [kubernetes.py:get_all_ingresses:1329] (MainThread) ingressオブジェクト web-ingress.default のIngressクラスがサポートされていません Ingressファイルが、NetScaler Ingress Controller が監視するIngressクラスに属していることを確認してください。
Kubernetes APIに到達できません 2019-01-10 05:32:09,729 - ERROR - [kubernetes.py:_get:222] (Thread-1) /services の呼び出し中にエラーが発生しました: HTTPSConnectionPool(host='10.106.76.237', port=6443): URL: /api/v1/services で最大再試行回数を超過しました (NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7fb3013e7dd0>: 新しい接続の確立に失敗しました: [Errno 111] 接続が拒否されました',)) kubernetes_url が正しいか確認してください。コマンド kubectl cluster-info を使用してURL情報を取得します。Kubernetesメインノードが https://kubernetes_master_address:6443 で実行されており、Kubernetes APIサーバーポッドが稼働していることを確認してください。
YAMLファイルに指定されたサービスポートが正しくありません NA Ingress YAMLファイルに正しいポートの詳細を指定し、Ingress YAMLを再適用して問題を解決してください。
ロードバランシング仮想サーバーとサービスグループは作成されていますが、ダウンしています NA YAMLファイルで使用されているサービス名とポートを確認してください。NetScaler VPXの場合、NetScaler Ingress Controller を起動する際に --feature-node-watch が true に設定されていることを確認してください。
NetScaler VPXのコンテンツスイッチング (CS) 仮想サーバーが作成されません。 該当なし NetScaler VPX の Ingress YAML ファイルで、アノテーション ingress.citrix.com/frontend-ip を使用します。
Ingress YAML ファイルの TLS セクションで不適切なシークレットが提供されました 2019-01-10 09:30:50,673 - INFO - [kubernetes.py:_get:231] (MainThread) リソースが見つかりません: /secrets/default-secret12345 namespace default YAML ファイルの値を修正し、YAML を再適用してこの問題を解決します。
2019-01-10 09:30:50,673 - INFO - [kubernetes.py:get_secret:1712] (MainThread) アプリケーション default-secret12345.default のシークレットの取得に失敗しました
feature-node-watch 引数が指定されていますが、NetScaler VPX に静的ルートが追加されていません エラー - [nitrointerface.py:add_ns_route:4495] (MainThread) Nitro Exception::add_ns_route::errorcode=604,message=ゲートウェイに直接到達できません このエラーは、feature-node-watch が有効になっており、NetScaler VPX と Kubernetes クラスターが同じネットワークにない場合に発生します。NetScaler Ingress Controller YAML ファイルから - --feature-node-watch 引数を削除する必要があります。NetScaler VPX と Kubernetes クラスターが異なるネットワークにある場合、静的ルートは機能しません。NetScaler VPX とクラスターノード間のトンネルを作成するには、ノードコントローラーを使用します。
CRD ステータスが更新されていません ERROR - [crdinfrautils.py:update_crd_status:42] (MainThread) negrwaddmuloccmod の CRD ステータス更新中に例外が発生しました: 403 Client Error: Forbidden for url: https://10.96.0.1:443/apis/citrix.com/v1/namespaces/default/rewritepolicies/negrwaddmuloccmod/status RBAC で CRD ステータスをプッシュする権限が提供されていることを確認します。権限は次の YAML と同様である必要があります。
  • APIグループ: ["citrix.com"] リソース: ["rewritepolicies/status", "canarycrds/status", "authpolicies/status", "ratelimits/status", "listeners/status", "httproutes/status", "wafs/status"]
NetScaler Ingress Controller イベントが更新されません ERROR - [clienthelper.py:post:94] (MainThread) APIサーバーへの/eventsリクエストが禁止されています NetScaler Ingress Controller Podイベントを更新する権限がRBACルールで提供されていることを確認してください。
  • APIグループ: [""] リソース: ["events"] 動詞: ["create"]
Rewrite-responder ポリシーが追加されていません エラー - [config_dispatcher.py:__dispatch_config_pack:324] (Dispatcher) Status: 104, ErrorCode: 3081, 理由: Nitro例外: 式の構文エラー [D(10, 20).\^RE_SELECT(, Offset 15] < このようなエラーは、rewrite-responder CRD内の不正な式が原因です。式を修正し、CRDを再適用してください。
ERROR - [config_dispatcher.py:__dispatch_config_pack:324] (Dispatcher) Status: 104, ErrorCode: 3098, Reason: Nitro Exception: 無効な式のデータ型 [ent.ip.src\^, Offset 13]
CRDの適用に失敗しました。NetScaler Ingress Controllerは、CRDを構成のセットに変換し、指定されたCRDに従ってNetScalerを目的の状態に構成します。構成が失敗した場合、CRDインスタンスはNetScalerに適用されない可能性があります。 2020-07-13 08:49:07,620 - ERROR - [config_dispatcher.py:__dispatch_config_pack:256] (Dispatcher) ConfigPack 'default.k8service.kuard-service.add_spec' からの構成 ADD_sslprofile_k8s_crd_k8service_kuard-service_default_80_tcp_backend_{name:k8s_crd_k8service_kuard-service_default_80_tcp_backend sslprofiletype:BackEnd tls12:enabled } の実行に失敗しました ログには、NITRO コマンドが失敗したことが示されています。同じログがNetScalerにも表示されます。NetScaler ns.log を確認し、grep コマンドを使用してエラー文字列を検索して、CRD の適用中に失敗した NetScaler コマンドを特定します。CRD を削除して、再度追加してみてください。
2020-07-13 08:49:07,620 - ERROR - [config_dispatcher.py:__dispatch_config_pack:257] (Dispatcher) Status: 104, ErrorCode: 1074, Reason: Nitro Exception: 無効な値 [sslProfileType, value differs from existing entity and it cant be updated.]
2020-07-13 08:49:07,620 - INFO - [config_dispatcher.py:__dispatch_config_pack:263] (Dispatcher) ConfigPack 'default.k8service.kuard-service.add_spec' の処理に失敗しました

NetScaler Kubernetes kubectl プラグイン

NetScaler は、NetScaler Ingress Controller のデプロイを検査し、トラブルシューティング操作を実行するための kubectl プラグインを提供します。このプラグインで利用可能なサブコマンドを使用して、トラブルシューティング操作を実行できます。
注:
このプラグインは、NSIC バージョン 1.32.7 以降でサポートされています。

curl を使用したインストール

kubectl プラグインは、NetScaler Modern Apps tool kit repository から curl を使用して次のようにダウンロードすることでインストールできます。
Linux の場合:
curl -LO https://github.com/netscaler/modern-apps-toolkit/releases/download/v1.0.0-netscaler-plugin/netscaler-plugin_v1.0.0-netscaler-plugin_Linux_x86_64.tar.gz
gunzip netscaler-plugin_v1.0.0-netscaler-plugin_Linux_x86_64.tar.gz
tar -xvf netscaler-plugin_v1.0.0-netscaler-plugin_Linux_x86_64.tar
chmod +x kubectl-netscaler
sudo mv kubectl-netscaler /usr/local/bin/kubectl-netscaler
Macの場合:
curl -s -L https://github.com/netscaler/modern-apps-toolkit/releases/download/v1.0.0-netscaler-plugin/netscaler-plugin_v1.0.0-netscaler-plugin_Darwin_x86_64.tar.gz | tar xvz -
chmod +x kubectl-netscaler
sudo mv kubectl-netscaler /usr/local/bin/kubectl-netscaler
注:
Macの場合、開発者アプリを許可を有効にする必要があります。
Windowsの場合:
curl.exe -LO https://github.com/netscaler/modern-apps-toolkit/releases/download/v1.0.0-netscaler-plugin/netscaler-plugin_v1.0.0-netscaler-plugin_Windows_x86_64.zip | tar xvz
注:
Windowsの場合、$PATH変数を、kubectl-netscaler.exeファイルが展開されているディレクトリに設定する必要があります。

Krewを使用したインストール

Krewは、お使いのマシンでkubectlプラグインを見つけてインストールするのに役立ちます。Krewクイックスタートガイドに従ってKrewをインストールおよびセットアップしてください。
  1. お使いのマシンにKrewをインストールしてセットアップします。
  2. プラグインリストをダウンロードします。
    kubectl krew update
  3. Krewで利用可能なプラグインを見つけます。
    kubectl krew search netscalerNAME       DESCRIPTION                  INSTALLED
    netscaler  Inspect NetScaler Ingresses  no
  4. プラグインをインストールします。
    kubectl krew install netscaler
注:
Macの場合、開発者アプリを許可を有効にする必要があります。

Kubectlプラグインのサブコマンド使用例

このプラグインで利用できるサブコマンドは次のとおりです。
サブコマンド 説明
help さまざまなオプションに関する情報を提供します。インストール後にこのコマンドを実行して、インストールが成功したかどうかを確認し、利用可能なコマンドを確認することもできます。
status 指定されたプレフィックス入力(プレフィックスのデフォルト値はk8s)に対するNetScalerエンティティのステータス(稼働中、停止中、またはアクティブ)を表示します。
conf NetScaler構成(show run出力)を表示します。
support NetScaler (show techsupport) およびNetScaler Ingress Controllerのサポートバンドルを取得します。サポート関連情報は2つのtar.gzファイルとして抽出されます。これら2つのtarファイルは、NetScaler ADCからのshow tech support情報と、イングレスコントローラーが展開されているトラブルシューティング用のKubernetes関連情報です。

サブコマンドの使用例

Helpコマンド

helpコマンドは、利用可能なコマンドを知るために使用されます。
# kubectl netscaler  --help
サブコマンドの詳細については、次のようにhelpコマンドを使用してください。
# kubectl netscaler  &lt;command> --help

Status コマンド

status サブコマンドは、Kubernetes環境でNetScaler Ingress Controllerによって作成および管理されるNetScalerのさまざまなコンポーネントのステータスを表示します。
コンポーネントは、アプリケーションプレフィックス(NetScaler Ingress ControllerポッドのNS_APPS_NAME_PREFIX環境変数、またはHelmチャートのエンティティプレフィックス値)とイングレス名の両方、またはそのいずれかに基づいてフィルタリングできます。デフォルトの検索プレフィックスはk8sです。
フラグ 省略形 説明
デプロイメント イングレスコントローラーデプロイメントの名前。
--ingress -i 特定のKubernetesイングレスリソースの構成ステータスを取得するオプションを指定します。
--ラベル -l イングレスコントローラーデプロイメントのラベル。
--出力 出力形式。サポートされている形式は、表形式(デフォルト)とJSONです。
--ポッド イングレスコントローラーポッドの名前。
--プレフィックス -p NetScaler Ingress Controllerのデプロイ時に指定されたプレフィックスの名前を指定します。
--詳細 -v このオプションが設定されている場合、NetScalerの構成タイプやサービスポートなどの追加情報が表示されます。
次の例は、NetScaler名前空間内で、ラベル app=cic-tier2-citrix-cpx-with-ingress-controller とプレフィックス plugin2 を持つNetScaler Ingress Controllerによって作成されたNetScalerコンポーネントのステータスを示しています。
    # kubectl netscaler status -l app=cic-tier2-citrix-cpx-with-ingress-controller -n netscaler -p plugin

    Showing NetScaler components for prefix: plugin2
    NAMESPACE  INGRESS         PORT  RESOURCE          NAME                                                    STATUS
    --         --              --    Listener          plugin-198.168.0.1_80_http                              up
    default    --              --    Traffic Policy    plugin-apache2_80_csp_mqwmhc66h3bkd5i4hd224lve7hjfzvoi  active
    default    --              --    Traffic Action    plugin-apache2_80_csp_mqwmhc66h3bkd5i4hd224lve7hjfzvoi  attached
    default    plugin-apache2  80    Load Balancer     plugin-apache2_80_lbv_mqwmhc66h3bkd5i4hd224lve7hjfzvoi  up
    default    plugin-apache2  80    Service           plugin-apache2_80_sgp_mqwmhc66h3bkd5i4hd224lve7hjfzvoi  --
    default    plugin-apache2  80    Service Endpoint  198.168.0.2                                             up
    netscaler  --              --    Traffic Policy    plugin-apache2_80_csp_lhmi6gp3aytmvmww3zczp2yzlyoacebl  active
    netscaler  --              --    Traffic Action    plugin-apache2_80_csp_lhmi6gp3aytmvmww3zczp2yzlyoacebl  attached
    netscaler  plugin-apache2  80    Load Balancer     plugin-apache2_80_lbv_lhmi6gp3aytmvmww3zczp2yzlyoacebl  up
    netscaler  plugin-apache2  80    Service           plugin-apache2_80_sgp_lhmi6gp3aytmvmww3zczp2yzlyoacebl  --
    netscaler  plugin-apache2  80    Service Endpoint  198.168.0.3                                             up

Conf コマンド

conf サブコマンドは、NetScaler (show run output) 上の実行中の構成情報を表示します。l オプションは、NetScaler Ingress Controllerポッドのラベルを照会するために使用されます。
フラグ 短縮形 説明
--デプロイメント イングレスコントローラーデプロイメントの名前。
--ラベル -l イングレスコントローラーデプロイメントのラベル。
--ポッド イングレスコントローラーポッドの名前。
kubectl NetScaler conf サブコマンドの出力例は次のとおりです。
    # kubectl netscaler conf -l app=cic-tier2-citrix-cpx-with-ingress-controller -n netscaler

    set ns config -IPAddress 198.168.0.4 -netmask 255.255.255.255
    set ns weblogparam -bufferSizeMB 3
    enable ns feature LB CS SSL REWRITE RESPONDER AppFlow® CH
    enable ns mode L3 USNIP PMTUD
    set system user nsroot -encrypted
    set rsskeytype -rsstype ASYMMETRIC
    set lacp -sysPriority 32768 -mac 8a:e6:40:7c:7f:47
    set ns hostName cic-tier2-citrix-cpx-with-ingress-controller-7bf9c46cb9-xpwvm
    set interface 0/1 -haHeartbeat OFF -throughput 0 -bandwidthHigh 0 -bandwidthNormal 0 -intftype Linux -ifnum 0/1
    set interface 0/2 -speed 1000 -duplex FULL -throughput 0 -bandwidthHigh 0 -bandwidthNormal 0 -intftype Linux -ifnum 0/2

Support コマンド

support サブコマンドは、NetScaler (show techsupport) および NetScaler Ingress Controller のサポートバンドルを取得します。
警告:
NetScaler CPX の場合、テクニカルサポートバンドルファイルは指定した場所にコピーされます。セキュリティ上の理由から、NetScaler Ingress Controller が NetScaler VPX または NetScaler MPX を管理している場合、テクニカルサポートバンドルは抽出されるだけでコピーされません。NetScaler からテクニカルサポートバンドルファイルを手動で取得する必要があります。
support サブコマンドのフラグ:
フラグ 省略形 説明
--デプロイメント イングレスコントローラーデプロイメントの名前。
--ラベル -l イングレスコントローラーデプロイメントのラベル。
--ポッド イングレスコントローラーポッドの名前。
--アプリケーションネームスペース イングレス、サービス、ポッド、CRDなどのKubernetesリソースの詳細が抽出される、スペース区切りの名前空間のリスト(引用符で囲む)。(例: default "namespace1" "namespace2")(デフォルト: "default")。
--ディレクトリ -d サポートファイルを保存するディレクトリの絶対パスを指定します。指定しない場合、現在のディレクトリが使用されます。
--unhideIP Kubernetes情報を収集する際にIPアドレスを非表示にしないように、このフラグを設定します。デフォルトでは、このフラグはfalseに設定されています。
--nsbundleをスキップ このオプションは、NetScalerからのテクニカルサポートの抽出を無効にします。デフォルトでは、このフラグはfalseに設定されています。
以下は、kubectl netscaler supportコマンドの出力例です。
    # kubectl netscaler support -l app=cic-tier2-citrix-cpx-with-ingress-controller -n plugin
    Extracting show tech support information, this may take
    minutes.............

    Extracting Kubernetes information
    The support files are present in /root/nssupport_20230410032954

NSIC診断ツール

NSIC診断ツールは、NetScaler Ingress ControllerとKubernetesクラスターにデプロイされたアプリケーションに関する情報を収集するシェルスクリプトです。このツールは、必要な情報を抽出するために、名前空間、CNI、および出力ディレクトリパスを入力として受け取り、出力ファイルをtar形式で保存します。ユーザーが機密情報であり共有すべきではないと考える情報がある場合は、ユーザーが指定した出力ディレクトリパスの下にある出力_ ディレクトリをスキャンし、tarファイルを再作成して共有してください。
NSIC診断ツールスクリプトをダウンロードし、nsic_diagnostics_tool.shを実行します。