Impostazione di un percorso privato Network Load Balancer for VPC
Virtual Private Cloud4.16 e versioni successive
Negli ambienti VPC completamente privati, senza accesso pubblico a Internet, è possibile utilizzare un bilanciatore di carico di rete a percorso privato per bilanciare il traffico di rete che scorre verso le applicazioni in esecuzione nei cluster VPC. Per ulteriori informazioni, consultare i casi d'uso del servizio Private Path.
Prerequisiti
-
Se non avete già un'applicazione in esecuzione, distribuite un'applicazione al vostro cluster. Assicurati di aggiungere un'etichetta nella sezione dei metadati del tuo file di configurazione della distribuzione. Questa etichetta personalizzata identifica tutti i pod su cui viene eseguita la tua applicazione per includerli nel bilanciamento del carico.
Configurazione del servizio " LoadBalancer "
-
Copiare la seguente
LoadBalancere salvarla in un file chiamatolb.yaml.apiVersion: v1 kind: Service metadata: name: <app_name>-vpc-nlb-<VPC_zone> annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name: "my-load-balancer" service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "private-path" # Required service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "private" # Required service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets: "<subnet_ID>" spec: type: LoadBalancer selector: <selector_key>: <selector_value> ports: - name: http protocol: TCP port: 8080 targetPort: 8080 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise. - name: https protocol: TCP port: 443 targetPort: 443 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise. externalTrafficPolicy: Local # Specify Local or Cluster. -
Personalizzate i campi per il vostro caso d'uso. Per un elenco completo delle annotazioni, vedere Annotazioni e specifiche.
-
Salva le tue modifiche.
-
Distribuire il servizio Load Balancer nel cluster.
oc apply -f lb.yaml
Creazione di un servizio "Private Path"
Seguite le istruzioni per creare un servizio di percorso privato.
Impostazione di un gateway endpoint privato virtuale
Ora che è stato configurato un servizio Load Balancer, è necessario impostare un Gateway Virtual Private Endpoint (VPE) per accedere alle applicazioni nel cluster.
Per ulteriori informazioni, vedere Creazione di un gateway endpoint nell'interfaccia utente.
Connessione alle app attraverso il VPE
Per informazioni sulla connessione alle applicazioni attraverso il VPE, vedere Accesso all'endpoint privato virtuale dopo la configurazione del gateway endpoint.
Annotazioni e specifiche
Esaminare le annotazioni e le specifiche VPC NLB necessarie e opzionali.
Annotazioni e specifiche richieste
externalTrafficPolicy- Specificare
LocaloCluster. - Impostare su
Localper conservare l'indirizzo IP di origine delle richieste dei client alle applicazioni. Questa impostazione impedisce l'inoltro del traffico in entrata a un altro nodo. Questa opzione configura anche i controlli di salute di HTTP. - Se
Clusterè impostato, il DSR viene implementato solo dal nodo worker a cui il VPC NLB inoltra inizialmente la richiesta in arrivo. Dopo l'arrivo della richiesta, questa viene inoltrata a un nodo worker che contiene l'app pod, che potrebbe trovarsi in una zona diversa. La risposta dell'app pod viene inviata al nodo worker originale, che utilizza DSR per inviare la risposta direttamente al client, bypassando il VPC NLB. Questa opzione configura anche i controlli di integrità di TCP.
Annotazioni e specifiche facoltative
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name- Includere un nome unico per rendere persistente il bilanciatore di carico VPC. I bilanciatori di carico VPC persistenti non vengono eliminati quando viene eliminato il cluster a cui appartengono. Per ulteriori informazioni, vedere Bilanciatori di carico VPC persistenti. Questa annotazione può essere impostata solo alla creazione del bilanciatore di carico. Non può essere utilizzato in un'operazione di aggiornamento.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-protocol- Questa annotazione imposta il protocollo di controllo dello stato di salute sulla risorsa VPC load balancer associata al servizio Kubernetes load balancer. Le opzioni disponibili sono
http,httpsotcp. Di solito, il protocollo di controllo dello stato di salute del VPC LB è determinato dal valore dell'impostazioneexternalTrafficPolicynelle specifiche del servizio di bilanciamento del carico di Kubernetes. Tuttavia, questa annotazione annulla questa logica. Questa annotazione non altera il comportamento di Kubernetes, e di kube-proxy in particolare, rispetto alle varie impostazioni diexternalTrafficPolicy. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-port- La porta dell' TCP e utilizzata per i controlli di integrità. Questa annotazione si applica solo se è specificato anche
ibm-load-balancer-cloud-provider-vpc-health-check-protocol. Se la porta TCP specificata non rientra nell'intervallo di porte dei nodi Kubernetes (30.000-32.767), è necessario modificare il gruppo di sicurezza VPC applicato ai nodi di lavoro del cluster per consentire il traffico in entrata su tale porta. Se questa annotazione viene applicata a un servizio di bilanciamento del carico di tipo " Kubernetes " associato a un VPC ALB, è necessario modificare le regole in uscita del gruppo di sicurezza assegnato al VPC ALB per consentire il traffico in uscita verso la porta TCP specificata. Per ulteriori informazioni, vedere Comprendere la rete VPC sicura per impostazione predefinita del cluster e Creare e gestire i gruppi di sicurezza VPC. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets- Annotazione per specificare quale sottorete utilizzare per assegnare gli indirizzi IP per il ppNLB. Questi indirizzi IP sono utilizzati solo internamente. Il valore può essere un ID di sottorete VPC, un nome di sottorete VPC o un CIDR di
sottorete VPC. È necessario specificare una sola sottorete. Tutto il traffico in entrata sembra provenire da questi indirizzi IP. Anche se tutti gli indirizzi sono in una singola zona, il ppNLB gestisce comunque il traffico in entrata
da tutte le zone. Se questa zona specifica viene interrotta, il traffico in entrata dalle altre zone continua a funzionare. Se non si specifica questa annotazione, la sottorete viene selezionata automaticamente e viene utilizzata la sottorete
del nodo worker del cluster che ha il maggior numero di indirizzi IP liberi. Per vedere le sottoreti in tutti i gruppi di risorse, eseguire
ibmcloud oc subnets --provider vpc-gen2 --vpc-id VPC_ID --zone ZONE. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector- Annotazione per specificare un selettore di etichetta del nodo lavoratore. È possibile configurare nodi worker specifici nel cluster per ricevere il traffico specificando le chiavi di selezione delle etichette. È possibile includere un solo
selettore di etichetta nell'annotazione e il selettore deve essere specificato nel formato
"key=value". Se questa annotazione non è specificata, tutti i nodi worker del cluster sono configurati per ricevere traffico dal VPC NLB. Questa annotazione ha la precedenza sull'annotazioneservice.kubernetes.io/ibm-load-balancer-cloud-provider-zonee qualsiasidedicated: edgeetichetta sui nodi worker viene ignorata. Per limitare il traffico a una zona specifica, si può usare questa annotazione per specificare i nodi worker in quella zona. Si noti che l'impostazione di una nuova etichetta su un nodo worker del cluster non configura automaticamente il nodo worker per ricevere il traffico; è necessario ricreare o aggiornare il VPC NLB affinché il nodo worker con la nuova etichetta riceva il traffico. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-path- Il percorso del controllo di salute URL per i controlli di salute HTTP e HTTPs. Questa annotazione si applica solo se
ibm-load-balancer-cloud-provider-vpc-health-check-protocolè impostato suhttpohttps. Il percorso URL deve essere nel formato di una richiesta di destinazione origin-form. Se questa annotazione non è specificata e l'annotazioneibm-load-balancer-cloud-provider-vpc-health-check-protocolè impostata suhttpohttps, viene applicato il valore predefinito/. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-delay- Facoltativo. Il numero di secondi da attendere tra i tentativi di controllo dello stato di salute. Per impostazione predefinita, questo valore è impostato su
5e ha un minimo di2e un massimo di60. Questo valore deve essere maggiore del valoreibm-load-balancer-cloud-provider-vpc-health-check-timeout, che è impostato su2per impostazione predefinita. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-timeout- Facoltativo. Il numero di secondi di attesa per una risposta a un controllo sanitario. Per impostazione predefinita, questo valore è impostato su
2e ha un minimo di1e un massimo di59. Questo valore deve essere inferiore aibm-load-balancer-cloud-provider-vpc-health-check-delay, che è impostato su5per impostazione predefinita. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-retries- Il numero massimo di tentativi di controllo dello stato di salute per il bilanciatore di carico VPC. Per impostazione predefinita, questo valore è impostato su
2e ha un minimo di1e un massimo di10. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-member-quota- Facoltativo. Il numero di nodi worker per zona a cui il bilanciatore di carico esegue il percorso. Il valore predefinito è 8. Nel caso di un cluster con nodi di lavoro distribuiti in tre zone, ciò comporta che il bilanciatore di carico indirizzi il traffico verso un totale di 24 nodi di lavoro. Il numero totale di nodi worker in tutte le zone verso cui il bilanciatore di carico esegue il percorso non può essere superiore a 50. Se il cluster ha meno di 50 nodi worker in tutte le zone, specificare 0 per instradare a tutti i nodi worker in una zona.
selector- La chiave dell'etichetta (
<selector_key>) e il valore (<selector_value>) che hai utilizzato nella sezione "spec.template.metadata.labels" del file YAML di distribuzione della tua app. Questa etichetta personalizzata identifica tutti i pod su cui viene eseguita la tua applicazione per includerli nel bilanciamento del carico. port- La porta su cui è in ascolto il servizio.
targetPort- Facoltativo: la porta verso cui il servizio indirizza il traffico. L'applicazione in esecuzione nel pod deve essere in ascolto del traffico in entrata proveniente dall' TCP e su questa porta di destinazione. La porta di destinazione è spesso definita staticamente nell'immagine in esecuzione nel pod dell'applicazione. La porta di destinazione configurata nel pod è diversa dalla porta del nodo per il servizio e potrebbe anche essere diversa dalla porta esterna configurata sul VPC LB.