En esta página se explica cómo desplegar un servicio LoadBalancer externo que crea un balanceador de carga de red de paso a través externo basado en un servicio de backend. Antes de leer esta página, asegúrate de que conoces los siguientes conceptos:
Para obtener más información sobre los balanceadores de carga de red de paso a través externos en general, consulta Balanceador de carga de red de paso a través externo basado en el servicio de backend.
Antes de empezar
Antes de empezar, asegúrate de que has realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando
gcloud components update
.
Requisitos
El complemento
HttpLoadBalancing
debe estar habilitado en tu clúster. Este complemento está habilitado de forma predeterminada. Permite que el clúster gestione los balanceadores de carga que usan servicios de backend.Para crear un servicio LoadBalancer externo que use un balanceador de carga de red de paso a través externo basado en un servicio de backend, tu clúster de GKE debe usar la versión 1.25.5 o una posterior.
Para crear un servicio LoadBalancer externo que use el balanceo de carga ponderado, tu clúster de GKE debe usar la versión 1.31.0-gke.1506000 o una posterior.
Para crear un servicio LoadBalancer externo que utilice back-ends de
GCE_VM_IP
grupos de puntos finales de red (NEG), tu clúster de GKE debe usar la versión 1.32.2-gke.1652000 o una posterior.
Elegir un clúster
Puedes crear un clúster o elegir uno que ya tengas y que cumpla los requisitos.
Crear una agrupación
Autopilot
Para crear un clúster de Autopilot, sigue estos pasos:
gcloud container clusters create-auto CLUSTER_NAME \
--release-channel=RELEASE_CHANNEL \
--cluster-version=VERSION \
--location=COMPUTE_LOCATION
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del nuevo clúster.RELEASE_CHANNEL
: el nombre del canal de lanzamiento de GKE del clúster.VERSION
: la versión de GKE del clúster.COMPUTE_LOCATION
: la región de Compute Engine del clúster.
Para inhabilitar la creación automática de reglas de cortafuegos de VPC para los servicios LoadBalancer, incluye la marca --disable-l4-lb-firewall-reconciliation
. Para obtener más información, consulta Reglas de cortafuegos gestionadas por el usuario para servicios LoadBalancer de GKE.
Estándar
Para crear un clúster estándar, sigue estos pasos:
gcloud container clusters create CLUSTER_NAME \
--release-channel=RELEASE_CHANNEL \
--cluster-version=VERSION \
--location=COMPUTE_LOCATION
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del nuevo clúster.RELEASE_CHANNEL
: el nombre del canal de lanzamiento de GKE del clúster.VERSION
: la versión de GKE del clúster.COMPUTE_LOCATION
: la región de Compute Engine del clúster.
Para inhabilitar la creación automática de reglas de cortafuegos de VPC para los servicios LoadBalancer, incluye la marca --disable-l4-lb-firewall-reconciliation
. Para obtener más información, consulta Reglas de cortafuegos gestionadas por el usuario para servicios LoadBalancer de GKE.
Actualizar un clúster
Usa la CLI de gcloud para actualizar un clúster:
gcloud container clusters upgrade CLUSTER_NAME \
--cluster-version=VERSION \
--master \
--location=COMPUTE_LOCATION
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.VERSION
: la versión específica de GKE a la que quieres actualizar tu clúster. Para obtener más información, consulta Actualizar manualmente el plano de control.COMPUTE_LOCATION
: la región de Compute Engine del clúster.
Para inhabilitar la creación automática de reglas de cortafuegos de VPC para los servicios LoadBalancer, incluye la marca --disable-l4-lb-firewall-reconciliation
. Para obtener más información, consulta Reglas de cortafuegos gestionadas por el usuario para servicios LoadBalancer de GKE.
Desplegar una carga de trabajo de ejemplo
Implementa la siguiente carga de trabajo de ejemplo, que proporciona los pods de servicio del servicio LoadBalancer externo.
Guarda el siguiente ejemplo de Deployment 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
Aplica el manifiesto al clúster:
kubectl apply -f store-deployment.yaml
Comprueba que haya 20 pods de servicio para la implementación:
kubectl get pods
El resultado debería ser similar al siguiente:
NAME READY STATUS RESTARTS AGE store-cdb9bb4d6-s25vw 1/1 Running 0 10s store-cdb9bb4d6-vck6s 1/1 Running 0 10s ....
Crear el servicio LoadBalancer externo
Expón la carga de trabajo de ejemplo creando un servicio LoadBalancer externo.
Guarda el siguiente manifiesto de servicio 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
Aplica el manifiesto al clúster:
kubectl apply -f store-v1-lb-svc.yaml
Ten en cuenta los siguientes aspectos sobre este archivo de manifiesto de ejemplo:
El manifiesto de servicio debe incluir la anotación
cloud.google.com/l4-rbs: "enabled"
cuando se aplique por primera vez al clúster. De esta forma, se indica a GKE que cree un balanceador de carga de red de paso a través externo basado en un servicio de backend. Los balanceadores de carga de red de paso a través externos basados en el servicio de backend son obligatorios para admitir funciones como IPv6 y el balanceo de carga ponderado.GKE usa backends de NEG
GCE_VM_IP
o backends de grupos de instancias no gestionados, según la versión del clúster. En los clústeres con la versión 1.32.2-gke.1652000, el balanceador de carga de red de paso a través externo basado en el servicio de backend usaGCE_VM_IP
NEG. En versiones anteriores, el balanceador de carga de red de paso a través externo basado en servicios de backend usa grupos de instancias sin gestionar.Si añades la anotación
cloud.google.com/l4-rbs: "enabled"
al manifiesto de un servicio de balanceador de carga externo ya creado (es decir, después de que se haya creado el balanceador de carga), GKE ignorará la anotación. Los servicios de tipo LoadBalancer externos creados sin esta anotación en sus manifiestos usan balanceadores de carga de red de paso a través externos basados en grupos de destino. No se recomienda usar balanceadores de carga de red de paso a través externos basados en grupos de destino.
Habilitar el balanceo de carga ponderado
Para distribuir las nuevas conexiones de forma proporcional a los nodos en función del número de pods activos, listos y no finalizados que haya en cada nodo, habilita el balanceo de carga ponderado añadiendo la anotación networking.gke.io/weighted-load-balancing:
"pods-per-node"
al manifiesto del servicio.
Añade la anotación
networking.gke.io/weighted-load-balancing: "pods-per-node"
al manifiesto destore-v1-lb-svc.yaml
Service y asegúrate de que también has definidoexternalTrafficPolicy: Local
para que quede así: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
Aplica el manifiesto al clúster:
kubectl apply -f store-v1-lb-svc.yaml
Ten en cuenta lo siguiente sobre este ejemplo de balanceo de carga ponderado:
El manifiesto del servicio usa
externalTrafficPolicy: Local
. Si no necesitas habilitar el balanceo de carga ponderado, también puedes usarexternalTrafficPolicy: Cluster
. Para obtener información sobre cómo defineexternalTrafficPolicy
la agrupación de nodos, qué nodos superan las comprobaciones de estado del balanceador de carga y cómo se procesan los paquetes, consulta Conceptos del servicio LoadBalancer.Si habilitas el balanceo de carga ponderado, GKE no te impedirá usar
externalTrafficPolicy: Cluster
, peroexternalTrafficPolicy: Cluster
inhabilita de forma efectiva el balanceo de carga ponderado porque el paquete se puede enrutar, después del balanceador de carga, a un nodo diferente.
También puedes habilitar el balanceo de carga ponderado en un servicio LoadBalancer externo que ya tengas mediante kubectl edit svc service-name
. El comando kubectl edit
abre el manifiesto de servicio del balanceador de carga en el editor de texto que hayas configurado, donde puedes modificar el manifiesto y guardar los cambios.
Cuando edites un servicio LoadBalancer externo, ten en cuenta lo siguiente:
El servicio LoadBalancer externo debe haber creado un balanceador de carga de red de paso a través externo basado en el servicio de backend. Esto significa que el servicio LoadBalancer externo debe haber incluido la anotación
cloud.google.com/l4-rbs: "enabled"
cuando el manifiesto se aplicó por primera vez al clúster.Añadir la anotación
networking.gke.io/weighted-load-balancing: "pods-per-node"
a un servicio LoadBalancer externo que use un balanceador de carga de red de paso a través externo basado en un grupo de destino no tiene ningún efecto.Cuando actualices el manifiesto de servicio LoadBalancer externo, asegúrate de definir
externalTrafficPolicy: Local
. Si se usaexternalTrafficPolicy: Cluster
, se inhabilita el balanceo de carga ponderado, ya que el paquete se puede enrutar, después del balanceador de carga, a un nodo diferente.
Inhabilitar el balanceo de carga ponderado
Para distribuir las nuevas conexiones a los nodos independientemente del número de pods de servicio que haya en cada nodo, inhabilita el balanceo de carga ponderado quitando la anotación networking.gke.io/weighted-load-balancing: "pods-per-node"
del manifiesto de servicio.
Verificar el servicio LoadBalancer externo y sus componentes
Comprueba que tu servicio se esté ejecutando:
kubectl get svc store-v1-lb-svc
El resultado debería ser similar al siguiente:
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 ha asignado un
EXTERNAL_IP
al balanceador de carga de red de paso a través externo.Prueba a conectarte al balanceador de carga:
curl EXTERNAL_IP:PORT
Haz los cambios siguientes:
EXTERNAL_IP
: la dirección IP asignada al balanceador de carga de red de paso a través externo.PORT
: número de puerto asignado al balanceador de carga de red de paso a través externo.
El resultado debería ser similar al siguiente:
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-
Comprueba tu servicio LoadBalancer y su conjunto de anotaciones que describen sus Google Cloud recursos:
kubectl describe svc store-v1-lb-svc
El resultado debería ser similar al siguiente:
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
Hay varios campos que indican que se han creado correctamente un balanceador de carga de red de paso a través externo basado en un servicio de backend y sus recursos de Google Cloud :
- Campo
Events
. Este campo está vacío cuando el servicio LoadBalancer y sus recursos se han creado correctamente. Si se ha producido un error, se mostrará en esta sección. Lista de
Annotations
habilitados: GKE añade la siguiente lista de anotaciones de solo lectura al manifiesto de Service. Cada anotación cuyo nombre empiece porservice.kubernetes.io/
se usa para indicar el nombre de unGoogle Cloud recurso creado como parte del balanceador de carga o para admitirlo.- La anotación
networking.gke.io/weighted-load-balancing: pods-per-node
indica que se ha aplicado el balanceo de carga ponderado y que el balanceador de carga distribuye el tráfico a los pods de backend en función del número de pods que se ejecutan en cada nodo. - La anotación
service.kubernetes.io/backend-service
indica el nombre del servicio de backend del balanceador de carga. - La anotación
service.kubernetes.io/healthcheck
indica el nombre de la comprobación del estado del balanceador de carga que utiliza el servicio de backend. - La anotación
service.kubernetes.io/tcp-forwarding-rule
oservice.kubernetes.io/udp-forwarding-rule
indica el nombre de la regla de reenvío del balanceador de carga. - La anotación
service.kubernetes.io/firewall-rule
indica el nombre de la regla de cortafuegos creada para permitir el tráfico a los nodos del clúster. Los intervalos de origen de esta regla de cortafuegos se pueden personalizar conspec.loadBalancerSourceRanges[]
. Para obtener más información sobre las reglas de cortafuegos de los servicios LoadBalancer, consulta Reglas de cortafuegos y lista de permitidos de direcciones IP de origen. - La anotación
service.kubernetes.io/firewall-rule-for-hc
indica el nombre de la regla de cortafuegos necesaria para las comprobaciones del estado del balanceador de carga. La anotación
cloud.google.com/neg-status
indica tanto los NEG que utiliza el balanceador de carga como sus zonas. Esta anotación solo está presente cuando se cumplen estas dos condiciones:- El clúster ejecutaba la versión 1.32.2-gke.1652000 de GKE o una posterior cuando se aplicó el manifiesto al clúster.
- La anotación
cloud.google.com/l4-rbs: "enabled"
estaba presente en el manifiesto de Service cuando se aplicó al clúster.
- La anotación
- Campo
Verifica que se hayan creado recursos de balanceador de carga y reglas de cortafuegos para el servicio LoadBalancer externo:
Para ver la regla de reenvío, ejecuta el siguiente comando:
gcloud compute forwarding-rules describe FWD_RULE_NAME \ --region=REGION_NAME
Haz los cambios siguientes:
FWD_RULE_NAME
: el nombre de la regla de reenvío proporcionado por las anotaciones de solo lecturaservice.kubernetes.io/tcp-forwarding-rule
oservice.kubernetes.io/udp-forwarding-rule
. Para consultar estas anotaciones, ejecutakubectl describe svc SERVICE_NAME
.REGION_NAME
: la Google Cloud región que contiene el clúster. En el caso de los clústeres zonales, la región contiene la zona que usa el clúster.
Para ver el servicio de backend, ejecuta el siguiente comando:
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --region=REGION_NAME
Haz los cambios siguientes:
BACKEND_SERVICE_NAME
: el nombre del servicio backend proporcionado por la anotaciónservice.kubernetes.io/backend-service
de solo lectura. Para comprobar esta anotación de solo lectura, ejecutakubectl describe svc SERVICE_NAME
.REGION_NAME
: la Google Cloud región que contiene el clúster. En el caso de los clústeres zonales, la región contiene la zona que usa el clúster.
Para ver la comprobación del estado del balanceador de carga, ejecuta el siguiente comando:
gcloud compute health-checks describe HEALTH_CHECK_NAME \ --region=REGION_NAME
Haz los cambios siguientes:
HEALTH_CHECK_NAME
: el nombre de la comprobación de estado del balanceador de carga. El nombre de la comprobación del estado se proporciona mediante la anotación de solo lecturaservice.kubernetes.io/healthcheck
. Para comprobar esta anotación de solo lectura, ejecutakubectl describe svc SERVICE_NAME
.REGION_NAME
: la Google Cloud región que contiene el clúster. En el caso de los clústeres zonales, la región contiene la zona que usa el clúster.
Para ver las reglas de cortafuegos, ejecuta los siguientes comandos:
gcloud compute firewall-rules describe FIREWALL_RULE_NAME \ gcloud compute firewall-rules describe HEALTH_CHECK_FIREWALL_RULE_NAME
Haz los cambios siguientes:
FIREWALL_RULE_NAME
: el nombre de la regla de firewall que permite el tráfico al balanceador de carga. El nombre de esta regla de firewall se proporciona mediante la anotaciónservice.kubernetes.io/firewall-rule
de solo lectura. Para comprobar esta anotación de solo lectura, ejecutakubectl describe svc SERVICE_NAME
.HEALTH_CHECK_FIREWALL_RULE_NAME
: el nombre de la regla de cortafuegos que permite las comprobaciones de estado de los backends del balanceador de carga (los nodos del clúster). El nombre de esta regla de cortafuegos se proporciona mediante la anotación de solo lecturaservice.kubernetes.io/firewall-rule-for-hc
. Para comprobar esta anotación de solo lectura, ejecutakubectl describe svc SERVICE_NAME
.
Para ver los NEG del balanceador de carga, ejecuta el siguiente comando:
gcloud compute network-endpoint-groups describe NEG_NAME \ --zone=ZONE_NAME
Haz los cambios siguientes:
NEG_NAME
: el nombre del NEG del balanceador de carga. El nombre del NEG se proporciona mediante la anotacióncloud.google.com/neg-status
de solo lectura. Para comprobar esta anotación de solo lectura, ejecuta el comandokubectl describe svc SERVICE_NAME
. La anotación contiene datos estructurados con información sobre los nombres y las zonas de los NEG que utiliza el balanceador de carga. En el caso de los clústeres zonales, esta anotación contiene información sobre un NEG. En el caso de los clústeres regionales, esta anotación contiene información sobre un NEG de cada zona en la que se encuentra el clúster.ZONE_NAME
: la zona Google Cloud que contiene el NEG.
Elimina el servicio LoadBalancer externo.
Para eliminar el servicio store-v1-lb-svc
de LoadBalancer externo de ejemplo, usa el siguiente comando:
kubectl delete service store-v1-lb-svc
GKE elimina automáticamente todos los recursos del balanceador de carga que haya creado para el servicio LoadBalancer externo.
Migrar a backends de NEG de GCE_VM_IP
Los servicios LoadBalancer externos con la anotación cloud.google.com/l4-rbs: "enabled"
crean balanceadores de carga de red de paso a través externos basados en servicios de backend que usan backends de grupos de puntos finales de red o de grupos de instancias, según la versión de GKE del clúster:GCE_VM_IP
Si el manifiesto de Service se ha aplicado a un clúster que ejecuta la versión 1.32.2-gke.1652000 o posterior de GKE, el balanceador de carga de red de pases externo resultante utiliza
GCE_VM_IP
backends de grupos de puntos finales de red (NEG).Si el manifiesto de Service se ha aplicado a un clúster que ejecuta una versión anterior de GKE, el balanceador de carga de red de pases externo resultante utiliza backends de grupos de instancias no gestionados.
Para obtener más información, consulta la sección Agrupación de nodos del artículo sobre los servicios LoadBalancer.
Puedes crear un servicio LoadBalancer externo basado en un balanceador de carga de red de paso a través externo basado en un servicio de backend que utilice GCE_VM_IP
backends de NEG si tu servicio utiliza uno de los siguientes balanceadores de carga:
- Un balanceador de carga de red de paso a través externo basado en servicios de backend con backends de grupos de instancias
- Un balanceador de carga de red de paso a través externo basado en grupos de destino
Para cambiar a un balanceador de carga de red de paso a través externo basado en un servicio de backend que use GCE_VM_IP
backends de NEG:
Si aún no lo has hecho, actualiza tu clúster a la versión 1.32.2-gke.1652000 de GKE o una posterior.
Identifica el servicio LoadBalancer externo al que quieres cambiar a un balanceador de carga de red de paso a través externo basado en un servicio de backend que use backends de
GCE_VM_IP
NEG. Describe el servicio con el siguiente comando:kubectl describe svc SERVICE_NAME -n SERVICE_NAMESPACE
Haz los cambios siguientes:
SERVICE_NAME
: el nombre del servicio LoadBalancer externo.SERVICE_NAMESPACE
: el espacio de nombres del servicio LoadBalancer externo.
En la salida del comando, anota la dirección IPv4 externa que usa el balanceador de carga en la columna
EXTERNAL-IP
.Recupera el manifiesto de servicio del servicio LoadBalancer:
Lo mejor es que tengas el manifiesto de servicio original que aplicaste al clúster en el pasado. Por ejemplo, puedes tenerlo en un repositorio de control de versiones.
Si no tienes el manifiesto de servicio original, haz lo siguiente:
Ejecuta el siguiente comando para obtener una copia YAML del manifiesto de Service que representa la implementación actual del balanceador de carga:
kubectl get svc SERVICE_NAME -n SERVICE_NAMESPACE -o yaml
Copia el archivo YAML de manifiesto en un editor de texto. Elimina el atributo
status
y los siguientes atributosmetadata
:- Todas las anotaciones siguientes:
- Anotación
kubectl.kubernetes.io/last-applied-configuration
- Todas las anotaciones que empiezan por
service.kubernetes.io
- Anotación
creationTimestamp
finalizers
resourceVersion
uid
- Todas las anotaciones siguientes:
Asegúrate de que el archivo de manifiesto incluya la
cloud.google.com/l4-rbs: "enabled"
anotación. Si vas a migrar desde un balanceador de carga de red de paso a través externo basado en un grupo de destino, debes añadir la anotación.
Anota la ruta local que contiene el archivo de manifiesto de servicio. En el resto de este procedimiento, se hace referencia a la ruta como MANIFEST_FILE_PATH.
Configura un recurso de dirección IPv4 externa estática para que contenga la dirección IPv4 externa que usa el balanceador de carga:
gcloud compute addresses create IP_ADDRESS_NAME --region=CLUSTER_REGION --addresses LB_EXTERNAL_IP
Haz los cambios siguientes:
IP_ADDRESS_NAME
: el nombre de la dirección IP externa estática. El nombre debe cumplir las convenciones de nomenclatura de los recursos de Compute Engine.CLUSTER_REGION
: la región que contiene el clúster. En el caso de los clústeres zonales, se trata de la región que contiene la zona del clúster.LB_EXTERNAL_IP
: la dirección IPv4 externa que usa el balanceador de carga actual, determinada en el segundo paso de este procedimiento.
Verifica que se haya creado el recurso de dirección IPv4 externa estática:
gcloud compute addresses describe IP_ADDRESS_NAME --region=CLUSTER_REGION
Sustituye las variables como se indica en el paso anterior.
Elimina el servicio que ya tienes:
kubectl delete svc SERVICE_NAME -n SERVICE_NAMESPACE
Añade la siguiente anotación al archivo de manifiesto
MANIFEST_FILE_PATH
Service:networking.gke.io/load-balancer-ip-addresses: IP_ADDRESS_NAME
Para obtener más información sobre esta anotación, consulta Direcciones IP estáticas en los parámetros del servicio LoadBalancer.
Aplica el manifiesto de servicio actualizado al clúster:
kubectl apply -f MANIFEST_FILE_PATH
(Opcional) Libera el recurso de dirección IPv4 estática.
gcloud compute addresses delete IP_ADDRESS_NAME --region=CLUSTER_REGION
Solucionar problemas
En esta sección se describe un problema que puede surgir al configurar el balanceo de carga ponderado.
Política de tráfico externo incorrecta para el balanceo de carga ponderado
Si no defines externalTrafficPolicy: Local
al habilitar el balanceo de carga ponderado, es posible que recibas un evento de advertencia al describir el servicio con el siguiente 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 habilitar el balanceo de carga ponderado de forma eficaz, debes definir externalTrafficPolicy: Local
.
Siguientes pasos
- Para obtener una descripción general de los servicios de balanceadores de carga, consulta Servicios de balanceadores de carga.
- Para ver una descripción de los parámetros de los servicios de balanceadores de carga, consulta Parámetros de los servicios de balanceadores de carga.
- Soluciona problemas de balanceo de carga en GKE.