Mit der Migrate to Containers-Befehlszeile eine Linux VM migrieren
In dieser Kurzanleitung erstellen Sie eine Compute Engine-VM-Instanz und migrieren die VM dann mit der Migrate to Containers-Befehlszeile zu Google Kubernetes Engine (GKE).
Hinweise
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist
Aktivieren Sie die Compute Engine API.
Aktivieren Sie die GKE API.
Compute Engine-VM mit einem Webserver erstellen, der als Quell-VM verwendet werden soll
In diesem Abschnitt wird beschrieben, wie Sie eine einfache Compute Engine-VM erstellen, die als Hello World!-Webseite dient, die Sie nach Abschluss der Migration zum Testen verwenden können.
Klicken Sie in der Google Cloud Console auf Cloud Shell aktivieren.
VM erstellen:
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
Warten Sie einige Minuten, bis die VM erstellt wurde.
Erstellen Sie eine Firewallregel, die Anfragen an die Instanz über HTTP zulässt:
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
Rufen Sie die Seite VM-Instanzen auf.
Wenn Sie eine Verbindung zur VM
quickstart-source-vm
herstellen möchten, suchen Sie die Zeile für die VM und klicken Sie dann auf SSH.Die Verbindung wird in einem neuen Tab hergestellt.
Installieren Sie auf dem Tab
quickstart-source-vm
das Paketapache2
:sudo apt-get update && sudo apt-get install apache2 -y
Nach der Installation von Apache startet das Betriebssystem den Apache-Server automatisch.
Überschreiben Sie auf demselben Tab die Standardwebseite des Apache-Webservers mit einer neuen Seite:
echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' | sudo tee /var/www/html/index.html
Kehren Sie zur Seite VM-Instanzen zurück und kopieren Sie die für
quickstart-source-vm
angezeigte externe IP-Adresse.Fügen Sie die IP-Adresse der VM in die Adressleiste des Browsers ein. Stellen Sie ihr das Präfix
http://
voran.Die Seite Hello World! wird angezeigt.
Compute Engine-VM erstellen, die als lokaler Computer verwendet werden soll
In diesem Abschnitt erstellen Sie eine Linux-VM, die Sie als lokaler Computer für die verschiedenen Migrate to Containers-Vorgänge für die Migration der Quell-VM verwenden können.
Klicken Sie in der Google Cloud Console auf Cloud Shell aktivieren.
VM erstellen:
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
Warten Sie einige Minuten, bis die VM erstellt wurde.
GKE-Cluster erstellen
In diesem Abschnitt erstellen Sie einen GKE-Cluster in Google Cloud, wo Sie Ihre containerisierte Arbeitslast später in dieser Kurzanleitung bereitstellen.
Erstellen Sie in Cloud Shell einen neuen Kubernetes-Cluster:
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
Warten Sie einige Minuten, bis der Cluster erstellt wurde.
Lokale VM für die Migration vorbereiten
Rufen Sie die Seite VM-Instanzen auf.
Wenn Sie eine Verbindung zur VM
quickstart-local-vm
herstellen möchten, suchen Sie die Zeile für die VM und klicken Sie dann auf SSH.Die Verbindung wird in einem neuen Tab hergestellt.
Installieren Sie auf dem Befehlstab
quickstart-local-vm
die 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
Folgen Sie der Anleitung auf dem Befehlstab
quickstart-local-vm
, um die Einrichtung der gcloud CLI abzuschließen:- Geben Sie
1
ein, um das Konto auszuwählen, mit dem Sie verschiedene Vorgänge ausführen möchten. - Geben Sie
1
ein, um das Projekt auszuwählen, in dem Sie die VM erstellt haben. - Wenn Sie die Konfiguration einer Standardregion und -zone überspringen möchten, geben Sie
n
ein.
- Geben Sie
Installieren Sie Docker und erlauben Sie dem Nicht-Root-Nutzer die Ausführung von Containern:
# 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
Installieren Sie Skaffold:
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 && \ sudo install skaffold /usr/local/bin/
Laden Sie die Migrate to Containers-Befehlszeile herunter:
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
Quell-VM migrieren
Eine Migration umfasst in der Regel drei Schritte: Kopieren des Quell-VM-Dateisystems, Analysieren des Dateisystems zum Erstellen eines Migrationsplans und Generieren der Migrationsartefakte.
In den folgenden Abschnitten wird beschrieben, wie Sie mit der Migrate to Containers-Befehlszeile die Quell-VM mithilfe Ihrer lokalen Linux-VM migrieren.
Quell-VM-Dateisystem kopieren
Wenn Sie ein Quell-VM-Dateisystem kopieren, verwendet die Migrate to Containers-Befehlszeile Standardfilter, um die Größe des kopierten Dateisystems zu reduzieren. Damit der Apache-Server jedoch für den Start verfügbar ist, benötigt der Server das Verzeichnis /var/log
, das durch die Standardfilter entfernt wird.
In diesem Abschnitt wird beschrieben, wie Sie die Standardfilter bearbeiten, damit /var/log/*
mit dem Dateisystem der Quell-VM kopiert wird.
Rufen Sie auf dem Befehl
quickstart-local-vm
eine Liste der Standardfilter für Migrate to Containers in einer Datei mit dem Namenfilters.txt
ab:./m2c copy default-filters > filters.txt
So bearbeiten Sie die Standardfilter:
Öffnen Sie die
filters.txt
-Datei in einem Texteditor:vi filters.txt
Um Änderungen an der Datei vorzunehmen, drücken Sie
i
.Entfernen Sie die folgende Anweisung:
- /var/log/*
Um die Datei zu speichern und den Texteditor zu beenden, drücken Sie
Esc
und geben Sie dann:wq
ein.
Kopieren Sie das Dateisystem der Quellmaschine:
./m2c copy gcloud \ --project PROJECT_ID --zone us-central1-a \ --vm-name quickstart-source-vm --output quickstart-vm-filesystem \ --filters filters.txt
Ersetzen Sie PROJECT_ID durch die ID des Projekts.
Eine Kopie des Dateisystems der Quellmaschine ist im Verzeichnis
quickstart-vm-filesystem
verfügbar.
Migrationsplan erstellen
Erstellen Sie auf dem Tab
quickstart-local-vm
den Migrationsplan:./m2c analyze \ --source quickstart-vm-filesystem --plugin linux-vm-container \ --output analysis-output
Nach Abschluss der Analyse wird ein neues Verzeichnis mit dem Namen
analysis-output
erstellt, das den Migrationsplanconfig.yaml
enthält.
Migrationsartefakte generieren
Generieren Sie auf dem Befehl
quickstart-local-vm
die Migrationsartefakte:./m2c generate --input analysis-output --output migration-artifacts
Die generierten Migrationsartefakte werden dem Verzeichnis
migration-artifacts
hinzugefügt.
Migrierte Arbeitslast bereitstellen
In diesem Abschnitt stellen Sie die migrierte Arbeitslast von Ihrer lokalen VM quickstart-local-vm
auf dem GKE-Cluster bereit, der in Google Cloud ausgeführt wird.
Installieren Sie auf dem Befehltab
quickstart-local-vm
das Plug-ingke-gcloud-auth-plugin
:sudo apt-get install google-cloud-sdk-gke-gcloud-auth-plugin
Installieren Sie
kubectl
:sudo apt-get install kubectl
Stellen Sie eine Verbindung zum
quickstart-cluster
-Cluster her:gcloud container clusters get-credentials quickstart-cluster --zone us-central1-a --project PROJECT_ID
Öffnen Sie den
migration-artifacts
-Ordner:cd migration-artifacts
Fügen Sie der Datei
deployment_spec.yaml
einen neuenLoadBalancer
-Dienst hinzu, um die Arbeitslast im Internet freizugeben. So bearbeiten Sie die Dateideployment_spec.yaml
:Öffnen Sie die
deployment_spec.yaml
-Datei in einem Texteditor:vi deployment_spec.yaml
Um Änderungen an der Datei vorzunehmen, drücken Sie
i
.Suchen Sie das Objekt
Service
mit dem Namenlinux-system
. Dieser sieht etwa so aus:--- 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 ---
Fügen Sie direkt nach
linux-system
ein weiteresService
-Objekt namenshello-service
hinzu:--- 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 ---
Um die Datei zu speichern und den Texteditor zu beenden, drücken Sie
Esc
und geben Sie dann:wq
ein.
Stellen Sie die migrierte VM bereit:
skaffold run -d eu.gcr.io/PROJECT_ID
Rufen Sie die externe IP-Adresse der migrierten VM ab:
kubectl get service hello-service
Wenn der Webserver bereit ist, wird eine externe IP-Adresse für den hinzugefügten
hello-service
angezeigt.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-service LoadBalancer 10.23.241.124 EXTERNAL_IP 80:32611/TCP 5m4s
Wenn Sie prüfen möchten, ob die Migration erfolgreich war, öffnen Sie einen neuen Browsertab und rufen Sie die Webseite unter der externen IP-Adresse auf.
http://EXTERNAL_IP
Verwenden Sie
HTTP
und nichtHTTPS
.Wenn auf dem Bildschirm der Text Hello World! angezeigt wird, war die VM-Migration erfolgreich.
Wenn Sie nicht auf die migrierte Arbeitslast zugreifen können, lesen Sie die Informationen zur Fehlerbehebung bei bekannten Problemen.
Bereinigen
Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen in Rechnung gestellt werden:
GKE-Cluster löschen
- Öffnen Sie in der Google Cloud Console die Seite GKE.
- Wählen Sie
quickstart-cluster
aus und klicken Sie dann auf Löschen. - Wenn Sie zur Bestätigung des Vorgangs aufgefordert werden, klicken Sie noch einmal auf Löschen.
VMs löschen
- Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
- Klicken Sie auf den Namen
quickstart-source-vm
. - Klicken Sie oben in der Detailseite der Instanz auf Löschen.
- Klicken Sie auf den Namen
quickstart-local-vm
. - Klicken Sie oben in der Detailseite der Instanz auf Löschen.
Nächste Schritte
- Gastsuchanfrage und Datenerfassung mit Batches
- Informationen zum Migrieren einer komplexeren Anwendung finden Sie in der Anleitung zur Migration einer Spring-Framework-Anwendung im GitHub-Repository für Migrate to Containers.