バックエンド サービスベースの外部ロードバランサを作成する


このページでは、バックエンド サービスベースの外部パススルー ネットワーク ロードバランサを構築する外部 LoadBalancer Service をデプロイする方法について説明します。このページを読む前に、次のことをよく理解しておいてください。

外部パススルー ネットワーク ロードバランサの一般的な詳細については、バックエンド サービスベースの外部パススルー ネットワーク ロードバランサをご覧ください。

始める前に

始める前に、次の作業が完了していることを確認してください。

  • Google Kubernetes Engine API を有効にする。
  • Google Kubernetes Engine API の有効化
  • このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。すでに gcloud CLI をインストールしている場合は、gcloud components update を実行して最新のバージョンを取得する。

要件

  • クラスタで HttpLoadBalancing アドオンが有効になっている必要があります。このアドオンはデフォルトで有効になっています。これにより、クラスタは、バックエンド サービスを使用するロードバランサを管理できます。

  • バックエンド サービスベースの外部パススルー ネットワーク ロードバランサを使用する外部 LoadBalancer Service を作成するには、GKE クラスタでバージョン 1.25.5 以降を使用する必要があります。

  • 重み付けされたロード バランシングを使用する外部 LoadBalancer Service を作成するには、GKE クラスタでバージョン 1.31.0-gke.1506000 以降を使用する必要があります。

  • GCE_VM_IP ネットワーク エンドポイント グループ(NEG)バックエンドを使用する外部 LoadBalancer Service を作成するには、GKE クラスタでバージョン 1.32.2-gke.1652000 以降を使用する必要があります。

クラスタを選択する

新しいクラスタを作成することも、要件を満たす既存のクラスタを選択することもできます。

新しいクラスタを作成する

Autopilot

新しい Autopilot クラスタを作成するには:

gcloud container clusters create-auto CLUSTER_NAME \
    --release-channel=RELEASE_CHANNEL \
    --cluster-version=VERSION \
    --location=COMPUTE_LOCATION

次のように置き換えます。

LoadBalancer Service の VPC ファイアウォール ルールの自動作成を無効にするには、フラグ --disable-l4-lb-firewall-reconciliation を指定します。詳しくは、GKE LoadBalancer Service のユーザー管理ファイアウォール ルールをご覧ください。

Standard

新しい Standard クラスタを作成するには:

gcloud container clusters create CLUSTER_NAME \
    --release-channel=RELEASE_CHANNEL \
    --cluster-version=VERSION \
    --location=COMPUTE_LOCATION

次のように置き換えます。

LoadBalancer Service の VPC ファイアウォール ルールの自動作成を無効にするには、フラグ --disable-l4-lb-firewall-reconciliation を指定します。詳しくは、GKE LoadBalancer Service のユーザー管理ファイアウォール ルールをご覧ください。

既存のクラスタをアップグレードする

gcloud CLI を使用して既存のクラスタを更新します。

gcloud container clusters upgrade CLUSTER_NAME \
    --cluster-version=VERSION \
    --master \
    --location=COMPUTE_LOCATION

次のように置き換えます。

LoadBalancer Service の VPC ファイアウォール ルールの自動作成を無効にするには、フラグ --disable-l4-lb-firewall-reconciliation を指定します。詳しくは、GKE LoadBalancer Service のユーザー管理ファイアウォール ルールをご覧ください。

サンプル ワークロードをデプロイする

外部 LoadBalancer Service のサービング Pod を提供する次のサンプル ワークロードをデプロイします。

  1. 次のサンプル Deployment を store-deployment.yaml として保存します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: store
    spec:
      replicas: 20
      selector:
        matchLabels:
          app: store
      template:
        metadata:
          labels:
            app: store
        spec:
          containers:
          - image: gcr.io/google_containers/echoserver:1.10
            imagePullPolicy: Always
            name: echoserver
            ports:
              - name: http
                containerPort: 8080
            readinessProbe:
              httpGet:
                path: /healthz
                port: 8080
                scheme: HTTP
    
  2. マニフェストをクラスタに適用します。

    kubectl apply -f store-deployment.yaml
    
  3. Deployment に 20 のサービング Pod があることを確認します。

    kubectl get pods
    

    出力は次のようになります。

    NAME                     READY   STATUS    RESTARTS   AGE
    store-cdb9bb4d6-s25vw      1/1     Running   0          10s
    store-cdb9bb4d6-vck6s      1/1     Running   0          10s
    ....
    

外部 LoadBalancer Service を作成する

  1. 外部 LoadBalancer Service を作成して、サンプル ワークロードを公開します。

    1. 次の Service マニフェストを store-v1-lb-svc.yaml として保存します。

      apiVersion: v1
      kind: Service
      metadata:
        name: store-v1-lb-svc
        annotations:
          cloud.google.com/l4-rbs: "enabled"
      spec:
        type: LoadBalancer
        selector:
          app: store
        ports:
        - name: tcp-port
          protocol: TCP
          port: 8080
          targetPort: 8080
      
    2. マニフェストをクラスタに適用します。

      kubectl apply -f store-v1-lb-svc.yaml
      

    このサンプル マニフェストについては、次の点に注意してください。

    • マニフェストがクラスタに初めて適用されるときに、Service マニフェストに cloud.google.com/l4-rbs: "enabled" アノテーションを含める必要があります。バックエンド サービスベースの外部パススルー ネットワーク ロードバランサを作成するように GKE に指示します。IPv6 や重み付けロード バランシングなどの機能をサポートするには、バックエンド サービスベースの外部パススルー ネットワーク ロードバランサが必要です。

    • GKE は、クラスタのバージョンに応じて、GCE_VM_IP NEG バックエンドまたは非マネージド インスタンス グループ バックエンドを使用します。バージョン 1.32.2-gke.1652000 のクラスタでは、バックエンド サービスベースの外部パススルー ネットワーク ロードバランサは GCE_VM_IP NEG を使用します。以前のバージョンでは、バックエンド サービスベースの外部パススルー ネットワーク ロードバランサは非マネージド インスタンス グループを使用します。

    • cloud.google.com/l4-rbs: "enabled" アノテーションを既存の外部 LoadBalancer Service のマニフェストに追加した場合(つまり、ロードバランサの作成後)、GKE はアノテーションを無視します。マニフェストにこのアノテーションがない状態で作成された外部 LoadBalancer Service は、ターゲット プールベースの外部パススルー ネットワーク ロードバランサを使用します。ターゲット プールベースの外部パススルー ネットワーク ロードバランサの使用はおすすめしません。

重み付きロード バランシングを有効にする

各ノードに存在するサービング Pod、準備完了 Pod、終了していない Pod の数に基づいて、新しい接続をノードに比例して分散するには、Service マニフェストに networking.gke.io/weighted-load-balancing: "pods-per-node" アノテーションを追加して、重み付けロード バランシングを有効にします。

  1. networking.gke.io/weighted-load-balancing: "pods-per-node" アノテーションを store-v1-lb-svc.yaml Service マニフェストに追加し、次のように externalTrafficPolicy: Local も設定します。

    apiVersion: v1
    kind: Service
    metadata:
      name: store-v1-lb-svc
      annotations:
        cloud.google.com/l4-rbs: "enabled"
        networking.gke.io/weighted-load-balancing: "pods-per-node"
    spec:
      type: LoadBalancer
      externalTrafficPolicy: Local
      selector:
        app: store
      ports:
      - name: tcp-port
        protocol: TCP
        port: 8080
        targetPort: 8080
    
  2. マニフェストをクラスタに適用します。

    kubectl apply -f store-v1-lb-svc.yaml
    

重み付きロード バランシングに関するこの例については、次の点に注意してください。

  • Service マニフェストは externalTrafficPolicy: Local を使用します。重み付きロード バランシングを有効にする必要がない場合は、externalTrafficPolicy: Cluster を使用することもできます。externalTrafficPolicy がノードグループを定義する方法、どのノードがロードバランサのヘルスチェックに合格するのか、パケットの処理方法の詳細については、LoadBalancer Service のコンセプトをご覧ください。

  • 重み付けロード バランシングを有効にしても、GKE で externalTrafficPolicy: Cluster を使用できないわけではありませんが、externalTrafficPolicy: Cluster ではロードバランサの後にパケットが別のノードに転送される可能性があるため、重み付けロード バランシングが事実上無効になります。

kubectl edit svc service-name を使用して、既存の外部 LoadBalancer Service で重み付けされたロード バランシングを有効にすることもできます。kubectl edit コマンドを使用すると、構成したテキスト エディタで既存のロードバランサの Service マニフェストが開きます。ここで、マニフェストを変更して保存できます。既存の外部 LoadBalancer Service を編集する場合は、次の点に注意してください。

  • 既存の外部 LoadBalancer Service によって、バックエンド サービスベースの外部パススルー ネットワーク ロードバランサが作成されている必要があります。つまり、マニフェストがクラスタに最初に適用されたときに、既存の外部 LoadBalancer Service に cloud.google.com/l4-rbs: "enabled" アノテーションが含まれている必要があります。

    ターゲット プールベースの外部パススルー ネットワーク ロードバランサを使用する既存の外部 LoadBalancer Service に networking.gke.io/weighted-load-balancing: "pods-per-node" アノテーションを追加しても効果はありません。

  • 既存の外部 LoadBalancer Service マニフェストを更新する場合は、externalTrafficPolicy: Local を設定してください。externalTrafficPolicy: Cluster を使用すると、パケットがロードバランサの後に別のノードに転送される可能性があるため、重み付けロード バランシングが無効になります。

重み付きロード バランシングを無効にする

各ノードに存在するサービング Pod の数に関係なく、新しい接続をノードに分散するには、Service マニフェストから networking.gke.io/weighted-load-balancing: "pods-per-node" アノテーションを削除して、重み付けロード バランシングを無効にします。

外部 LoadBalancer Service とそのコンポーネントを確認する

  1. Service が実行されていることを確認します。

    kubectl get svc store-v1-lb-svc
    

    出力は次のようになります。

    NAME               TYPE           CLUSTER-IP        EXTERNAL-IP     PORT(S)          AGE
    store-v1-lb-svc   LoadBalancer   10.44.196.160     35.193.28.231   8080:32466/TCP   11m
    

    GKE は、外部パススルー ネットワーク ロードバランサの EXTERNAL_IP を割り当てました。

  2. ロードバランサへの接続をテストします。

    curl EXTERNAL_IP:PORT
    

    次のように置き換えます。

    • EXTERNAL_IP: 外部パススルー ネットワーク ロードバランサに割り振られた IP アドレス。
    • PORT: 外部パススルー ネットワーク ロードバランサに割り当てられたポート番号。

    出力は次のようになります。

    Hostname: store-v1-lb-svc-cdb9bb4d6-hflxd
    
    Pod Information:
      -no pod information available-
    
    Server values:
      server_version=nginx: 1.13.3 - lua: 10008
    
    Request Information:
      client_address=10.128.0.50
      method=GET
      real path=/
      query=
      request_version=1.1
      request_scheme=http
      request_uri=EXTERNAL_IP
    
    Request Headers:
      accept=*/*
      host=EXTERNAL_IP
      user-agent=curl/7.81.0
    
    Request Body:
      -no body in request-
    
    
  3. LoadBalancer Service と、Google Cloud リソースを記述する一連のアノテーションを確認します。

    kubectl describe svc store-v1-lb-svc
    

    出力は次のようになります。

    Name:                     my-service-external
    Namespace:                default
    Labels:                   <none>
    Annotations:              cloud.google.com/l4-rbs: enabled
                              cloud.google.com/neg-status: {"network_endpoint_groups":{"0":"k8s2-qvveq1d8-default-my-service-ext-5s55db85"},"zones":["us-central1-c"]} #This annotation appears in the output only if the service uses NEG backends.
                              networking.gke.io/weighted-load-balancing: pods-per-node #This annotation appears in the output only if weighted load balancing is enabled.
                              service.kubernetes.io/backend-service: k8s2-qvveq1d8-default-my-service-ext-5s55db85
                              service.kubernetes.io/firewall-rule: k8s2-qvveq1d8-default-my-service-ext-5s55db85
                              service.kubernetes.io/firewall-rule-for-hc: k8s2-qvveq1d8-default-my-service-ext-5s55db85-fw
                              service.kubernetes.io/healthcheck: k8s2-qvveq1d8-default-my-service-ext-5s55db85
                              service.kubernetes.io/tcp-forwarding-rule: a808124abf8ce406ca51ab3d4e7d0b7d
    Selector:                 app=my-app
    Type:                     LoadBalancer
    IP Family Policy:         SingleStack
    IP Families:              IPv4
    IP:                       10.18.102.23
    IPs:                      10.18.102.23
    LoadBalancer Ingress:     35.184.160.229
    Port:                     tcp-port  8080/TCP
    TargetPort:               8080/TCP
    NodePort:                 tcp-port  31864/TCP
    Endpoints:                10.20.1.28:8080,10.20.1.29:8080
    Session Affinity:         None
    External Traffic Policy:  Local
    HealthCheck NodePort:     30394
    
    Events:
      Type    Reason                Age                    From                     Message
      ----    ------                ----                   ----                     -------
      Normal  ADD                   4m55s                  loadbalancer-controller  default/my-service-ext
    

    バックエンド サービスベースの外部パススルー ネットワーク ロードバランサとその Google Cloud リソースが正常に作成されたことを示すフィールドがいくつかあります。

    • Events フィールド。LoadBalancer Service とそのリソースが正常に作成された場合、このフィールドは空になります。エラーが発生した場合は、ここに表示されます。
    • Annotations のリストが有効: GKE は、読み取り専用アノテーションの次のリストを Service マニフェストに追加します。名前が service.kubernetes.io/ で始まる各アノテーションは、ロードバランサの一部として作成された、またはロードバランサをサポートするGoogle Cloud リソースの名前を示すために使用されます。

      • networking.gke.io/weighted-load-balancing: pods-per-node アノテーションは、重み付きロード バランシングが適用され、ロードバランサが各ノードで実行されている Pod の数に基づいてバックエンド Pod にトラフィックを分散することを示します。
      • service.kubernetes.io/backend-service アノテーションは、ロードバランサのバックエンド サービスの名前を示します。
      • service.kubernetes.io/healthcheck アノテーションは、バックエンド サービスによって使用されるロードバランサのヘルスチェックの名前を示します。
      • service.kubernetes.io/tcp-forwarding-rule アノテーションまたは service.kubernetes.io/udp-forwarding-rule アノテーションは、ロードバランサの転送ルールの名前を示します。
      • service.kubernetes.io/firewall-rule アノテーションは、クラスタノードへのトラフィックを許可するために作成されたファイアウォール ルールの名前を示します。このファイアウォール ルールのソース範囲は、spec.loadBalancerSourceRanges[] を使用してカスタマイズできます。LoadBalancer Service のファイアウォール ルールの詳細については、ファイアウォール ルールと送信元 IP アドレスの許可リストをご覧ください。
      • service.kubernetes.io/firewall-rule-for-hc アノテーションは、ロードバランサのヘルスチェックに必要なファイアウォール ルールの名前を示します。
      • cloud.google.com/neg-status アノテーションは、ロードバランサで使用される NEG とそのゾーンの両方を示します。このアノテーションは、以下の両方の条件を満たす場合にのみ存在します。

        • マニフェストがクラスタに適用されたときに、クラスタは GKE バージョン 1.32.2-gke.1652000 以降を実行していた。
        • クラスタに適用されたときに、Service マニフェストに cloud.google.com/l4-rbs: "enabled" アノテーションが存在していた。
  4. 外部 LoadBalancer Service のロードバランサ リソースとファイアウォール ルールが作成されていることを確認します。

    • 転送ルールを表示するには、次のコマンドを実行します。

        gcloud compute forwarding-rules describe FWD_RULE_NAME \
          --region=REGION_NAME
      

      次のように置き換えます。

      • FWD_RULE_NAME: 読み取り専用アノテーション service.kubernetes.io/tcp-forwarding-rule または service.kubernetes.io/udp-forwarding-rule によって提供される転送ルール名。これらのアノテーションを確認するには、kubectl describe svc SERVICE_NAME を実行します。
      • REGION_NAME: クラスタを含む Google Cloud リージョン。ゾーンクラスタの場合、リージョンにはクラスタが使用するゾーンが含まれています。
    • バックエンド サービスを表示するには、次のコマンドを実行します。

      gcloud compute backend-services describe BACKEND_SERVICE_NAME \
        --region=REGION_NAME
      

      次のように置き換えます。

      • BACKEND_SERVICE_NAME: service.kubernetes.io/backend-service 読み取り専用アノテーションによって提供されるバックエンド サービスの名前。この読み取り専用アノテーションを確認するには、kubectl describe svc SERVICE_NAME を実行します。
      • REGION_NAME: クラスタを含む Google Cloud リージョン。ゾーンクラスタの場合、リージョンにはクラスタが使用するゾーンが含まれています。
    • ロードバランサのヘルスチェックを表示するには、次のコマンドを実行します。

      gcloud compute health-checks describe HEALTH_CHECK_NAME \
        --region=REGION_NAME
      

      次のように置き換えます。

      • HEALTH_CHECK_NAME: ロードバランサのヘルスチェック名。ヘルスチェックの名前は、service.kubernetes.io/healthcheck 読み取り専用アノテーションによって提供されます。この読み取り専用アノテーションを確認するには、kubectl describe svc SERVICE_NAME を実行します。
      • REGION_NAME: クラスタを含む Google Cloud リージョン。ゾーンクラスタの場合、リージョンにはクラスタが使用するゾーンが含まれています。
    • ファイアウォール ルールを表示するには、次のコマンドを実行します。

      gcloud compute firewall-rules describe FIREWALL_RULE_NAME \
      gcloud compute firewall-rules describe HEALTH_CHECK_FIREWALL_RULE_NAME
      

      次のように置き換えます。

      • FIREWALL_RULE_NAME: ロードバランサへのトラフィックを許可するファイアウォール ルールの名前。このファイアウォール ルールの名前は、service.kubernetes.io/firewall-rule 読み取り専用アノテーションによって提供されます。この読み取り専用アノテーションを確認するには、kubectl describe svc SERVICE_NAME を実行します。
      • HEALTH_CHECK_FIREWALL_RULE_NAME: ロードバランサのバックエンド(クラスタのノード)のヘルスチェックを許可するファイアウォール ルールの名前。このファイアウォール ルールの名前は、service.kubernetes.io/firewall-rule-for-hc 読み取り専用アノテーションによって提供されます。この読み取り専用アノテーションを確認するには、kubectl describe svc SERVICE_NAME を実行します。
    • ロードバランサの NEG を確認するには、次のコマンドを実行します。

      gcloud compute network-endpoint-groups describe NEG_NAME \
        --zone=ZONE_NAME
      

      次のように置き換えます。

      • NEG_NAME: ロードバランサの NEG 名。NEG の名前は、cloud.google.com/neg-status 読み取り専用アノテーションによって提供されます。この読み取り専用アノテーションを確認するには、kubectl describe svc SERVICE_NAME コマンドを実行します。アノテーションには、ロードバランサで使用される NEG 名とゾーンに関する情報を含む構造化データが含まれています。ゾーンクラスタの場合、このアノテーションには 1 つの NEG に関する情報が含まれます。リージョン クラスタの場合、このアノテーションには、クラスタが配置されている各ゾーンの NEG に関する情報が含まれます。
      • ZONE_NAME: NEG を含む Google Cloud ゾーン。

外部 LoadBalancer Service を削除する

サンプルの store-v1-lb-svc 外部 LoadBalancer Service を削除するには、次のコマンドを使用します。

kubectl delete service store-v1-lb-svc

GKE は、外部 LoadBalancer Service 用に作成したすべてのロードバランサ リソースを自動的に削除します。

GCE_VM_IP NEG バックエンドに移行する

cloud.google.com/l4-rbs: "enabled" アノテーションを持つ外部 LoadBalancer Service は、クラスタの GKE バージョンに応じて、GCE_VM_IP ネットワーク エンドポイント グループまたはインスタンス グループ バックエンドを使用するバックエンド サービスベースの外部パススルー ネットワーク ロードバランサを作成します。

  • Service マニフェストが GKE バージョン 1.32.2-gke.1652000 以降を実行しているクラスタに適用された場合、作成される外部パススルー ネットワーク ロードバランサは GCE_VM_IP ネットワーク エンドポイント グループ(NEG)バックエンドを使用します。

  • Service マニフェストが以前の GKE バージョンを実行しているクラスタに適用された場合、作成される外部パススルー ネットワーク ロードバランサは非マネージド インスタンス グループのバックエンドを使用します。

詳しくは、LoadBalancer Service の概要のノードのグループ化をご覧ください。

既存の Service が次のいずれかのロードバランサを使用している場合は、GCE_VM_IP NEG バックエンドを使用するバックエンド サービスベースの外部パススルー ネットワーク ロードバランサを利用する新しい外部 LoadBalancer Service を作成できます。

  • インスタンス グループ バックエンドを使用するバックエンド サービスベースの外部パススルー ネットワーク ロードバランサ
  • ターゲット プール ベースの外部パススルー ネットワーク ロードバランサ

GCE_VM_IP NEG バックエンドを使用するバックエンド サービスベースの外部パススルー ネットワーク ロードバランサに切り替えるには:

  1. まだの場合は、クラスタを GKE バージョン 1.32.2-gke.1652000 以降にアップグレードします。

  2. GCE_VM_IP NEG バックエンドを使用するバックエンド サービスベースの外部パススルー ネットワーク ロードバランサに切り替える外部 LoadBalancer Service を特定します。次のコマンドを使用して Service の説明を取得します。

    kubectl describe svc SERVICE_NAME -n SERVICE_NAMESPACE
    

    次のように置き換えます。

    • SERVICE_NAME: 既存の外部 LoadBalancer Service の名前。

    • SERVICE_NAMESPACE: 既存の外部 LoadBalancer Service の名前空間。

    コマンド出力の EXTERNAL-IP 列で、既存のロードバランサで使用されている外部 IPv4 アドレスをメモします。

  3. 既存の LoadBalancer Service の Service マニフェストを取得します。

    • 過去にクラスタに適用した元の Service マニフェストがある場合は、そのマニフェストを使用することをおすすめします。たとえば、ソース管理リポジトリにこのマニフェストが存在する場合があります。

    • 元の Service マニフェストがない場合は、次の手順で作成します。

      • 次のコマンドを実行して、ロードバランサの現在の実装を表す Service マニフェストの YAML コピーを取得します。

        kubectl get svc SERVICE_NAME -n SERVICE_NAMESPACE -o yaml
        
      • マニフェスト YAML をテキスト エディタにコピーします。status 属性と次の metadata 属性を削除します。

        • 以下のすべてのアノテーションが対象です。
          • kubectl.kubernetes.io/last-applied-configuration アノテーション
          • service.kubernetes.io で始まるすべてのアノテーション
        • creationTimestamp
        • finalizers
        • resourceVersion
        • uid
    • マニフェストに cloud.google.com/l4-rbs: "enabled" アノテーションが含まれていることを確認します。ターゲット プール ベースの外部パススルー ネットワーク ロードバランサから移行する場合は、アノテーションを追加する必要があります。

    Service マニフェスト ファイルを含むローカルパスをメモします。この手順の残りの部分では、パスを MANIFEST_FILE_PATH とします。

  4. 既存のロードバランサで使用される外部 IPv4 アドレスを保持するように、静的外部 IPv4 アドレス リソースを構成します。

    gcloud compute addresses create IP_ADDRESS_NAME --region=CLUSTER_REGION --addresses LB_EXTERNAL_IP
    

    次のように置き換えます。

    • IP_ADDRESS_NAME: 静的な外部 IP アドレスの名前。名前は、Compute Engine リソースの命名規則に沿ったものである必要があります。

    • CLUSTER_REGION: クラスタが含まれるリージョン。ゾーンクラスタの場合、これはクラスタのゾーンを含むリージョンにします。

    • LB_EXTERNAL_IP: 現在のロードバランサが使用する外部 IPv4 アドレス。この手順の 2 番目の手順で決定します。

  5. 静的な外部 IPv4 アドレスを持つリソースが作成されたことを確認します。

    gcloud compute addresses describe IP_ADDRESS_NAME --region=CLUSTER_REGION
    

    前の手順で説明したように変数を置き換えます。

  6. 既存の Service を削除します。

    kubectl delete svc SERVICE_NAME -n SERVICE_NAMESPACE
    
  7. Service マニフェスト ファイル MANIFEST_FILE_PATH に次のアノテーションを追加します。

    networking.gke.io/load-balancer-ip-addresses: IP_ADDRESS_NAME
    

    このアノテーションの詳細については、LoadBalancer Service パラメータの静的 IP アドレスをご覧ください。

  8. 更新された Service マニフェストをクラスタに適用します。

    kubectl apply -f MANIFEST_FILE_PATH
    
  9. (省略可)静的 IPv4 アドレス リソースを解放します。

    gcloud compute addresses delete IP_ADDRESS_NAME --region=CLUSTER_REGION
    

トラブルシューティング

このセクションでは、重み付きロード バランシングを構成する際に発生する可能性のある問題について説明します。

重み付けロード バランシングの間違った外部トラフィック ポリシー

重み付きロード バランシングを有効にするときに externalTrafficPolicy: Local を設定しないと、次のコマンドを使用して Service の説明を取得するときに、警告イベントが発生することがあります。

kubectl describe svc store-v1-lb-svc`
Events:
  Type     Reason                   Age      From                     Message
  ----     ------                   ----     ----                     -------
  Warning  UnsupportedConfiguration 4m55s    loadbalancer-controller  Weighted load balancing by pods-per-node has no effect with External Traffic Policy: Cluster.

重み付きロード バランシングを有効にするには、externalTrafficPolicy: Local を設定する必要があります。

次のステップ