Questa pagina mostra come eseguire il deployment di un servizio LoadBalancer esterno che crea un bilanciatore del carico di rete passthrough esterno basato su un servizio di backend. Prima di leggere questa pagina, assicurati di avere familiarità con quanto segue:
Per saperne di più sui bilanciatori del carico di rete passthrough esterni in generale, consulta Bilanciatore del carico di rete passthrough esterno basato sui servizi di backend.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installala e poi
inizializza
gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima versione
eseguendo
gcloud components update
.
Requisiti
Il componente aggiuntivo
HttpLoadBalancing
deve essere abilitato nel cluster. Questo componente aggiuntivo è attivato per impostazione predefinita. Consente al cluster di gestire i bilanciatori del carico che utilizzano servizi di backend.Per creare un servizio LoadBalancer esterno che utilizzi un bilanciatore del carico di rete passthrough esterno basato su un servizio di backend, il cluster GKE deve utilizzare la versione 1.25.5 o successive.
Per creare un servizio LoadBalancer esterno che utilizzi il bilanciamento del carico ponderato, il cluster GKE deve utilizzare la versione 1.31.0-gke.1506000 o successive.
Per creare un servizio LoadBalancer esterno che utilizza i backend del gruppo di endpoint di rete (NEG)
GCE_VM_IP
, il cluster GKE deve utilizzare la versione 1.32.2-gke.1652000 o successive.
Scegli un cluster
Puoi creare un nuovo cluster o sceglierne uno esistente che soddisfi i requisiti.
Crea un nuovo cluster
Autopilot
Per creare un nuovo cluster Autopilot:
gcloud container clusters create-auto CLUSTER_NAME \
--release-channel=RELEASE_CHANNEL \
--cluster-version=VERSION \
--location=COMPUTE_LOCATION
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del nuovo cluster.RELEASE_CHANNEL
: il nome del canale di rilascio GKE per il cluster.VERSION
: la versione di GKE per il cluster.COMPUTE_LOCATION
: la regione Compute Engine del cluster.
Per disabilitare la creazione automatica delle regole firewall VPC per
i servizi LoadBalancer, includi il flag --disable-l4-lb-firewall-reconciliation
. Per saperne di più, consulta Regole firewall gestite dall'utente per i servizi GKE
LoadBalancer.
Standard
Per creare un nuovo cluster standard:
gcloud container clusters create CLUSTER_NAME \
--release-channel=RELEASE_CHANNEL \
--cluster-version=VERSION \
--location=COMPUTE_LOCATION
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del nuovo cluster.RELEASE_CHANNEL
: il nome del canale di rilascio GKE per il cluster.VERSION
: la versione di GKE per il cluster.COMPUTE_LOCATION
: la regione Compute Engine del cluster.
Per disabilitare la creazione automatica delle regole firewall VPC per
i servizi LoadBalancer, includi il flag --disable-l4-lb-firewall-reconciliation
. Per saperne di più, consulta Regole firewall gestite dall'utente per i servizi GKE
LoadBalancer.
Esegui l'upgrade di un cluster esistente
Utilizza gcloud CLI per aggiornare un cluster esistente:
gcloud container clusters upgrade CLUSTER_NAME \
--cluster-version=VERSION \
--master \
--location=COMPUTE_LOCATION
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster esistente.VERSION
: la versione specifica di GKE a cui vuoi eseguire l'upgrade del cluster. Per maggiori informazioni, consulta Eseguire l'upgrade manuale del control plane.COMPUTE_LOCATION
: la regione Compute Engine del cluster.
Per disabilitare la creazione automatica delle regole firewall VPC per
i servizi LoadBalancer, includi il flag --disable-l4-lb-firewall-reconciliation
. Per saperne di più, consulta Regole firewall gestite dall'utente per i servizi GKE
LoadBalancer.
Esegui il deployment di un carico di lavoro di esempio
Esegui il deployment del seguente carico di lavoro di esempio che fornisce i pod di servizio per il servizio LoadBalancer esterno.
Salva il seguente esempio di deployment come
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
Applica il manifest al cluster:
kubectl apply -f store-deployment.yaml
Verifica che siano presenti 20 pod di pubblicazione per il deployment:
kubectl get pods
L'output è simile al seguente:
NAME READY STATUS RESTARTS AGE store-cdb9bb4d6-s25vw 1/1 Running 0 10s store-cdb9bb4d6-vck6s 1/1 Running 0 10s ....
Crea il servizio LoadBalancer esterno
Esporre il carico di lavoro di esempio creando un servizio LoadBalancer esterno.
Salva il seguente manifest del servizio come
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
Applica il manifest al cluster:
kubectl apply -f store-v1-lb-svc.yaml
Tieni presente quanto segue in merito a questo manifest di esempio:
Il manifest del servizio deve includere l'annotazione
cloud.google.com/l4-rbs: "enabled"
al momento della prima applicazione del manifest al cluster. In questo modo, GKE crea un bilanciatore del carico di rete passthrough esterno basato su un servizio di backend. I bilanciatori del carico di rete passthrough esterni basati sui servizi di backend sono obbligatori per supportare funzionalità come IPv6 e il bilanciamento del carico ponderato.GKE utilizza backend NEG
GCE_VM_IP
o backend di gruppi di istanze non gestiti, a seconda della versione del cluster. Nei cluster con la versione 1.32.2-gke.1652000, il bilanciatore del carico di rete passthrough esterno basato sul servizio di backend utilizza i NEGGCE_VM_IP
. Nelle versioni precedenti, il bilanciatore del carico di rete passthrough esterno basato sul servizio di backend utilizza gruppi di istanze non gestiti.Se aggiungi l'annotazione
cloud.google.com/l4-rbs: "enabled"
al manifest di un servizio LoadBalancer esterno esistente (ovvero dopo la creazione del bilanciatore del carico), GKE ignora l'annotazione. I servizi LoadBalancer esterni creati senza questa annotazione nei relativi manifest utilizzano bilanciatori del carico di rete passthrough esterni basati su pool di destinazione. L'utilizzo di bilanciatori del carico di rete passthrough esterni basati su pool di destinazione è sconsigliato.
Abilitare il bilanciamento del carico ponderato
Per distribuire le nuove connessioni in modo proporzionale ai nodi in base al numero di pod di gestione, pronti e non terminati presenti su ciascun nodo, attiva il bilanciamento del carico ponderato aggiungendo l'annotazione networking.gke.io/weighted-load-balancing:
"pods-per-node"
al manifest del servizio.
Aggiungi l'annotazione
networking.gke.io/weighted-load-balancing: "pods-per-node"
al manifest del serviziostore-v1-lb-svc.yaml
e assicurati di impostare ancheexternalTrafficPolicy: Local
in modo che risulti come segue: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
Applica il manifest al cluster:
kubectl apply -f store-v1-lb-svc.yaml
Tieni presente quanto segue in merito a questo esempio di bilanciamento del carico ponderato:
Il manifest del servizio utilizza
externalTrafficPolicy: Local
. Se non devi abilitare il bilanciamento del carico ponderato, puoi anche utilizzareexternalTrafficPolicy: Cluster
. Per informazioni dettagliate su comeexternalTrafficPolicy
definisce il raggruppamento dei nodi, quali nodi superano i controlli di integrità del bilanciatore del carico e come vengono elaborati i pacchetti, consulta Concetti del servizio LoadBalancer.Se abiliti il bilanciamento del carico ponderato, GKE non ti impedisce di utilizzare
externalTrafficPolicy: Cluster
, maexternalTrafficPolicy: Cluster
disabilita effettivamente il bilanciamento del carico ponderato perché il pacchetto potrebbe essere instradato, dopo il bilanciatore del carico, a un nodo diverso.
Puoi anche abilitare il bilanciamento del carico ponderato su un servizio LoadBalancer
esterno esistente utilizzando kubectl edit svc service-name
. Il comando
kubectl edit
apre il manifest del servizio del bilanciamento del carico esistente nell'editor di testo configurato, dove puoi modificare il manifest e salvare le modifiche.
Quando modifichi un servizio LoadBalancer esterno esistente, tieni presente quanto segue:
Il servizio LoadBalancer esterno esistente deve aver comportato la creazione di bilanciatori del carico di rete passthrough esterni basati suiservizio di backendd. Ciò significa che il servizio LoadBalancer esterno esistente deve aver incluso l'annotazione
cloud.google.com/l4-rbs: "enabled"
quando il manifest è stato applicato per la prima volta al cluster.L'aggiunta dell'annotazione
networking.gke.io/weighted-load-balancing: "pods-per-node"
a un servizio LoadBalancer esterno esistente che utilizza un bilanciatore del carico di rete passthrough esterno basato su pool di destinazione non ha alcun effetto.Quando aggiorni il manifest del servizio LoadBalancer esterno esistente, assicurati di impostare
externalTrafficPolicy: Local
. L'utilizzo diexternalTrafficPolicy: Cluster
disabilita di fatto il bilanciamento del carico ponderato perché il pacchetto potrebbe essere indirizzato, dopo il bilanciatore del carico, a un nodo diverso.
Disabilita il bilanciamento del carico ponderato
Per distribuire nuove connessioni ai nodi indipendentemente dal numero di pod di gestione presenti su ciascun nodo, disattiva il bilanciamento del carico ponderato rimuovendo l'annotazione networking.gke.io/weighted-load-balancing: "pods-per-node"
dal manifest del servizio.
Verifica il servizio LoadBalancer esterno e i relativi componenti
Verifica che il servizio sia in esecuzione:
kubectl get svc store-v1-lb-svc
L'output è simile al seguente:
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 assegnato un
EXTERNAL_IP
per il bilanciatore del carico di rete passthrough esterno.Testa la connessione al bilanciatore del carico:
curl EXTERNAL_IP:PORT
Sostituisci quanto segue:
EXTERNAL_IP
: l'indirizzo IP allocato per il bilanciatore del carico di rete passthrough esterno.PORT
: il numero di porta allocato per il bilanciatore del carico di rete passthrough esterno.
L'output è simile al seguente:
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-
Controlla il servizio LoadBalancer e il relativo insieme di annotazioni che descrivono le relative risorseGoogle Cloud :
kubectl describe svc store-v1-lb-svc
L'output è simile al seguente:
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
Esistono diversi campi che indicano che un bilanciatore del carico di rete passthrough esterno basato sui servizio di backend e le relative risorse sono stati creati correttamente: Google Cloud
- Campo
Events
. Questo campo è vuoto quando il servizio LoadBalancer e le relative risorse sono stati creati correttamente. Se si è verificato un errore, viene elencato qui. Elenco di
Annotations
abilitati: GKE aggiunge il seguente elenco di annotazioni di sola lettura al manifest del servizio. Ogni annotazione il cui nome inizia conservice.kubernetes.io/
viene utilizzata per indicare il nome di una risorsaGoogle Cloud creata nell'ambito del bilanciatore del carico o per supportarlo.- L'annotazione
networking.gke.io/weighted-load-balancing: pods-per-node
indica che è stato applicato il bilanciamento del carico ponderato e che il bilanciatore del carico distribuisce il traffico ai pod di backend in base al numero di pod in esecuzione su ciascun nodo. - L'annotazione
service.kubernetes.io/backend-service
indica il nome del servizio di backend del bilanciatore del carico. - L'annotazione
service.kubernetes.io/healthcheck
indica il nome del controllo di integrità del bilanciatore del carico utilizzato dal servizio di backend. - L'annotazione
service.kubernetes.io/tcp-forwarding-rule
oservice.kubernetes.io/udp-forwarding-rule
indica il nome della regola di forwarding del bilanciatore del carico. - L'annotazione
service.kubernetes.io/firewall-rule
indica il nome della regola firewall creata per consentire il traffico verso i nodi del cluster. Gli intervalli di origine per questa regola firewall sono personalizzabili utilizzandospec.loadBalancerSourceRanges[]
. Per ulteriori dettagli sulle regole firewall per i servizi LoadBalancer, vedi Regole firewall e lista consentita di indirizzi IP di origine. - L'annotazione
service.kubernetes.io/firewall-rule-for-hc
indica il nome della regola firewall richiesta per i controlli di integrità del bilanciatore del carico. L'annotazione
cloud.google.com/neg-status
indica sia i NEG utilizzati dal bilanciatore del carico sia le relative zone. Questa annotazione è presente solo se entrambe le seguenti condizioni sono vere:- Il cluster eseguiva GKE versione 1.32.2-gke.1652000 o successive quando il manifest è stato applicato al cluster e
- L'annotazione
cloud.google.com/l4-rbs: "enabled"
era presente nel manifest del servizio quando è stato applicato al cluster.
- L'annotazione
- Campo
Verifica che siano state create le risorse del bilanciatore del carico e le regole firewall per il servizio LoadBalancer esterno:
Per visualizzare la regola di forwarding, esegui questo comando:
gcloud compute forwarding-rules describe FWD_RULE_NAME \ --region=REGION_NAME
Sostituisci quanto segue:
FWD_RULE_NAME
: il nome della regola di forwarding fornito dalle annotazioni di sola letturaservice.kubernetes.io/tcp-forwarding-rule
oservice.kubernetes.io/udp-forwarding-rule
. Per controllare queste annotazioni, eseguikubectl describe svc SERVICE_NAME
.REGION_NAME
: la Google Cloud regione che contiene il cluster. Per i cluster di zona, la regione contiene la zona utilizzata dal cluster.
Per visualizzare il servizio di backend, esegui questo comando:
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --region=REGION_NAME
Sostituisci quanto segue:
BACKEND_SERVICE_NAME
: il nome del servizio di backend fornito dall'annotazione di sola letturaservice.kubernetes.io/backend-service
. Per controllare questa annotazione di sola lettura, eseguikubectl describe svc SERVICE_NAME
.REGION_NAME
: la Google Cloud regione che contiene il cluster. Per i cluster zonali, la regione contiene la zona utilizzata dal cluster.
Per visualizzare il controllo di integrità del bilanciatore del carico, esegui questo comando:
gcloud compute health-checks describe HEALTH_CHECK_NAME \ --region=REGION_NAME
Sostituisci quanto segue:
HEALTH_CHECK_NAME
: il nome del controllo di integrità del bilanciatore del carico. Il nome del controllo di integrità è fornito dall'annotazione di sola letturaservice.kubernetes.io/healthcheck
. Per controllare questa annotazione di sola lettura, eseguikubectl describe svc SERVICE_NAME
.REGION_NAME
: la Google Cloud regione che contiene il cluster. Per i cluster zonali, la regione contiene la zona utilizzata dal cluster.
Per visualizzare le regole firewall, esegui questi comandi:
gcloud compute firewall-rules describe FIREWALL_RULE_NAME \ gcloud compute firewall-rules describe HEALTH_CHECK_FIREWALL_RULE_NAME
Sostituisci quanto segue:
FIREWALL_RULE_NAME
: il nome della regola firewall che consente il traffico al bilanciatore del carico. Il nome di questa regola firewall è fornito dall'annotazione di sola letturaservice.kubernetes.io/firewall-rule
. Per controllare questa annotazione di sola lettura, eseguikubectl describe svc SERVICE_NAME
.HEALTH_CHECK_FIREWALL_RULE_NAME
: il nome della regola firewall che consente i controlli di integrità dei backend del bilanciatore del carico (i nodi del cluster). Il nome di questa regola firewall è fornito dall'annotazione di sola letturaservice.kubernetes.io/firewall-rule-for-hc
. Per controllare questa annotazione di sola lettura, eseguikubectl describe svc SERVICE_NAME
.
Per visualizzare i NEG del bilanciatore del carico, esegui questo comando:
gcloud compute network-endpoint-groups describe NEG_NAME \ --zone=ZONE_NAME
Sostituisci quanto segue:
NEG_NAME
: il nome del NEG del bilanciatore del carico. Il nome del NEG è fornito dall'annotazione di sola letturacloud.google.com/neg-status
. Per controllare questa annotazione di sola lettura, esegui il comandokubectl describe svc SERVICE_NAME
. L'annotazione contiene dati strutturati con informazioni sui nomi e sulle zone dei NEG utilizzati dal bilanciatore del carico. Per i cluster di zona, questa annotazione contiene informazioni su un NEG. Per i cluster regionali, questa annotazione contiene informazioni su un NEG in ogni zona in cui si trova il cluster.ZONE_NAME
: la Google Cloud zona che contiene il NEG.
Elimina il servizio LoadBalancer esterno
Per eliminare il servizio LoadBalancer esterno store-v1-lb-svc
di esempio, utilizza questo comando:
kubectl delete service store-v1-lb-svc
GKE rimuove automaticamente tutte le risorse del bilanciatore del carico che ha creato per il servizio LoadBalancer esterno.
Esegui la migrazione ai backend NEG GCE_VM_IP
I servizi LoadBalancer esterni con l'annotazione cloud.google.com/l4-rbs: "enabled"
creano bilanciatori del carico di rete passthrough esterni basati suservizio di backendd che utilizzano backend di gruppi di endpoint di rete o gruppi di istanze, a seconda della versione GKE del cluster:GCE_VM_IP
Se il manifest del servizio è stato applicato a un cluster che esegue GKE versione 1.32.2-gke.1652000 o successive, il bilanciatore del carico di rete passthrough esterno risultante utilizza backend del gruppo di endpoint di rete (NEG)
GCE_VM_IP
.Se il manifest del servizio è stato applicato a un cluster che esegue una versione di GKE precedente, il bilanciatore del carico di rete passthrough esterno risultante utilizza backend di gruppi di istanze non gestiti.
Per saperne di più, consulta la sezione Raggruppamento dei nodi in Informazioni sui servizi LoadBalancer.
Puoi creare un nuovo servizio LoadBalancer esterno basato su un bilanciatore del carico di rete passthrough esterno basato su un servizio di backend che utilizza backend NEG GCE_VM_IP
se il tuo servizio esistente utilizza uno dei seguenti bilanciatori del carico:
- Un bilanciatore del carico di rete passthrough esterno basato sui servizio di backend con backend di gruppi di istanze
- Un bilanciatore del carico di rete passthrough esterno basato su pool di destinazione
GCE_VM_IP
Per passare a un bilanciatore del carico di rete passthrough esterno basato sul servizio di backend utilizzando i backend GCE_VM_IP
NEG:
Se non l'hai ancora fatto, esegui l'upgrade del cluster alla versione GKE 1.32.2-gke.1652000 o successive.
Identifica il servizio LoadBalancer esterno a cui vuoi passare un bilanciatore del carico di rete passthrough esterno basato su un servizio di backend utilizzando i backend NEG
GCE_VM_IP
. Descrivi il servizio utilizzando il seguente comando:kubectl describe svc SERVICE_NAME -n SERVICE_NAMESPACE
Sostituisci quanto segue:
SERVICE_NAME
: il nome del servizio LoadBalancer esterno esistente.SERVICE_NAMESPACE
: lo spazio dei nomi del servizio LoadBalancer esterno esistente.
Nell'output del comando, prendi nota dell'indirizzo IPv4 esterno utilizzato dal bilanciatore del carico esistente nella colonna
EXTERNAL-IP
.Recupera il manifest del servizio per il servizio LoadBalancer esistente:
È meglio avere il manifest del servizio originale che hai applicato al cluster in passato. Ad esempio, potresti averlo in un repository di controllo del codice sorgente.
Se non hai il file manifest del servizio originale:
Esegui questo comando per ottenere una copia YAML del manifest del servizio che rappresenta l'implementazione attuale del bilanciatore del carico:
kubectl get svc SERVICE_NAME -n SERVICE_NAMESPACE -o yaml
Copia il manifest YAML in un editor di testo. Rimuovi l'attributo
status
e i seguenti attributimetadata
:- Tutte le seguenti annotazioni:
- L'annotazione
kubectl.kubernetes.io/last-applied-configuration
- Tutte le annotazioni che iniziano con
service.kubernetes.io
- L'annotazione
creationTimestamp
finalizers
resourceVersion
uid
- Tutte le seguenti annotazioni:
Assicurati che il manifest includa l'annotazione
cloud.google.com/l4-rbs: "enabled"
. Se esegui la migrazione dal bilanciatore del carico di rete passthrough esterno basato su pool di destinazione, è necessario aggiungere l'annotazione.
Prendi nota del percorso locale contenente il file manifest del servizio. Il resto di questa procedura fa riferimento al percorso come MANIFEST_FILE_PATH.
Configura una risorsa di indirizzo IPv4 esterno statico per contenere l'indirizzo IPv4 esterno utilizzato dal bilanciatore del carico esistente:
gcloud compute addresses create IP_ADDRESS_NAME --region=CLUSTER_REGION --addresses LB_EXTERNAL_IP
Sostituisci quanto segue:
IP_ADDRESS_NAME
: il nome dell'indirizzo IP esterno statico. Il nome deve rispettare le convenzioni di denominazione per le risorse Compute Engine.CLUSTER_REGION
: la regione che contiene il cluster. Per i cluster zonali, questa è la regione che contiene la zona del cluster.LB_EXTERNAL_IP
: l'indirizzo IPv4 esterno utilizzato dal bilanciatore del carico attuale, determinato nel secondo passaggio di questa procedura.
Verifica che la risorsa dell'indirizzo IPv4 esterno statico sia stata creata:
gcloud compute addresses describe IP_ADDRESS_NAME --region=CLUSTER_REGION
Sostituisci le variabili come indicato nel passaggio precedente.
Elimina il servizio esistente:
kubectl delete svc SERVICE_NAME -n SERVICE_NAMESPACE
Aggiungi la seguente annotazione al file manifest del servizio
MANIFEST_FILE_PATH
:networking.gke.io/load-balancer-ip-addresses: IP_ADDRESS_NAME
Per ulteriori informazioni su questa annotazione, consulta Indirizzi IP statici nei parametri del servizio LoadBalancer.
Applica il manifest del servizio aggiornato al cluster:
kubectl apply -f MANIFEST_FILE_PATH
(Facoltativo) Rilascia la risorsa indirizzo IPv4 statico.
gcloud compute addresses delete IP_ADDRESS_NAME --region=CLUSTER_REGION
Risoluzione dei problemi
Questa sezione descrive un problema che potresti riscontrare durante la configurazione del bilanciamento del carico ponderato.
Policy di traffico esterno errata per il bilanciamento del carico ponderato
Se non imposti externalTrafficPolicy: Local
quando attivi il bilanciamento del carico ponderato, potresti ricevere un evento di avviso quando descrivi il servizio utilizzando il seguente 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.
Per abilitare in modo efficace il bilanciamento del carico ponderato, devi impostare externalTrafficPolicy: Local
.
Passaggi successivi
- Per una panoramica generale dei servizi LoadBalancer, consulta Servizi LoadBalancer.
- Per una descrizione dei parametri dei servizi di bilanciamento del carico, consulta Parametri del servizio LoadBalancer.
- Risolvi i problemi di bilanciamento del carico in GKE.