Esegui la migrazione di una VM Linux utilizzando l'interfaccia a riga di comando Migrate to Containers
In questa guida rapida creerai un'istanza di una macchina virtuale (VM) Compute Engine, e poi utilizza l'interfaccia a riga di comando Migrate to Containers per eseguire la migrazione della VM a Google Kubernetes Engine (GKE).
Prima di iniziare
Nella pagina del selettore progetti della console Google Cloud, seleziona oppure creare un progetto Google Cloud.
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud. Impara come verificare se la fatturazione è abilitata su un progetto.
Abilitare l'API Compute Engine.
Abilita l'API GKE.
Crea una VM di Compute Engine con un server web da utilizzare come VM di origine
Questa sezione descrive come creare una VM di Compute Engine che gestisce un'istanza Hello World! che puoi utilizzare per i test dopo la migrazione completato.
Nella console Google Cloud, fai clic su Attivare Cloud Shell.
Crea una VM:
gcloud compute instances create quickstart-source-vm \ --zone=us-central1-a --machine-type=e2-medium \ --subnet=default --scopes="cloud-platform" \ --tags=http-server,https-server --image=ubuntu-2204-jammy-v20240208 \ --image-project=ubuntu-os-cloud --boot-disk-size=10GB --boot-disk-type=pd-standard \ --boot-disk-device-name=quickstart-source-vm
Attendi alcuni minuti per il completamento della creazione della VM.
Crea una regola firewall che consenta le richieste all'istanza tramite HTTP:
gcloud compute firewall-rules create default-allow-http \ --direction=INGRESS --priority=1000 --network=default --action=ALLOW \ --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=http-server
Vai alla pagina Istanze VM.
Per connetterti alla VM
quickstart-source-vm
, individua la riga della VM, quindi fai clic su SSH.La connessione viene stabilita in una nuova scheda.
Nella scheda del comando
quickstart-source-vm
, installa il pacchettoapache2
:sudo apt-get update && sudo apt-get install apache2 -y
Dopo aver installato Apache, il sistema operativo avvia automaticamente il server Apache.
Nella stessa scheda, sovrascrivi la pagina web predefinita del server web Apache con un nuova pagina:
echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' | sudo tee /var/www/html/index.html
Torna alla pagina Istanze VM e copia l'indirizzo IP esterno visualizzato per
quickstart-source-vm
.Incolla l'indirizzo IP della VM nella barra degli indirizzi del browser. Aggiungi il prefisso
http://
.Viene visualizzata la pagina Hello World!.
Crea una VM di Compute Engine da utilizzare come macchina locale
In questa sezione creerai una VM Linux che puoi usare come macchina locale per eseguire le diverse operazioni Migrate to Containers per la migrazione dell'origine VM.
Nella console Google Cloud, fai clic su Attivare Cloud Shell.
Crea una VM:
gcloud compute instances create quickstart-local-vm \ --zone=us-central1-a --machine-type=e2-medium \ --subnet=default --scopes="cloud-platform" \ --tags=http-server,https-server --image=ubuntu-2204-jammy-v20240208 \ --image-project=ubuntu-os-cloud --boot-disk-size=50GB --boot-disk-type=pd-standard \ --boot-disk-device-name=quickstart-local-vm
Attendi alcuni minuti per il completamento della creazione della VM.
Crea un cluster GKE
In questa sezione creerai un cluster GKE in Google Cloud, in cui eseguirai il deployment del carico di lavoro containerizzato più avanti in questa guida rapida.
In Cloud Shell, crea un nuovo cluster Kubernetes:
gcloud container clusters create quickstart-cluster \ --zone=us-central1-a --machine-type=e2-medium \ --image-type=ubuntu_containerd --num-nodes=1 \ --logging=SYSTEM,WORKLOAD,API_SERVER,SCHEDULER,CONTROLLER_MANAGER
Attendi alcuni minuti per il completamento della creazione del cluster.
Prepara la VM locale per eseguire la migrazione
Vai alla pagina Istanze VM.
Per connetterti alla VM
quickstart-local-vm
, individua la riga della VM, quindi fai clic su SSH.La connessione viene stabilita in una nuova scheda.
Nella scheda del comando
quickstart-local-vm
, installa Google Cloud CLI:# Import the Google Cloud public key. curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg # Add the gcloud CLI distribution URI as a package source echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list # Update and install gcloud sudo apt-get update && sudo apt-get install google-cloud-cli # Get started gcloud init
Per completare la configurazione della gcloud CLI, segui le istruzioni visualizzati nella scheda dei comandi
quickstart-local-vm
:- Per selezionare l'account da utilizzare per eseguire varie operazioni, inserisci
1
. - Per selezionare il progetto in cui hai creato la VM, inserisci
1
. - Per saltare la configurazione di una regione e una zona predefinite, inserisci
n
.
- Per selezionare l'account da utilizzare per eseguire varie operazioni, inserisci
Installa Docker e consenti all'utente non root di eseguire i container:
# Download the convenience script curl -fsSL https://get.docker.com -o install-docker.sh # Install Docker sudo sh install-docker.sh # Allow the non-root user to access Docker sudo usermod -aG docker $USER # Activate the group changes newgrp docker
Installa Skaffold:
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 && \ sudo install skaffold /usr/local/bin/
Scarica l'interfaccia a riga di comando Migrate to Containers:
curl -O "https://m2c-cli-release.storage.googleapis.com/$(curl -s https://m2c-cli-release.storage.googleapis.com/latest)/linux/amd64/m2c" chmod +x ./m2c
Esegui la migrazione della VM di origine
Una migrazione prevede in genere tre passaggi: copia del file system della VM di origine, analizzare il file system per creare un piano di migrazione e generare degli artefatti di migrazione.
Le sezioni seguenti descrivono come utilizzare l'interfaccia a riga di comando Migrate to Containers per eseguire la migrazione utilizzando la VM Linux locale.
Copia il file system della VM di origine
Quando copi un file system VM di origine, l'interfaccia a riga di comando Migrate to Containers utilizza
filtri per ridurre le dimensioni del file system copiato. Tuttavia, per rendere
Server Apache disponibile per l'avvio, il server richiede la directory /var/log
,
che viene rimosso dai filtri predefiniti.
Questa sezione descrive come modificare i filtri predefiniti per garantire che
/var/log/*
viene copiato con il file system della VM di origine.
Nella scheda del comando
quickstart-local-vm
, ottieni un elenco delle Filtri di Migrate to Containers in un file denominatofilters.txt
:./m2c copy default-filters > filters.txt
Per modificare i filtri predefiniti:
Apri il file
filters.txt
in un editor di testo:vi filters.txt
Per apportare modifiche nel file, premi
i
.Rimuovi la seguente istruzione:
- /var/log/*
Per salvare il file ed uscire dall'editor di testo, premi
Esc
e poi Invio:wq
.
Copia il file system del computer di origine:
./m2c copy gcloud \ --project PROJECT_ID --zone us-central1-a \ --vm-name quickstart-source-vm --output quickstart-vm-filesystem \ --filters filters.txt
Sostituisci PROJECT_ID con l'ID del progetto.
Una copia del file system della macchina di origine è disponibile in Directory
quickstart-vm-filesystem
.
Crea il piano di migrazione
Nella scheda del comando
quickstart-local-vm
, crea il piano di migrazione:./m2c analyze \ --source quickstart-vm-filesystem --plugin linux-vm-container \ --output analysis-output
Al termine dell'analisi, viene visualizzata una nuova directory denominata
analysis-output
che contiene il piano di migrazioneconfig.yaml
.
Genera gli artefatti di migrazione
Nella scheda del comando
quickstart-local-vm
, genera gli artefatti di migrazione:./m2c generate --input analysis-output --output migration-artifacts
Gli artefatti di migrazione generati vengono aggiunti a
migration-artifacts
.
Esegui il deployment del carico di lavoro migrato
In questa sezione eseguirai il deployment del carico di lavoro di cui è stata eseguita la migrazione dalla VM locale
quickstart-local-vm
al cluster GKE in esecuzione
in Google Cloud.
Nella scheda del comando
quickstart-local-vm
, installa plug-ingke-gcloud-auth-plugin
:sudo apt-get install google-cloud-sdk-gke-gcloud-auth-plugin
Installa
kubectl
:sudo apt-get install kubectl
Connettiti al cluster
quickstart-cluster
:gcloud container clusters get-credentials quickstart-cluster --zone us-central1-a --project PROJECT_ID
Apri la cartella
migration-artifacts
:cd migration-artifacts
Per esporre il carico di lavoro a internet, aggiungi un nuovo servizio
LoadBalancer
in il filedeployment_spec.yaml
. Per modificare il filedeployment_spec.yaml
, procedi nel seguente modo: le seguenti:Apri il file
deployment_spec.yaml
in un editor di testo:vi deployment_spec.yaml
Per apportare modifiche nel file, premi
i
.Individua l'oggetto
Service
con il nomelinux-system
. Sembra simile al seguente:--- apiVersion: v1 kind: Service metadata: creationTimestamp: null labels: anthos-migrate.cloud.google.com/type: linux-container migrate-for-anthos-optimization: "true" migrate-for-anthos-version: m2c-cli-1.2.2 name: linux-system spec: clusterIP: None selector: app: linux-system type: ClusterIP ---
Aggiungi un altro oggetto
Service
denominatohello-service
subito dopolinux-system
:--- apiVersion: v1 kind: Service metadata: creationTimestamp: null labels: anthos-migrate.cloud.google.com/type: linux-container migrate-for-anthos-optimization: "true" migrate-for-anthos-version: m2c-cli-1.2.2 name: linux-system spec: clusterIP: None selector: app: linux-system type: ClusterIP --- # Add the hello-service object apiVersion: v1 kind: Service metadata: name: hello-service spec: selector: app: linux-system ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancer ---
Per salvare il file ed uscire dall'editor di testo, premi
Esc
e poi Invio:wq
.
Esegui il deployment della VM migrata:
skaffold run -d eu.gcr.io/PROJECT_ID
Ottieni l'indirizzo IP esterno della VM di cui è stata eseguita la migrazione:
kubectl get service hello-service
Quando il server web è pronto, vedrai un indirizzo IP esterno per il
hello-service
aggiunto da te.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-service LoadBalancer 10.23.241.124 EXTERNAL_IP 80:32611/TCP 5m4s
Per verificare se la migrazione è riuscita, apri una nuova scheda del browser e visita la pagina web all'indirizzo IP esterno.
http://EXTERNAL_IP
Assicurati di utilizzare
HTTP
e nonHTTPS
.Se vedi il testo Hello World! sullo schermo, la tua VM migrazione riuscita.
Se non riesci ad accedere al carico di lavoro migrato, scopri come risolvere problemi noti.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi per le risorse utilizzate in questa pagina, segui questi passaggi.
Elimina il cluster GKE
- Nella console Google Cloud, vai alla pagina GKE.
- Seleziona
quickstart-cluster
e fai clic su Elimina. - Quando ti viene chiesto di confermare, fai di nuovo clic su Elimina.
Elimina le VM
- Nella console Google Cloud, vai alla pagina Istanze VM.
- Fai clic sul nome
quickstart-source-vm
. - Nella parte superiore della pagina dei dettagli dell'istanza, fai clic su Elimina.
- Fai clic sul nome
quickstart-local-vm
. - Nella parte superiore della pagina dei dettagli dell'istanza, fai clic su Elimina.
Passaggi successivi
- Scopri come raggruppare in modo collettivo il rilevamento degli ospiti e la raccolta dei dati.
- Per informazioni su come eseguire la migrazione di un'applicazione più complessa, consulta la Tutorial sulla migrazione di un'applicazione del framework Spring disponibile in Repository GitHub di Migrate to Containers.