Google への接続をトラブルシューティングする

このドキュメントでは、Google への接続に関する問題のトラブルシューティングについて説明します。

Network Connectivity Gateway

このセクションでは、Network Connectivity Gateway に関連するトラブルシューティングのヒントについて説明します。

コントローラとゲートウェイ Pod が実行されていることを確認する

  • Network Connectivity Gateway Pod を一覧表示します。

    kubectl --kubeconfig CLUSTER_KUBECONFIG get pods \
        --namespace kube-system | grep ncg
    

    CLUSTER_KUBECONFIG は、ユーザー クラスタ kubeconfig ファイルのパスに置き換えます。

    出力で、コントローラ Pod とゲートウェイ Pod が表示されていることを確認します。コントローラ Pod の名前は ncg-controller で始まり、ゲートウェイ Pod の名前は ncgd で始まります。例:

    ncg-controller-5f5d489b68-r87pp     1/1     Running
    ncgd-gvl76                          1/1     Running
    

    ゲートウェイ Pod の名前をメモします。これは、さまざまなトラブルシューティング コマンドで必要になります。

ゲートウェイの Pod ログを確認する

  • ゲートウェイ Pod のログになんらかのエラーがあるか確認します。

    kubectl --kubeconfig CLUSTER_KUBECONFIG logs GATEWAY_POD \
        --namespace kube-system
    

    GATEWAY_POD は、ゲートウェイ Pod の名前に置き換えます。

ゲートウェイ Pod 内での ncgcli の実行

ゲートウェイ Pod には、トンネル内のゲートウェイとトラフィックに関する情報を取得するために使用できる ncgcli という名前のコマンドライン ツールがあります。

  • ゲートウェイ Pod 内で ncgcli を実行するには、次のコマンドを使用します。

    kubectl --kubeconfig CLUSTER_KUBECONFIG exec -it GATEWAY_POD \
        --namespace kube-system -- ncgCLI_COMMAND
    

    ncgCLI_COMMAND は、ncgcli コマンドに置き換えます。

    例:

    kubectl --kubeconfig my-kubeconfig exec ncgd-6hkk2 --namespace kube-system \
        -- ncgcli --help
    

次のセクションでは、ncgcli コマンドのより多くの例を説明します。

IPsec トンネルを起動できない

  • NetworkConnectivityGateway カスタム リソースのステータスを確認します。

    kubectl --kubeconfig CLUSTER_KUBECONFIG get NetworkConnectivityGateway \
        --namespace kube-system --output yaml
    

    出力に Status: Healthy が表示されていることを確認します。例:

    apiVersion: networking.gke.io/v1alpha1
    kind: NetworkConnectivityGateway
    metadata:
      namespace: kube-system
      name: default
    spec:
    status:
      CurrNode: worker1-node
      CreatedTime: 2021-09-07T03:18:15Z
      LastReportTime: 2021-09-21T23:57:54Z
      Status:  Healthy
    
  • OverlayVPNTunnel カスタム リソースのステータスを確認します。

    kubectl --kubeconfig CLUSTER_KUBECONFIG get OverlayVPNTunnel \
        --namespace kube-system --output yaml
    
  • ゲートウェイ Pod 内からトンネルのステータスを確認します。

    ncgcli overlay peers show
    

詳細しくは Cloud VPN のトラブルシューティングをご覧ください。

BGP セッションを確立できない

クラスタ内の Cloud Router とゲートウェイ Pod 間の BGP セッションに対して、169.254.1.2169.254.2.2 などのリンクローカル IP アドレスを使用したことを確認します。

  • BGP セッションのステータスを確認します。

    kubectl --kubeconfig CLUSTER_KUBECONFIG get OverlayBGPPeer \
        --namespace kube-system --output yaml
    
  • ゲートウェイ Pod 内から BGP セッションのステータスを確認します。

    ncgcli overlay routes show
    

BGP セッションのトラブルシューティングの詳細については、BGP セッションの状態一般的なトラブルシューティングをご覧ください。

トンネルが稼働している場合のトラフィック転送の問題

トラフィック転送が失敗した場合は、ゲートウェイ Pod 内ncgcli を実行して、トンネル、ルーティング、データプレーンのプログラミングのステータスを確認します。

  • ピアへの IPsec トンネルが確立していることを確認します。

    ncgcli overlay peers show
    
  • オーバーレイ ルートが BGP 経由で交換され、適切な IPsec トンネルに解決されていることを確認します。

    ncgcli overlay routes show
    
  • データプレーンにプログラムされたルートが表示され、出力には、オーバーレイ ルートが含まれている必要があります。

    ncgcli fast-path routes show
    

最大伝送単位を調整する

Maximum Transmission Unit(MTU)は、ネットワーク レイヤ プロトコルでサポートされる、ヘッダーとデータの両方を含めた最大パケットのサイズ(バイト単位)です。アンダーレイ ネットワーク MTU の制限が原因で発生したトラフィックの問題がある場合は、OverlayVPNTunnel カスタム リソースで MTU を構成できます。トンネルのデフォルト MTU は 1,380 バイトです。

トンネルの MTU を調整するには:

  1. トンネルのステータスを確認します。

    kubectl --kubeconfig CLUSTER_KUBECONFIG get OverlayVPNTunnel \
        --namespace kube-system --output yaml
    

    status セクションは次の例のようになります。

    status:
      IfName: ipsec2
      LastTransition: "2022-06-16T07:13:28Z"
      SLA:
        DiscoveredMTU: 1300
        Jitter(ms): 1
        Latency(ms): 26
        Loss(%): "0.00"
    

    status.SLA.DiscoveredMTU の値が 1380 のデフォルトよりも小さい場合は、次の手順を使用して、一致する OverlayVPNTunel カスタム リソースの Spec.mtu 値を変更します。

  2. kubectl edit コマンドを使用して、編集するために OverlayVPNTunnel カスタム リソースを開きます。

    kubectl --kubeconfig CLUSTER_KUBECONFIG edit OVERLAY_VPN_TUNNEL_NAME
        --namespace kube-system --output yaml
    

    パケット損失を回避するには、Network Connectivity Gateway で使用される 2 つの OverlayVPNTunnel カスタム リソースに同じ MTU を構成します。

  3. 最初のステップの DiscoveredMTU の値と一致するように mtu の値を設定します。

    apiVersion: networking.gke.io/v1alpha1
      kind: OverlayVPNTunnel
      metadata:
        name: vpc2
        namespace: kube-system
      Spec:
        mtu: 1300
        ikeKey:
          name: ike-key
          namespace: kube-system
        localTunnelIP: 169.254.0.2
        peer:
          publicIP: 34.100.10.10
        self:
          publicIP: 70.32.151.5
    
  4. 変更を適用するには、保存してエディタを閉じます。

MTU とそれがトラフィック パフォーマンスに影響する仕組みについては、MTU の考慮事項をご覧ください。

トラフィック フローとアプリケーション レベルの統計情報を確認する

トラフィック フローと統計情報を確認するには、ゲートウェイ Pod 内ncgcli を実行します。

  • フローとトラフィックのアプリケーションを瞬時に表示するには:

    ncgcli forwarding flows top
    
  • フローレベル集計された統計情報の場合:

    ncgcli forwarding flows aggregates show
    
  • インターフェース レベル集計された統計情報の場合:

    ncgcli interfaces statistics show