ウェイポイントに関する問題のトラブルシューティング

このガイドでは、ウェイポイントプロキシに名前空間、サービス、またはワークロードを登録したが、期待どおりの動作が見られない場合の対処法について説明します。

トラフィックルーティングまたはセキュリティポリシーに関する問題

curl ポッドから productpage サービス経由で reviews サービスにリクエストを送信する場合

$ kubectl exec deploy/curl -- curl -s http://productpage:9080/productpage

curl ポッドから reviews v2 ポッドにリクエストを送信する場合

$ export REVIEWS_V2_POD_IP=$(kubectl get pod -l version=v2,app=reviews -o jsonpath='{.items[0].status.podIP}')
$ kubectl exec deploy/curl -- curl -s http://$REVIEWS_V2_POD_IP:9080/reviews/1

reviews サービスへのリクエストは、すべての L7 ポリシーについて reviews-svc-waypoint によって強制される必要があります。reviews v2 ポッドへのリクエストは、すべての L7 ポリシーについて reviews-v2-pod-waypoint によって強制される必要があります。

  1. L7構成が適用されない場合は、まずistioctl analyzeを実行して、構成に検証上の問題がないか確認してください。

    $ istioctl analyze
    ✔ No validation issues found when analyzing namespace: default.
    
  2. サービスまたはポッドに対してL7構成を実装しているウェイポイントを特定します。

    ソースがサービスのホスト名またはIPを使用して宛先を呼び出す場合は、istioctl experimental ztunnel-config serviceコマンドを使用して、宛先サービスによってウェイポイントが使用されていることを確認します。前の例に従うと、reviewsサービスはreviews-svc-waypointを使用し、default名前空間の他のすべてのサービスは名前空間waypointを使用する必要があります。

    $ istioctl ztunnel-config service
    NAMESPACE    SERVICE NAME            SERVICE VIP   WAYPOINT
    default      bookinfo-gateway-istio  10.43.164.194 waypoint
    default      bookinfo-gateway-istio  10.43.164.194 waypoint
    default      bookinfo-gateway-istio  10.43.164.194 waypoint
    default      bookinfo-gateway-istio  10.43.164.194 waypoint
    default      details                 10.43.160.119 waypoint
    default      kubernetes              10.43.0.1     waypoint
    default      productpage             10.43.172.254 waypoint
    default      ratings                 10.43.71.236  waypoint
    default      reviews                 10.43.162.105 reviews-svc-waypoint
    ...
    

    ソースがポッドのIPを使用して宛先を呼び出す場合は、istioctl ztunnel-config workloadコマンドを使用して、宛先ポッドによってウェイポイントが使用されていることを確認します。前の例に従うと、reviews v2ポッドはreviews-v2-pod-waypointを使用し、default名前空間の他のすべてのポッドはウェイポイントを持たないはずです。これは、デフォルトでウェイポイントはサービス宛のトラフィックのみを処理するためです。

    $ istioctl ztunnel-config workload
    NAMESPACE    POD NAME                                    IP         NODE                     WAYPOINT                PROTOCOL
    default      bookinfo-gateway-istio-7c57fc4647-wjqvm     10.42.2.8  k3d-k3s-default-server-0 None                    TCP
    default      details-v1-698d88b-wwsnv                    10.42.2.4  k3d-k3s-default-server-0 None                    HBONE
    default      productpage-v1-675fc69cf-fp65z              10.42.2.6  k3d-k3s-default-server-0 None                    HBONE
    default      ratings-v1-6484c4d9bb-crjtt                 10.42.0.4  k3d-k3s-default-agent-0  None                    HBONE
    default      reviews-svc-waypoint-c49f9f569-b492t        10.42.2.10 k3d-k3s-default-server-0 None                    TCP
    default      reviews-v1-5b5d6494f4-nrvfx                 10.42.2.5  k3d-k3s-default-server-0 None                    HBONE
    default      reviews-v2-5b667bcbf8-gj7nz                 10.42.0.5  k3d-k3s-default-agent-0  reviews-v2-pod-waypoint HBONE
    ...
    

    ポッドのウェイポイント列の値が正しくない場合は、ポッドにistio.io/use-waypointというラベルが付いており、ラベルの値がワークロードトラフィックを処理できるウェイポイントの名前であることを確認してください。たとえば、reviews v2ポッドがサービストラフィックのみを処理できるウェイポイントを使用している場合、そのポッドで使用されているウェイポイントは表示されません。ポッドのistio.io/use-waypointラベルが正しいように見える場合は、ウェイポイントのGatewayリソースにistio.io/waypoint-forと互換性のある値のラベルが付いていることを確認してください。ポッドの場合、適切な値はallまたはworkloadになります。

  3. istioctl proxy-statusコマンドを使用して、ウェイポイントのプロキシステータスを確認します。

    $ istioctl proxy-status
    NAME                                                CLUSTER        CDS         LDS         EDS          RDS          ECDS         ISTIOD                      VERSION
    bookinfo-gateway-istio-7c57fc4647-wjqvm.default     Kubernetes     SYNCED      SYNCED      SYNCED       SYNCED       NOT SENT     istiod-795d55fc6d-vqtjx     1.23-alpha.75c6eafc5bc8d160b5643c3ea18acb9785855564
    reviews-svc-waypoint-c49f9f569-b492t.default        Kubernetes     SYNCED      SYNCED      SYNCED       NOT SENT     NOT SENT     istiod-795d55fc6d-vqtjx     1.23-alpha.75c6eafc5bc8d160b5643c3ea18acb9785855564
    reviews-v2-pod-waypoint-7f5dbd597-7zzw7.default     Kubernetes     SYNCED      SYNCED      NOT SENT     NOT SENT     NOT SENT     istiod-795d55fc6d-vqtjx     1.23-alpha.75c6eafc5bc8d160b5643c3ea18acb9785855564
    waypoint-6f7b665c89-6hppr.default                   Kubernetes     SYNCED      SYNCED      SYNCED       NOT SENT     NOT SENT     istiod-795d55fc6d-vqtjx     1.23-alpha.75c6eafc5bc8d160b5643c3ea18acb9785855564
    ...
    
  4. Envoyのアクセスログを有効にし、いくつかのリクエストを送信した後、ウェイポイントプロキシのログを確認します。

    $ kubectl logs deploy/waypoint
    

    十分な情報がない場合は、ウェイポイントプロキシのデバッグログを有効にすることができます。

    $ istioctl pc log deploy/waypoint --level debug
    
  5. istioctl proxy-configコマンドを使用して、ウェイポイントのEnvoy構成を確認します。これは、クラスタ、エンドポイント、リスナー、ルート、シークレットなど、ウェイポイントに関連するすべての情報を表示します。

    $ istioctl proxy-config all deploy/waypoint
    

ウェイポイントプロキシはEnvoyに基づいているため、Envoyのデバッグ方法の詳細については、Envoy構成の詳細セクションを参照してください。

この情報は役に立ちましたか?
改善のための提案はありますか?

フィードバックありがとうございます!