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

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

Network Connectivity Gateway

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

さらにサポートが必要な場合は、Cloud カスタマーケアにお問い合わせください。

コントローラとゲートウェイ 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 セッションのトラブルシューティングの詳細については、以下をご覧ください。

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

トラフィック転送が失敗した場合は、ゲートウェイ 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
    

次のステップ

さらにサポートが必要な場合は、Cloud カスタマーケアにお問い合わせください。