シングル VM セットアップに関する問題のトラブルシューティング

タスク・マネージャー・ポッドの障害 - ストレージ所有権の問題

シングル VM 環境でバージョン 2.0.0 にアップグレードした後に、タスク・マネージャー・ポッドが起動しないことがあります。問題を解決するには、次の手順を実行します。
  • オンライン・スクリプトを使用して AppScan 360° をアップグレードした場合は、次を実行します。
    ./AppScan360_SingleVMsetup_v2.0.0.run -- $PWD remediateStorageIssues
  • オフライン・スクリプトを使用して AppScan 360° をアップグレードした場合は、次を実行します。
    ./AppScan360_SingleVMsetup_v2.0.0_Offline.run -- $PWD remediateStorageIssues

ポッドイメージのダウンロードのプル問題

ローカル Docker レジストリーを使用して AppScan 360° をシングル VM Ubuntu 環境に配置すると、レジストリー接続エラーが原因でポッドの起動に失敗する問題が発生することがあります。

ポッドイベントの一般的なエラーは、次のようになります。
Normal   Pulling    60s (x4 over 4m1s)   kubelet            
Pulling image "<ip>:5443/as360-k8s-docker-images/reloader:v1.2.1"
Warning  Failed     30s (x4 over 3m31s)  kubelet            
Failed to pull image 
"<ip>:5443/as360-k8s-docker-images/reloader:v1.2.1": rpc error: code = 
DeadlineExceeded desc = failed to pull and unpack image 
"<ip>:5443/as360-k8s-docker-images/reloader:v1.2.1": failed to resolve 
reference "<ip>/as360-k8s-docker-images/reloader:v1.2.1": failed to do 
request: Head 
"https://<ip>/v2/as360-k8s-docker-images/reloader/manifests/v1.2.1": 
dial tcp <ip>:5443: i/o timeout

エラーメッセージに dial tcp <ip>:5443: i/o timeout が表示されている場合、通常、Kubernetes ノード (k0s コンテナー) と Docker レジストリー間のネットワーク接続の問題を示しています。

問題を解決するには、次の手順を実行します。

  • k0s コンテナーに接続し、診断ツールをインストールします。
    docker exec -it k0s sh
  • コンテナーからネットワーク接続をテストします。

    • netcat を使用してレジストリーへの接続を確認します。
      nc -zv <registry-ip> 5443
    • メッセージで「開く」が表示されない場合は、接続が成功しておらず、ネットワークに問題があることを示しています。
    • コンテナーから ctr コマンドを使用して画像を直接プルしてみます。
      k0s ctr images pull --user <user>:<pass> 
      <registry-ip>:5443/as360-k8s-docker-images/reloader:v1.2.1
    • これが失敗した場合は、ファイアウォールルールに問題がある可能性があります。
  • ファイアウォール (UFW) と IP テーブルのルールを確認してください。
    • ホストでファイアウォール・ルールを確認してください。
      iptables -L -n -v
    • 以下の例のようにトラフィックをブロックしている可能性のある ufw (複雑でないファイアウォール) に関連するチェーンを探します。
      Chain INPUT (policy DROP 39231 packets, 2148K bytes)
       pkts bytes target     prot opt in     out     source               destination         
      6603K 9311M ufw-before-logging-input  all  --  *      *       0.0.0.0/0            
      0.0.0.0/0           
      6603K 9311M ufw-before-input  all  --  *      *       0.0.0.0/0            
      0.0.0.0/0           
       407K   50M ufw-after-input  all  --  *      *       0.0.0.0/0            
      0.0.0.0/0           
      39311 2154K ufw-after-logging-input  all  --  *      *       0.0.0.0/0            
      0.0.0.0/0           
      39311 2154K ufw-reject-input  all  --  *      *       0.0.0.0/0            
      0.0.0.0/0           
      39311 2154K ufw-track-input  all  --  *      *       0.0.0.0/0            
      0.0.0.0/0
      
  • UFW ルールを更新して、ホスト上の Docker ネットワーク・トラフィックを許可します。

    • Docker ネットワークインターフェースでのトラフィックを許可します。
      sudo ufw allow in on docker0
      sudo ufw allow out on docker0
      
    • レジストリー・ポートへのトラフィックを許可します。
      sudo ufw allow out from any to <registry-ip> port 5443 proto tcp
      sudo ufw allow out from any to <registry-ip> port 7443 proto tcp
      
  • 解決を確認します。

    • k0s コンテナーから接続テスト (netcat、ctr images pull) を再実行してください。
    • 成功すると、ポッドイメージのプルが期待どおりに機能するようになります。

AppScan 360° がデータベースに接続できない - SCA の配置に失敗

  • IP がネットワーク・ポリシー範囲内にないため、データベース接続に失敗しました
  • その結果、ASCP 配置が正常に完了しないため、SCA 配置も失敗します
egress:
  - to:
    - namespaceSelector: {}
    - ipBlock:
        cidr: 10.0.0.0/8
    - ipBlock:
        cidr: 192.168.0.0/16
    - ipBlock:
        cidr: 172.16.0.0/12
    - ipBlock:
        cidr: fc00::/7

トラブルシューティングの手順

  • データベース接続文字列/IPを確認します

解決方法

  • データベース IP CIDR をネットワーク・ポリシー出力ルールに追加します

coredns ポッドが crashloopbackoff エラーで失敗する

  • k0s クラスター・セットアップで crashloopbackoff エラーで coredns ポッドが失敗します
  • coredns ポッド・ログのエラー
maxprocs: Leaving GOMAXPROCS=28: CPU quota undefined 
plugin/forward: no nameservers found 
stream closed: EOF for kube-system/coredns-6946cc8786-q52sw (coredns)

解決方法

  • ホスト・マシンの /etc/resolv.conf ファイルにネームサーバー・エントリーがない場合は追加します。
  • その後、coredns ポッドを削除して再作成します。
  • または、クラスターに固有のネームサーバー・エントリーを保ち、ホスト・マシンの resolv.conf に依存しない場合は、coredns configmap にネームサーバー・エントリーを設定します
   kubectl -n kube-system edit configmap coredns

   # Replace forward . /etc/resolv.conf
   forward . 8.8.8.8 1.1.1.1 # Or specify any specific nameserver applicable for your environment

RHEL - VM の再起動時にアプリケーションにアクセスできない

  • RHEL VM に AppScan 360° をインストールした後、VM を再起動すると、アプリケーションにアクセスできなくなり、アプリケーション URL へのアクセス時に「503 Service Unavailable」エラーが表示されることがあります。
  • podman コンテナーが停止し、k0s クラスターが停止した可能性があるためです。

解決方法

  • 必要なコンポーネントを起動ため、ヘルパー・スクリプトが、シングル VM セットアップ・キットの以下のパスに格納されています。
    # Navigate to aioWorkspace directory
    cd <AS360_SETUP_DIRECTORY>/aioWorkspace
    # Navigate to utils scripts
    cd bin/utils
    
    # Execute script to start podman containers
    ./startPodmanContainers.sh
    
    # Check if k0s cluster is running, if not start the cluster using below script
    k0s status
    kubectl get pods -A
    
    # Execute script to start k0s cluster if it is not running
    ./startK0sOnHost.sh
    
    # Verify if all pods are running
    kubectl get pods -A

istio ポッドがスタックしたシングル VM セットアップで AppScan 360° を再インストールする際の問題

  • シングル VM セットアップで AppScan 360° の再インストール中に、istio ポッドがアンインストール中に適切に削除されなかった場合、istio ポッドが保留状態で動かなくなることがあります。

解決方法

  • ヘルパー・スクリプトを使用して istio リソースをクリーンアップし、インストールを続行します。
    # Navigate to aioWorkspace directory
    cd <AS360_SETUP_DIRECTORY>/aioWorkspace
    # Navigate to utils scripts
    cd bin/utils
    
    # Execute script to clean up istio resources
    ./cleanIstio.sh
  • 次に、インストール・コマンドを使用して AppScan 360° を再度インストールしてみます。