Crie um balanceador de carga externo baseado em serviços de back-end

Esta página mostra como implementar um serviço LoadBalancer externo que cria um balanceador de carga de rede de passagem externo baseado em serviços de back-end. Antes de ler esta página, certifique-se de que conhece o seguinte:

Para saber mais sobre os balanceadores de carga de rede de encaminhamento externo em geral, consulte o artigo Balanceador de carga de rede de encaminhamento externo baseado em serviço de back-end.

Antes de começar

Antes de começar, certifique-se de que realizou as seguintes tarefas:

  • Ative a API Google Kubernetes Engine.
  • Ative a API Google Kubernetes Engine
  • Se quiser usar a CLI gcloud para esta tarefa, instale-a e, em seguida, inicialize-a. Se instalou anteriormente a CLI gcloud, execute gcloud components update para obter a versão mais recente.

Requisitos

  • O suplemento HttpLoadBalancing tem de estar ativado no seu cluster. Este suplemento está ativado por predefinição. Permite que o cluster faça a gestão dos balanceadores de carga que usam serviços de back-end.

  • Para criar um serviço LoadBalancer externo que use um balanceador de carga de rede de passagem externo baseado num serviço de back-end, o cluster do GKE tem de usar a versão 1.25.5 ou posterior.

  • Para criar um serviço LoadBalancer externo que use o equilíbrio de carga ponderado, o seu cluster do GKE tem de usar a versão 1.31.0-gke.1506000 ou posterior.

  • Para criar um serviço LoadBalancer externo que use back-ends de GCE_VM_IPgrupo de pontos finais de rede (NEG), o cluster do GKE tem de usar a versão 1.32.2-gke.1652000 ou posterior.

Escolha um cluster

Pode criar um novo cluster ou escolher um cluster existente que cumpra os requisitos.

Crie um novo cluster

Autopilot

Para criar um novo cluster do Autopilot:

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

Substitua o seguinte:

Para desativar a criação automática de regras de firewall da VPC para serviços LoadBalancer, inclua a flag --disable-l4-lb-firewall-reconciliation. Para mais informações, consulte o artigo Regras de firewall geridas pelo utilizador para serviços LoadBalancer do GKE.

Padrão

Para criar um novo cluster padrão:

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

Substitua o seguinte:

Para desativar a criação automática de regras de firewall da VPC para serviços LoadBalancer, inclua a flag --disable-l4-lb-firewall-reconciliation. Para mais informações, consulte o artigo Regras de firewall geridas pelo utilizador para serviços LoadBalancer do GKE.

Atualize um cluster existente

Use a CLI gcloud para atualizar um cluster existente:

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

Substitua o seguinte:

  • CLUSTER_NAME: o nome do cluster existente.
  • VERSION: a versão específica do GKE para a qual quer atualizar o cluster. Para mais informações, consulte o artigo Atualizar manualmente o plano de controlo.
  • COMPUTE_LOCATION: a região do Compute Engine do cluster.

Para desativar a criação automática de regras de firewall da VPC para serviços LoadBalancer, inclua a flag --disable-l4-lb-firewall-reconciliation. Para mais informações, consulte o artigo Regras de firewall geridas pelo utilizador para serviços LoadBalancer do GKE.

Implemente uma carga de trabalho de exemplo

Implemente a seguinte carga de trabalho de exemplo que fornece os pods de publicação para o serviço LoadBalancer externo.

  1. Guarde a seguinte implementação de exemplo como 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. Aplique o manifesto ao cluster:

    kubectl apply -f store-deployment.yaml
    
  3. Verifique se existem 20 pods de publicação para a implementação:

    kubectl get pods
    

    O resultado é semelhante ao seguinte:

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

Crie o serviço LoadBalancer externo

  1. Exponha a carga de trabalho de exemplo criando um serviço LoadBalancer externo.

    1. Guarde o seguinte manifesto de serviço como 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. Aplique o manifesto ao cluster:

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

    Tenha em atenção os seguintes pontos acerca deste manifesto de exemplo:

    • O manifesto do serviço tem de incluir a anotação cloud.google.com/l4-rbs: "enabled" no momento em que o manifesto é aplicado pela primeira vez ao cluster. Isto indica ao GKE que crie um balanceador de carga de rede de passagem externo com base num serviço de back-end. Os balanceadores de carga de rede de encaminhamento externo baseados em serviços de back-end são necessários para suportar funcionalidades como IPv6 e balanceamento de carga ponderado.

    • O GKE usa back-ends de NEG ou back-ends de grupos de instâncias não geridos, consoante a versão do cluster.GCE_VM_IP Nos clusters com a versão 1.32.2-gke.1652000, o Network Load Balancer de encaminhamento externo baseado em serviços de back-end usa GCE_VM_IP NEGs. Nas versões anteriores, o Network Load Balancer de encaminhamento externo baseado em serviços usa grupos de instâncias não geridos.

    • Se adicionar a anotação cloud.google.com/l4-rbs: "enabled" ao manifesto de um serviço LoadBalancer externo existente (ou seja, depois de o balanceador de carga ter sido criado), o GKE ignora a anotação. Os serviços External LoadBalancer criados sem esta anotação nos respetivos manifestos usam equilibradores de carga de rede de passagem externos baseados em conjunto de destino. A utilização de balanceadores de carga de encaminhamento externo baseados em pool alvo não é recomendada.

Ative o balanceamento de carga ponderado

Para distribuir novas ligações proporcionalmente aos nós com base no número de pods de publicação, prontos e não terminados presentes em cada nó, ative o equilíbrio de carga ponderado adicionando a anotação networking.gke.io/weighted-load-balancing: "pods-per-node" ao manifesto do serviço.

  1. Adicione a anotação networking.gke.io/weighted-load-balancing: "pods-per-node" ao manifesto do serviço e certifique-se de que também define o externalTrafficPolicy: Local para que fique assim:store-v1-lb-svc.yaml

    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. Aplique o manifesto ao cluster:

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

Tenha em atenção o seguinte acerca deste exemplo sobre o balanceamento de carga ponderado:

  • O manifesto do serviço usa externalTrafficPolicy: Local. Se não precisar de ativar o equilíbrio de carga ponderado, também pode usar externalTrafficPolicy: Cluster. Para ver detalhes sobre como o externalTrafficPolicy define o agrupamento de nós, que nós passam nas respetivas verificações de funcionamento do balanceador de carga e como os pacotes são processados, consulte os conceitos do serviço LoadBalancer.

  • Se ativar o equilíbrio de carga ponderado, o GKE não impede a utilização de externalTrafficPolicy: Cluster, mas externalTrafficPolicy: Cluster desativa efetivamente o equilíbrio de carga ponderado porque o pacote pode ser encaminhado, após o equilibrador de carga, para um nó diferente.

Também pode ativar o balanceamento de carga ponderado num LoadBalancer Service externo existente através de kubectl edit svc service-name. O comando kubectl edit abre o manifesto do serviço do equilibrador de carga existente no editor de texto configurado, onde pode modificar o manifesto e guardar as alterações. Quando edita um serviço LoadBalancer externo existente, tenha em atenção os seguintes pontos:

  • O serviço LoadBalancer externo existente tem de ter resultado na criação de balanceadores de carga de rede de passagem externos baseados em serviços de back-end. Isto significa que o serviço LoadBalancer externo tem de ter incluído a anotação cloud.google.com/l4-rbs: "enabled" quando o manifesto foi aplicado pela primeira vez ao cluster.

    Adicionar a anotação networking.gke.io/weighted-load-balancing: "pods-per-node" a um serviço LoadBalancer externo existente que usa um Network Load Balancer de encaminhamento externo baseado em target pool não tem efeito.

  • Quando atualizar o manifesto do serviço LoadBalancer externo existente, certifique-se de que define externalTrafficPolicy: Local. A utilização de externalTrafficPolicy: Cluster desativa eficazmente o equilíbrio de carga ponderado porque o pacote pode ser encaminhado, após o equilibrador de carga, para um nó diferente.

Desative o equilíbrio de carga ponderado

Para distribuir novas ligações aos nós, independentemente do número de pods de publicação presentes em cada nó, desative o equilíbrio de carga ponderado removendo a anotação networking.gke.io/weighted-load-balancing: "pods-per-node" do manifesto do serviço.

Valide o serviço LoadBalancer externo e os respetivos componentes

  1. Verifique se o serviço está em execução:

    kubectl get svc store-v1-lb-svc
    

    O resultado é semelhante ao seguinte:

    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
    

    O GKE atribuiu um EXTERNAL_IP para o balanceador de carga de rede de encaminhamento externo.

  2. Teste a ligação ao balanceador de carga:

    curl EXTERNAL_IP:PORT
    

    Substitua o seguinte:

    • EXTERNAL_IP: o endereço IP atribuído ao balanceador de carga de rede de encaminhamento externo.
    • PORT: o número da porta atribuído para o balanceador de carga de rede de passagem externa.

    O resultado é semelhante ao seguinte:

    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. Verifique o serviço LoadBalancer e o respetivo conjunto de anotações que descrevem os respetivos Trusted Cloud recursos:

    kubectl describe svc store-v1-lb-svc
    

    O resultado é semelhante ao seguinte:

    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
    

    Existem vários campos que indicam que um balanceador de carga de rede de encaminhamento externo baseado em serviços de back-end e os respetivos recursos foram criados com êxito: Trusted Cloud

    • Events. Este campo está vazio quando o serviço LoadBalancer e os respetivos recursos foram criados com êxito. Se ocorreu um erro, este é apresentado aqui.
    • Lista de Annotations ativada: o GKE adiciona a seguinte lista de anotações de leitura ao manifesto do serviço. Cada anotação cujo nome começa com service.kubernetes.io/ é usada para indicar o nome de um recursoTrusted Cloud criado como parte do balanceador de carga ou para o suportar.

      • A anotação networking.gke.io/weighted-load-balancing: pods-per-node indica que foi aplicado o balanceamento de carga ponderado e que o balanceador de carga distribui o tráfego para os pods de back-end com base no número de pods em execução em cada nó.
      • A anotação service.kubernetes.io/backend-service indica o nome do serviço de back-end do balanceador de carga.
      • A anotação service.kubernetes.io/healthcheck indica o nome da verificação de estado do balanceador de carga usada pelo serviço de back-end.
      • A anotação service.kubernetes.io/tcp-forwarding-rule ou service.kubernetes.io/udp-forwarding-rule indica o nome da regra de encaminhamento do balanceador de carga.
      • A anotação service.kubernetes.io/firewall-rule indica o nome da regra de firewall criada para permitir o tráfego para os nós do cluster. Os intervalos de origem desta regra de firewall são personalizáveis através de spec.loadBalancerSourceRanges[]. Para ver detalhes adicionais sobre as regras de firewall para serviços LoadBalancer, consulte o artigo Regras de firewall e lista de autorizações de endereços IP de origem.
      • A anotação service.kubernetes.io/firewall-rule-for-hc indica o nome da regra da firewall necessária para as verificações de funcionamento do balanceador de carga.
      • A anotação cloud.google.com/neg-status indica os NEGs usados pelo equilibrador de carga e as respetivas zonas. Esta anotação só está presente quando ambas as seguintes condições são verdadeiras:

        • O cluster estava a executar a versão 1.32.2-gke.1652000 ou posterior do GKE quando o manifesto foi aplicado ao cluster e
        • A anotação cloud.google.com/l4-rbs: "enabled" estava presente no manifesto do serviço quando foi aplicada ao cluster.
  4. Verifique se os recursos do balanceador de carga e as regras da firewall foram criados para o serviço LoadBalancer externo:

    • Para ver a regra de encaminhamento, execute o seguinte comando:

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

      Substitua o seguinte:

      • FWD_RULE_NAME: o nome da regra de encaminhamento fornecido pelas anotações só de leitura service.kubernetes.io/tcp-forwarding-rule ou service.kubernetes.io/udp-forwarding-rule. Para verificar estas anotações, execute kubectl describe svc SERVICE_NAME.
      • REGION_NAME: a Trusted Cloud região que contém o cluster. Para clusters zonais, a região contém a zona usada pelo cluster.
    • Para ver o serviço de back-end, execute o seguinte comando:

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

      Substitua o seguinte:

      • BACKEND_SERVICE_NAME: o nome do serviço de back-end fornecido pela anotação service.kubernetes.io/backend-service só de leitura. Para verificar esta anotação só de leitura, execute kubectl describe svc SERVICE_NAME.
      • REGION_NAME: a Trusted Cloud região que contém o cluster. Para clusters zonais, a região contém a zona usada pelo cluster.
    • Para ver a verificação de funcionamento do balanceador de carga, execute o seguinte comando:

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

      Substitua o seguinte:

      • HEALTH_CHECK_NAME: o nome da verificação do estado do balanceador de carga. O nome da verificação de funcionamento é fornecido pela anotação de só de leitura service.kubernetes.io/healthcheck. Para verificar esta anotação de só de leitura, execute kubectl describe svc SERVICE_NAME.
      • REGION_NAME: a Trusted Cloud região que contém o cluster. Para clusters zonais, a região contém a zona usada pelo cluster.
    • Para ver as regras de firewall, execute os seguintes comandos:

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

      Substitua o seguinte:

      • FIREWALL_RULE_NAME: o nome da regra de firewall que permite o tráfego para o balanceador de carga. O nome desta regra de firewall é fornecido pela anotação service.kubernetes.io/firewall-rule só de leitura. Para verificar esta anotação só de leitura, execute kubectl describe svc SERVICE_NAME.
      • HEALTH_CHECK_FIREWALL_RULE_NAME: o nome da regra de firewall que permite verificações de funcionamento dos back-ends do balanceador de carga (os nós do cluster). O nome desta regra de firewall é fornecido pela anotação só de leitura service.kubernetes.io/firewall-rule-for-hc. Para verificar esta anotação só de leitura, execute kubectl describe svc SERVICE_NAME.
    • Para ver os NEGs do balanceador de carga, execute o seguinte comando:

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

      Substitua o seguinte:

      • NEG_NAME: o nome do NEG do balanceador de carga. O nome do NEG é fornecido pela anotação cloud.google.com/neg-status só de leitura. Para verificar esta anotação só de leitura, execute o comando kubectl describe svc SERVICE_NAME. A anotação contém dados estruturados com informações sobre os nomes e as zonas dos NEG que são usados pelo equilibrador de carga. Para clusters zonais, esta anotação contém informações sobre um NEG. Para clusters regionais, esta anotação contém informações sobre um NEG em cada zona em que o cluster está localizado.
      • ZONE_NAME: a zona Trusted Cloud que contém o NEG.

Elimine o serviço LoadBalancer externo

Para eliminar o exemplo de serviço store-v1-lb-svc externo LoadBalancer, use o seguinte comando:

kubectl delete service store-v1-lb-svc

O GKE remove automaticamente todos os recursos do balanceador de carga que criou para o serviço LoadBalancer externo.

Migre para back-ends do NEG GCE_VM_IP

Os serviços External LoadBalancer com a anotação cloud.google.com/l4-rbs: "enabled" criam balanceadores de carga de rede de passagem externos baseados em serviços de back-end que usam grupos de pontos finais da rede ou back-ends de grupos de instâncias, GCE_VM_IP consoante a versão do GKE do cluster:

  • Se o manifesto do serviço foi aplicado a um cluster que executa o GKE versão 1.32.2-gke.1652000 ou posterior, o Network Load Balancer de passagem externo resultante usa back-ends do GCE_VM_IP grupo de pontos finais de rede (NEG).

  • Se o manifesto do serviço foi aplicado a um cluster que executa uma versão anterior do GKE, o Network Load Balancer de passagem externo resultante usa back-ends de grupos de instâncias não geridos.

Para mais informações, consulte a secção Agrupamento de nós no artigo Acerca dos serviços LoadBalancer.

Pode criar um novo serviço LoadBalancer externo com tecnologia de um balanceador de carga de rede de passagem externo baseado em serviços de back-end que usa back-ends de GCE_VM_IP NEG se o seu serviço existente usar um dos seguintes balanceadores de carga:

  • Um Network Load Balancer de encaminhamento externo baseado em serviços de back-end com back-ends de grupos de instâncias
  • Um Network Load Balancer de encaminhamento externo baseado em grupo de destino

Para mudar para um Network Load Balancer de encaminhamento externo baseado em serviços de back-end que use back-ends de GCE_VM_IPNEG:

  1. Se ainda não o fez, atualize o cluster para a versão 1.32.2-gke.1652000 ou posterior do GKE.

  2. Identifique o serviço LoadBalancer externo para o qual quer mudar um Network Load Balancer de encaminhamento externo baseado em serviço de back-end com GCE_VM_IP back-ends de NEG. Descreva o serviço através do seguinte comando:

    kubectl describe svc SERVICE_NAME -n SERVICE_NAMESPACE
    

    Substitua o seguinte:

    • SERVICE_NAME: o nome do serviço LoadBalancer externo existente.

    • SERVICE_NAMESPACE: o espaço de nomes do serviço LoadBalancer externo existente.

    Na saída do comando, tome nota do endereço IPv4 externo usado pelo equilibrador de carga existente na coluna EXTERNAL-IP.

  3. Recupere o manifesto do serviço para o serviço LoadBalancer existente:

    • É recomendável ter o manifesto do serviço original que aplicou ao cluster no passado. Por exemplo, pode ter isto num repositório de controlo de origem.

    • Se não tiver o manifesto do serviço original:

      • Execute o seguinte comando para obter uma cópia YAML do manifesto do serviço que representa a implementação atual do equilibrador de carga:

        kubectl get svc SERVICE_NAME -n SERVICE_NAMESPACE -o yaml
        
      • Copie o YAML do manifesto para um editor de texto. Remova o atributo status e os seguintes atributos metadata:

        • Todas as seguintes anotações:
          • A anotação kubectl.kubernetes.io/last-applied-configuration
          • Todas as anotações que começam com service.kubernetes.io
        • creationTimestamp
        • finalizers
        • resourceVersion
        • uid
    • Certifique-se de que o manifesto inclui a anotação cloud.google.com/l4-rbs: "enabled". Se estiver a migrar de um Network Load Balancer de encaminhamento externo baseado em conjunto de destino, tem de adicionar a anotação.

    Tenha em atenção o caminho local que contém o ficheiro do manifesto do serviço. O resto deste procedimento refere-se ao caminho como MANIFEST_FILE_PATH.

  4. Configure um recurso de endereço IPv4 externo estático para conter o endereço IPv4 externo usado pelo equilibrador de carga existente:

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

    Substitua o seguinte:

    • IP_ADDRESS_NAME: o nome do endereço IP externo estático. O nome tem de estar em conformidade com as convenções de nomenclatura para recursos do Compute Engine.

    • CLUSTER_REGION: a região que contém o cluster. Para clusters zonais, esta é a região que contém a zona do cluster.

    • LB_EXTERNAL_IP: o endereço IPv4 externo usado pelo balanceador de carga atual, determinado no segundo passo deste procedimento.

  5. Verifique se o recurso de endereço IPv4 externo estático foi criado:

    gcloud compute addresses describe IP_ADDRESS_NAME --region=CLUSTER_REGION
    

    Substitua as variáveis conforme indicado no passo anterior.

  6. Elimine o serviço existente:

    kubectl delete svc SERVICE_NAME -n SERVICE_NAMESPACE
    
  7. Adicione a seguinte anotação ao ficheiro do manifesto MANIFEST_FILE_PATH Service:

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

    Para mais informações sobre esta anotação, consulte o artigo Endereços IP estáticos nos parâmetros do serviço LoadBalancer.

  8. Aplique o manifesto de serviço atualizado ao cluster:

    kubectl apply -f MANIFEST_FILE_PATH
    
  9. (Opcional) Liberte o recurso de endereço IPv4 estático.

    gcloud compute addresses delete IP_ADDRESS_NAME --region=CLUSTER_REGION
    

Resolver problemas

Esta secção descreve um problema que pode encontrar quando configura o equilíbrio de carga ponderado.

Política de tráfego externo incorreta para o balanceamento de carga ponderado

Se não definir externalTrafficPolicy: Local quando ativa o equilíbrio de carga ponderado, pode receber um evento de aviso quando descreve o serviço através do seguinte comando:

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.

Para ativar eficazmente o balanceamento de carga ponderado, tem de definir externalTrafficPolicy: Local.

O que se segue?