1.29: Anteprima
1.28: Non disponibile
Questo documento mostra come eseguire la migrazione delle impostazioni di configurazione Integrazione del bilanciatore del carico BIG-IP di F5 nella modalità di bilanciamento del carico manuale per i cluster alla versione 1.29. Se la versione dei cluster è 1.30 o successiva, ti consigliamo di seguire le istruzioni Pianifica la migrazione dei cluster alle funzionalità consigliate.
L'utilizzo di F5 BIG-IP in modalità di bilanciamento del carico manuale ti offre la flessibilità di eseguire l'upgrade dei tuoi agenti F5 in modo indipendente senza influire sulla funzionalità del bilanciatore del carico F5 o dei tuoi servizi Kubernetes. Se esegui la migrazione alla configurazione manuale, puoi ottenere gli aggiornamenti direttamente da F5 per garantire prestazioni e sicurezza ottimali.
Questa migrazione è obbligatoria nelle seguenti circostanze:
Abilitare nuove funzionalità, come il piano di controllo V2, e e l'accesso a F5.
Devi avere le funzionalità fornite da una versione di Container Ingress CIS di BIG-IP Controller di servizi (CIS) successiva alla versione 1.14.
Se le circostanze precedenti non si applicano al tuo caso, puoi continuare a utilizzare la configurazione in bundle per il bilanciamento del carico F5 BIG-IP.
In ogni caso, continuiamo a supportare ufficialmente F5 come soluzione di bilanciamento del carico.
Supporto per il bilanciatore del carico F5 BIG-IP
Supportiamo l'utilizzo di F5 BIG-IP con agenti del bilanciatore del carico, che sono costituiti da due controller:
Controller F5 (prefisso pod:
load-balancer-f5
): riconciliazioniLoadBalancer
digita i servizi Kubernetes in Common Controller Core Library (CCCL) F5. ConfigMap formato.F5 BIG-IP CIS Controller v1.14 (prefisso del pod:
k8s-bigip-ctlr-deployment
): traduce i ConfigMap in configurazioni del bilanciatore del carico F5.
Questi agenti semplificano la configurazione dei bilanciatori del carico F5 all'interno
in un cluster Kubernetes. Creando un servizio di tipo LoadBalancer
, i controller configurano automaticamente il bilanciatore del carico F5 in modo da indirizzare il traffico ai nodi del cluster.
Tuttavia, la soluzione in bundle presenta alcune limitazioni:
L'espressività dell'API del servizio è limitata. Non puoi configurare il controller BIG-IP come preferisci o utilizzare le funzionalità avanzate di F5. F5 offre già un supporto migliore per l'API Service in modo nativo.
L'implementazione utilizza l'API legacy CCCL ConfigMap e 1.x CIS. Tuttavia, F5 ora fornisce l'API ConfigMap AS3 più recente e 2.x CIS.
Il controller CIS nel bundle Google Distributed Cloud è rimasto alla versione 1.14 a causa di compatibilità con le indicazioni sull'upgrade di F5 per CIS v2.x. Pertanto, per offrirti la flessibilità di risolvere le vulnerabilità di sicurezza e accedere alle funzionalità più recenti, stiamo eseguendo la transizione degli agenti F5 da componenti in bundle a installazioni indipendenti. Se esegui la migrazione, puoi continuare usando gli agenti esistenti senza interruzioni e i servizi creati in precedenza rimangono operativi.
Per il caricamento manuale appena creato Bilanciamento dei cluster con F5 come carico di bilanciamento del carico, devi installare i controller autonomamente. Analogamente, se la migrazione del cluster è stata eseguita da F5 in bundle e vuoi utilizzare una versione più recente del controller CIS, devi installare i controller autonomamente.
Requisiti
Di seguito sono riportati i requisiti per la migrazione:
La versione del cluster di amministrazione e di tutti i cluster utente deve essere 1.29 o successiva.
Devi utilizzare indirizzi IP statici per i nodi del cluster di amministrazione e utente. Il tipo di indirizzo IP è impostato nel campo
network.ipMode.type
ed è immutabile. Se questo campo è impostato su DHCP, non puoi eseguire la migrazione dei cluster.
Aggiorna il file di configurazione del cluster utente
Apporta le seguenti modifiche al file di configurazione del cluster utente:
Modifica
loadBalancer.kind
in"ManualLB"
.Mantieni gli stessi valori per
loadBalancer.vips.controlPlaneVIP
e ailoadBalancer.vips.ingressVIP
campi.Configura
nodePort
utilizzato per il traffico HTTP inviato all'IP virtuale di ingresso.Ottieni il valore HTTP
nodePort
corrente:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ get svc istio-ingress -n gke-system -oyaml | grep http2 -A 1
Sostituisci
USER_CLUSTER_KUBECONFIG
con il percorso di il file kubeconfig del cluster utente.Aggiungi il valore del comando precedente al parametro Campo
loadBalancer.manualLB.ingressHTTPNodePort
, ad esempio:loadBalancer: manualLB: ingressHTTPNodePort: 30243
Configura il
nodePort
utilizzato per il traffico HTTPS inviato all'IP virtuale di ingresso:Ottieni il valore
nodePort
HTTPS corrente:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ get svc istio-ingress -n gke-system -oyaml | grep https -A 1
Aggiungi il valore del comando precedente al campo
loadBalancer.manualLB.ingressHTTPSNodePort
, ad esempio:loadBalancer: manualLB: ingressHTTPSNodePort: 30879
Configura
nodePort
per il server API Kubernetes:Ottieni il valore corrente di
nodePort
per il server API Kubernetes:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ get svc kube-apiserver -n USER_CLUSTER_NAME -oyaml | grep kube-apiserver-port -A 1
Sostituisci quanto segue:
ADMIN_CLUSTER_KUBECONFIG
con il percorso di nel file kubeconfig del cluster admin.USER_CLUSTER_NAME
: il nome del cluster di utenti.
Aggiungi il valore del comando precedente al campo
loadBalancer.manualLB.controlPlaneNodePort
, ad esempio:loadBalancer: manualLB: controlPlaneNodePort: 30968
Configura
nodePort
per il server Konnectivity:Ottieni il valore corrente di
nodePort
per il server Konnectivity:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ get svc kube-apiserver -n USER_CLUSTER_NAME -oyaml | grep konnectivity-server-port -A 1
Aggiungi il valore del comando precedente al campo
loadBalancer.manualLB.konnectivityServerNodePort
, ad esempio:loadBalancer: manualLB: konnectivityServerNodePort: 30563
Elimina l'intera sezione
loadBalancer.f5BigIP
.
Aggiorna il cluster utente
Esegui il seguente comando per eseguire la migrazione del cluster:
gkectl update cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Sostituisci quanto segue:
ADMIN_CLUSTER_KUBECONFIG
: il percorso del file kubeconfig del cluster di amministrazione.USER_CLUSTER_CONFIG
: il percorso del cluster utente di configurazione del deployment.
Aggiorna il file di configurazione del cluster di amministrazione
Apporta le seguenti modifiche al file di configurazione del cluster di amministrazione:
Modifica
loadBalancer.kind
in"ManualLB"
.Mantieni lo stesso valore per
loadBalancer.vips.controlPlaneVIP
.Controlla il valore del campo
adminMaster.replicas
. Se il valore è 3, il cluster di amministrazione è ad alta disponibilità (HA). Se il valore è 1, il cluster di amministrazione non è ad alta disponibilità.Esegui i seguenti passaggi solo per i cluster di amministrazione non HA:
Ottieni il valore
nodePort
per il server API Kubernetes:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ get svc kube-apiserver -n kube-system -oyaml | grep nodePort
Sostituisci
ADMIN_CLUSTER_KUBECONFIG
con il percorso di il file kubeconfig del cluster di amministrazione.Aggiungi il valore del comando precedente al parametro Campo
loadBalancer.manualLB.controlPlaneNodePort
, ad esempio:loadBalancer: manualLB: controlPlaneNodePort: 30968
Esegui il seguente comando per verificare se sono presenti componenti aggiuntivi
nodePort
:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ get deploy monitoring-operator -n kube-system -oyaml | grep admin-ingress-nodeport
Se il comando precedente restituisce un valore, aggiungilo al
loadBalancer.manualLB.addonsNodePort
campo, ad esempio:loadBalancer: manualLB: addonsNodePort: 31405
Elimina l'intera sezione
loadBalancer.f5BigIP
.
Aggiorna il cluster di amministrazione
Esegui questo comando per aggiornare il cluster:
gkectl update admin \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config ADMIN_CLUSTER_CONFIG
Sostituisci quanto segue:
ADMIN_CLUSTER_KUBECONFIG
: il percorso del file kubeconfig del cluster di amministrazione.ADMIN_CLUSTER_CONFIG
: il percorso del cluster di amministrazione di configurazione del deployment.
Verificare che le risorse F5 legacy esistano ancora
Dopo aver aggiornato i cluster in modo che utilizzino il bilanciamento del carico manuale, il traffico verso i cluster non viene interrotto perché le risorse F5 esistenti esistono ancora, come puoi vedere eseguendo il seguente comando:
kubectl --kubeconfig CLUSTER_KUBECONFIG \ api-resources --verbs=list -o name | xargs -n 1 kubectl --kubeconfig CLUSTER_KUBECONFIG get --show-kind --ignore-not-found --selector=onprem.cluster.gke.io/legacy-f5-resource=true -A
Sostituisci CLUSTER_KUBECONFIG
con il percorso del percorso
del cluster di amministrazione o del cluster utente kubeconfig.
L'output previsto è simile al seguente:
Cluster di amministrazione:
Warning: v1 ComponentStatus is deprecated in v1.19+ NAMESPACE NAME TYPE DATA AGE kube-system secret/bigip-login-xt697x Opaque 4 13h NAMESPACE NAME SECRETS AGE kube-system serviceaccount/bigip-ctlr 0 13h kube-system serviceaccount/load-balancer-f5 0 13h NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE kube-system deployment.apps/k8s-bigip-ctlr-deployment 1/1 1 1 13h kube-system deployment.apps/load-balancer-f5 1/1 1 1 13h NAME ROLE AGE clusterrolebinding.rbac.authorization.k8s.io/bigip-ctlr-clusterrole-binding ClusterRole/bigip-ctlr-clusterrole 13h clusterrolebinding.rbac.authorization.k8s.io/load-balancer-f5-clusterrole-binding ClusterRole/load-balancer-f5-clusterrole 13h NAME CREATED AT clusterrole.rbac.authorization.k8s.io/bigip-ctlr-clusterrole 2024-03-25T04:37:34Z clusterrole.rbac.authorization.k8s.io/load-balancer-f5-clusterrole 2024-03-25T04:37:34Z
Cluster di utenti:
Warning: v1 ComponentStatus is deprecated in v1.19+ NAMESPACE NAME TYPE DATA AGE kube-system secret/bigip-login-sspwrd Opaque 4 14h NAMESPACE NAME SECRETS AGE kube-system serviceaccount/bigip-ctlr 0 14h kube-system serviceaccount/load-balancer-f5 0 14h NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE kube-system deployment.apps/k8s-bigip-ctlr-deployment 1/1 1 1 14h kube-system deployment.apps/load-balancer-f5 1/1 1 1 14h NAME ROLE AGE clusterrolebinding.rbac.authorization.k8s.io/bigip-ctlr-clusterrole-binding ClusterRole/bigip-ctlr-clusterrole 14h clusterrolebinding.rbac.authorization.k8s.io/load-balancer-f5-clusterrole-binding ClusterRole/load-balancer-f5-clusterrole 14h NAME CREATED AT clusterrole.rbac.authorization.k8s.io/bigip-ctlr-clusterrole 2024-03-25T05:16:40Z clusterrole.rbac.authorization.k8s.io/load-balancer-f5-clusterrole 2024-03-25T05:16:41Z
Controlla il bilanciatore del carico
Dopo la migrazione, non dovresti dover modificare alcuna impostazione nel bilanciatore del carico perché hai mantenuto gli stessi VIP e valori nodePort
. Le seguenti
descrivono le mappature dai VIP agli indirizzi IP dei nodi:nodePort
.
Cluster di amministrazione HA
Traffico verso i nodi del control plane
Google Distributed Cloud gestisce automaticamente il bilanciamento del carico del piano di controllo
per i cluster di amministrazione ad alta disponibilità. Sebbene non sia necessario configurare una mappatura nel bilanciatore del carico, devi specificare un indirizzo IP nel campo loadBalancer.vips.controlPlaneVIP
.
Traffico verso i servizi nei nodi dei componenti aggiuntivi
Se il tuo cluster di amministrazione aveva un valore per addonsNodePort
, dovresti vedere una mappatura agli indirizzi IP e al valore nodePort
per il traffico verso i servizi nei nodi dei componenti aggiuntivi:
- (
addonsVIP
:8443) -> (NODE_IP_ADDRESSES:addonsNodePort
)
Questa mappatura deve essere presente per tutti i nodi del cluster di amministrazione, sia per i nodi del control plane sia per i nodi dei componenti aggiuntivi.
Cluster di amministrazione non ad alta disponibilità
Traffico del piano di controllo
Di seguito viene mostrata la mappatura all'indirizzo IP e al valore nodePort
per
dal nodo del piano di controllo:
- (
controlPlaneVIP
:443) -> (NODE_IP_ADDRESSES:controlPlaneNodePort
)
Dovresti avere questa mappatura per tutti i nodi nel cluster di amministrazione, sia dal nodo del piano di controllo e dai nodi dei componenti aggiuntivi.
Traffico verso i servizi nei nodi dei componenti aggiuntivi
Se il tuo cluster di amministrazione aveva un valore per addonsNodePort
, dovresti avere il valore
la seguente mappatura agli indirizzi IP e ai valori nodePort
per i servizi
in esecuzione nei nodi dei componenti aggiuntivi:
- (
addonsVIP
:8443) -> (NODE_IP_ADDRESSES:addonsNodePort
)
Questa mappatura deve essere presente per tutti i nodi del cluster di amministrazione, sia per il nodo del control plane sia per i nodi dei componenti aggiuntivi.
Cluster utente
Traffico del piano di controllo
Di seguito è riportata la mappatura agli indirizzi IP e ai valori nodePort
per il traffico del piano di controllo:
- (
controlPlaneVIP
:443
) -> (NODE_IP_ADDRESSES:controlPlaneNodePort
) - (
controlPlaneVIP
:8132
) -> (NODE_IP_ADDRESSES:konnectivityServerNodePort
)
Questa mappatura deve essere presente per tutti i nodi del cluster admin, sia per i nodi del cluster di amministrazione sia per i nodi del piano di controllo del cluster utente.
Traffico del piano dati
Di seguito è riportata la mappatura agli indirizzi IP e ai valori nodePort
per il traffico del piano di dati:
- (
ingressVIP
:80
) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort
) - (
ingressVIP
:443
) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort
)