Scopri come eseguire la migrazione di Knative serving su VMware per utilizzare i parchi risorse in modo da eseguire l'upgrade ad Anthos versione 1.8.
Knative serving è ora un'esperienza separata dal prodotto gestito Cloud Run e viene fornito come componente del parco nei tuoi cluster. L'installazione di Knative serving sulle funzionalità VMware come componente del tuo parco risorse ti consente di gestire e eseguire l'upgrade della tua installazione indipendentemente da altri componenti del parco risorse.
A livello generale, per eseguire la migrazione della tua installazione di Knative serving su VMware per utilizzare un'istanza devi:
- Configura la tua installazione di Knative serving su VMware per soddisfare le requisiti del parco risorse.
- Abilita il componente della funzionalità Knative serving nel tuo parco risorse.
Tieni presente che il server API Kubernetes non è interessato durante questa migrazione.
Per informazioni dettagliate su come eseguire una nuova installazione di Knative serving su VMware, consulta Installazione di Knative serving su VMware.
Prima di iniziare
Devi soddisfare i seguenti requisiti:
Questi passaggi richiedono che il cluster Knative serving su VMware sia registrato in un parco risorse e sia visibile nella console Google Cloud:
La tua installazione di Knative serving su VMware è su un che esegue Anthos versione 1.7 o precedente.
Istio non è più supportato in Anthos 1.8. Versione Cloud Service Mesh La versione 1.18 deve essere installata nel tuo parco risorse e la tua installazione di Knative serving deve essere configurato prima di eseguire l'upgrade del cluster a Versione 1.8.
Consulta le istruzioni di Cloud Service Mesh per maggiori dettagli su installazione su Google Distributed Cloud.
Tieni presente che Cloud Service Mesh richiede che il cluster utilizzi un tipo di macchina con almeno quattro vCPU, come
e2-standard-4
. Per modificare il tipo di macchina del cluster, Migrazione dei carichi di lavoro a tipi di macchine diversi.Esistono due opzioni per eseguire la migrazione di Knative serving in Cloud Service Mesh:
Ottieni un nuovo indirizzo IP esterno a cui configurare il bilanciatore del carico.
Riutilizza l'indirizzo IP del bilanciatore del carico esistente.
Assicurati che il tuo ambiente a riga di comando sia configurato e aggiornato.
Eseguire la migrazione ai parchi risorse
Per eseguire l'upgrade di Anthos alla versione 1.8, devi prima svolgere i seguenti passaggi per assicurarti che la migrazione dell'installazione esistente di Knative serving su VMware venga eseguita utilizzando il componente del parco risorse.
Accedi al cluster di amministrazione
Ottieni il percorso e il nome del file kubeconfig del cluster di amministrazione, quindi
crea la variabile di ambiente ADMIN_KUBECONFIG
:
export ADMIN_KUBECONFIG=[ADMIN_CLUSTER_KUBECONFIG]
Sostituisci [ADMIN_CLUSTER_KUBECONFIG] con il percorso e il nome del file al file kubeconfig del cluster di amministrazione.
Configura ogni cluster utente
Crea le seguenti variabili di ambiente locale per il cluster utente:
Crea la variabile di ambiente
USER_KUBECONFIG
con il percorso del tuo file kubeconfig del cluster utente:export USER_KUBECONFIG=[USER_CLUSTER_KUBECONFIG]
Sostituisci [USER_CLUSTER_KUBECONFIG] con il percorso e il nome del file al file kubeconfig del cluster utente.
Crea variabili di ambiente per le seguenti configurazioni:
- ID del tuo progetto Google Cloud.
- Località delle risorse Google Cloud.
- Nome del cluster di utenti.
export PROJECT_ID=$(kubectl get configmaps --namespace knative-serving config-observability --output jsonpath="{.data['metrics\.stackdriver-project-id']}") export CLUSTER_LOCATION=$(kubectl get configmaps --namespace knative-serving config-observability --output jsonpath="{.data['metrics\.stackdriver-gcp-location']}") export CLUSTER_NAME=$(kubectl get configmaps --namespace knative-serving config-observability --output jsonpath="{.data['metrics\.stackdriver-cluster-name']}")
Rimuovi la configurazione
cloudrun
dalla personalizzazioneOnPremUserCluster
risorsa del tuo cluster utente:Verifica che
cloudRun
sia impostato inOnPremUserCluster
:$ kubectl get onpremusercluster \ "${CLUSTER_NAME}" \ --namespace "${CLUSTER_NAME}-gke-onprem-mgmt" \ --kubeconfig="${ADMIN_KUBECONFIG}" \ --output=jsonpath="{.spec.cloudRun}"
Risultato:
{"enabled":true}
Rimuovi
cloudRun
daOnPremUserCluster
:kubectl patch onpremusercluster \ "${CLUSTER_NAME}" \ --namespace "${CLUSTER_NAME}-gke-onprem-mgmt" \ --kubeconfig="${ADMIN_KUBECONFIG}" \ --type="merge" \ --patch '{"spec": {"cloudRun": null}}'
Verifica che
cloudRun
sia stato rimosso correttamente daOnPremUserCluster
eseguendo lo stesso comandoget
e verificando che non venga restituita alcuna configurazione:kubectl get onpremusercluster \ "${CLUSTER_NAME}" \ --namespace "${CLUSTER_NAME}-gke-onprem-mgmt" \ --kubeconfig="${ADMIN_KUBECONFIG}" \ --output=jsonpath="{.spec.cloudRun}"
Non deve essere presente alcun output nel terminale.
Aggiorna il secret create-config del tuo cluster utente:
Crea una copia YAML locale del file create-config:
kubectl get secret create-config \ --kubeconfig="${ADMIN_KUBECONFIG}" \ --namespace "${CLUSTER_NAME}" \ --output=jsonpath={.data.cfg} \ | base64 -d > "${CLUSTER_NAME}_create_secret.yaml"
Apri il file
${CLUSTER_NAME}_create_secret.yaml
che hai appena creato in un editor e rimuovi il campocloudrun
sottospec
.Codifica in Base64 il file
${CLUSTER_NAME}_cluster_create_secret.yaml
in un file.b64
:cat "${CLUSTER_NAME}_create_secret.yaml" | base64 -w0 > "${CLUSTER_NAME}_create_secret.b64"
Nell'editor, apri il file
.b64
locale che hai appena creato e poi copia la stringa sotto l'attributodata.cfg
per utilizzarla nel passaggio successivo.Devi assicurarti di copiare solo i contenuti dall'attributo
cfg
. Ad esempio, non includere nuove righe (\n
).Esegui il seguente comando per modificare il segreto nel cluster utente:
kubectl edit secret create-config --kubeconfig="${ADMIN_KUBECONFIG}" \ --namespace "${CLUSTER_NAME}"
Nell'editor che si apre, sostituisci il campo
data[cfg]
con la stringa che hai copiato dal file.b64
locale e poi salva le modifiche.Verifica che sia stato eseguito il deployment delle modifiche nel cluster utente e che l'attributo
cloudrun
è stato rimosso dalcreate-config
secret:kubectl get secret create-config \ --kubeconfig="${ADMIN_KUBECONFIG}" \ --namespace ${CLUSTER_NAME} \ --output=jsonpath={.data.cfg} \ | base64 -d
Configura lo spazio dei nomi
knative-serving
nel tuo cluster utente:Elimina l'operatore
cloudrun-operator
daknative-serving
spazio dei nomi:kubectl delete deployments.apps --kubeconfig=${USER_KUBECONFIG} --namespace knative-serving cloudrun-operator
Applica la patch alla configmap
config-network
nello spazio dei nomiknative-serving
:kubectl patch configmap --kubeconfig=${USER_KUBECONFIG} --namespace knative-serving config-network --patch '{"metadata": {"annotations":{"knative.dev/example-checksum": null}}}'
Rimuovi la configurazione
cloudrun.enabled
dal file di configurazioneuser-config.yaml
del cluster utente della tua installazione di Google Distributed Cloud.I seguenti attributi devono essere eliminati all'interno di
user-config.yaml
file:cloudRun: enabled: true
Quando esegui l'upgrade del cluster alla versione 1.8 di Anthos, questa modifica alla configurazione viene implementata.
Se disponi di più cluster utente, devi ripetere tutti i passaggi in questa "Configura ogni cluster utente" per ogni utente in un cluster Kubernetes.
Configura il componente del parco risorse
Abilita il componente Knative serving nel tuo parco risorse:
gcloud container fleet cloudrun enable --project=$PROJECT_ID
Per dettagli e opzioni aggiuntive, vedi gcloud container Fleet Cloudrun Enable riferimento.
(Facoltativo) Verifica che il componente della funzionalità Knative serving sia attivo:
Console
Controlla se il componente Knative serving è Abilitato nella console Google Cloud:
Riga di comando
Vedi se lo stato
appdevexperience
èENABLED
:gcloud container fleet features list --project=$PROJECT_ID
Per dettagli e opzioni aggiuntive, vedi Elenco delle funzionalità del parco risorse gcloud container riferimento.
Risultato:
NAME STATE appdevexperience ENABLED
Esegui il deployment della risorsa personalizzata
CloudRun
per installare Knative serving su VMware su ciascun cluster utente. Per impostazione predefinita, viene eseguita il deployment della versionelatest
di Knative serving.Esegui questo comando
kubectl apply
per eseguire il deployment dell'impostazione predefinita configurazione della risorsa personalizzataCloudRun
:cat <<EOF | kubectl apply -f - apiVersion: operator.run.cloud.google.com/v1alpha1 kind: CloudRun metadata: name: cloud-run spec: metricscollector: stackdriver: projectid: $PROJECT_ID gcpzone: $CLUSTER_LOCATION clustername: $CLUSTER_NAME secretname: "stackdriver-service-account-key" secretkey: "key.json" EOF
Configura Cloud Service Mesh
Configura il bilanciatore del carico Cloud Service Mesh per ciascuno dei tuoi cluster utente.
Puoi configurare il gateway in entrata di Cloud Service Mesh tramite per configurare un nuovo indirizzo IP esterno o riutilizzare un indirizzo IP esistente:
Con il nuovo indirizzo IP esterno che hai ottenuto, configuri il carico seguendo i passaggi nella sezione Documentazione di Cloud Service Mesh.
Tieni presente che questa opzione garantisce che i servizi di pubblicazione Knative vengano riavviati senza interruzioni.
Alternativa: segui i passaggi riportati di seguito per configurare il bilanciatore del carico Cloud Service Mesh sull'indirizzo IP esistente.
Configura il gateway dei tuoi servizi per Cloud Service Mesh eseguendo i seguenti comandi:
export CURRENT_INGRESS_IP=$(kubectl get service --namespace gke-system istio-ingress --output jsonpath='{.spec.loadBalancerIP}') kubectl patch service --namespace istio-system istio-ingressgateway --patch "{\"spec\":{\"loadBalancerIP\": \"$CURRENT_INGRESS_IP\"}}" kubectl patch service --namespace gke-system istio-ingress --patch "{\"spec\":{\"loadBalancerIP\": null}}"
Rimuovi le impostazioni di configurazione Istio correnti:
kubectl patch configmap --namespace knative-serving config-istio --patch '{"data":{"local-gateway.cluster-local-gateway": null}}' kubectl patch configmap --namespace knative-serving config-istio --patch '{"data":{"gateway.gke-system-gateway": null}}'
Verificare la migrazione
Puoi verificare se appdevexperience-operator
sia attivo e in esecuzione per verificare che Knative serving su VMware sia stato
migrazione al parco risorse completata.
Per ogni cluster utente, esegui il seguente comando:
kubectl get deployment -n appdevexperience appdevexperience-operator
L'operatore appdevexperience-operator
dovrebbe mostrare 1/1
come pronto, ad esempio:
NAME READY UP-TO-DATE AVAILABLE AGE
appdevexperience-operator 1/1 1 1 1h
Se l'operatore non riesce a raggiungere lo stato di disponibilità, puoi visualizzare la pagina dei carichi di lavoro del cluster nella console Google Cloud per identificare i problemi relativi alle risorse:
Vai ai carichi di lavoro di Google Kubernetes Engine
Esegui l'upgrade del cluster
Ora che hai eseguito la migrazione dell'installazione di Knative serving su VMware per utilizzare del parco risorse, puoi eseguire l'upgrade del cluster ad Anthos Versione 1.8. Segui le istruzioni dettagliate riportate in Eseguire l'upgrade di GKE On-Prem.
Risoluzione dei problemi
- Il processo di upgrade del cluster utente non riesce a completarsi
Il pod
cluster-local-gateway
nello spazio dei nomigke-system
potrebbe impedire al tuo cluster utente di completare l'upgrade ad Anthos versione 1.8. Il podcluster-local-gateway
non è più necessario e può essere rimosso in sicurezza.Per facilitare manualmente il processo di upgrade, puoi rimuovere manualmente il
cluster-local-gateway
pod eseguendo lo scale down delle repliche di deployment a0
. Ad esempio:Fai lo scale down di
cluster-local-gateway
:kubectl scale deployment cluster-local-gateway --replicas 0 --namespace gke-system
Il pod
cluster-local-gateway
nello spazio dei nomigke-system
e tutti i carichi di lavoro nello spazio dei nomiknative-serving
vengono rimossi.Attendi il completamento del processo di upgrade.