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

  1. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  2. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist

  3. Aktivieren Sie die Compute Engine API.

    Compute Engine API aktivieren

  4. Aktivieren Sie die GKE API.

    GKE API aktivieren

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.

  1. Klicken Sie in der Google Cloud Console auf Schaltfläche zum Aktivieren von Cloud Shell Cloud Shell aktivieren.

    Zur Google Cloud Console

  2. 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.

  3. 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
    
  4. Rufen Sie die Seite VM-Instanzen auf.

    Zur Seite „VM-Instanzen“

  5. 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.

  6. Installieren Sie auf dem Tab quickstart-source-vm das Paket apache2:

    sudo apt-get update && sudo apt-get install apache2 -y
    

    Nach der Installation von Apache startet das Betriebssystem den Apache-Server automatisch.

  7. Ü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
    
  8. Kehren Sie zur Seite VM-Instanzen zurück und kopieren Sie die für quickstart-source-vm angezeigte externe IP-Adresse.

  9. 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.

  1. Klicken Sie in der Google Cloud Console auf Schaltfläche zum Aktivieren von Cloud Shell Cloud Shell aktivieren.

    Zur Google Cloud Console

  2. 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

  1. Rufen Sie die Seite VM-Instanzen auf.

    Zur Seite „VM-Instanzen“

  2. 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.

  3. 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:

    1. Geben Sie 1 ein, um das Konto auszuwählen, mit dem Sie verschiedene Vorgänge ausführen möchten.
    2. Geben Sie 1 ein, um das Projekt auszuwählen, in dem Sie die VM erstellt haben.
    3. Wenn Sie die Konfiguration einer Standardregion und -zone überspringen möchten, geben Sie n ein.
  4. 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
    
  5. Installieren Sie Skaffold:

    curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 && \
    sudo install skaffold /usr/local/bin/
    
  6. 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.

  1. Rufen Sie auf dem Befehl quickstart-local-vm eine Liste der Standardfilter für Migrate to Containers in einer Datei mit dem Namen filters.txt ab:

    ./m2c copy default-filters > filters.txt
    
  2. So bearbeiten Sie die Standardfilter:

    1. Öffnen Sie die filters.txt-Datei in einem Texteditor:

      vi filters.txt
      
    2. Wenn Sie Änderungen an der Datei vornehmen möchten, drücken Sie i.

    3. Entfernen Sie die folgende Anweisung:

      - /var/log/*
      
    4. Um die Datei zu speichern und den Texteditor zu beenden, drücken Sie Esc und geben Sie dann :wq ein.

  3. 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 Migrationsplan config.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.

  1. Installieren Sie auf dem Befehltab quickstart-local-vm das Plug-in gke-gcloud-auth-plugin:

    sudo apt-get install google-cloud-sdk-gke-gcloud-auth-plugin
    
  2. Installieren Sie kubectl:

    sudo apt-get install kubectl
    
  3. Stellen Sie eine Verbindung zum quickstart-cluster-Cluster her:

    gcloud container clusters get-credentials quickstart-cluster
      --zone us-central1-a --project PROJECT_ID
    
  4. Öffnen Sie den migration-artifacts-Ordner:

    cd migration-artifacts
    
  5. Fügen Sie der Datei deployment_spec.yaml einen neuen LoadBalancer-Dienst hinzu, um die Arbeitslast im Internet freizugeben. So bearbeiten Sie die Datei deployment_spec.yaml:

    1. Öffnen Sie die deployment_spec.yaml-Datei in einem Texteditor:

      vi deployment_spec.yaml
      
    2. Wenn Sie Änderungen an der Datei vornehmen möchten, drücken Sie i.

    3. Suchen Sie das Objekt Service mit dem Namen linux-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
      
      ---
      
    4. Fügen Sie direkt nach linux-system ein weiteres Service-Objekt namens hello-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
      
      ---
      
    5. Um die Datei zu speichern und den Texteditor zu beenden, drücken Sie Esc und geben Sie dann :wq ein.

  6. Stellen Sie die migrierte VM bereit:

    skaffold run -d eu.gcr.io/PROJECT_ID
    
  7. Rufen Sie die externe IP-Adresse der migrierten VM ab:

    kubectl get service hello-service
    
  8. 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
    
  9. 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 nicht HTTPS.

  10. 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

  1. Öffnen Sie in der Google Cloud Console die Seite GKE.

    Zu GKE

  2. Wählen Sie quickstart-cluster aus und klicken Sie dann auf Löschen.
  3. Wenn Sie zur Bestätigung des Vorgangs aufgefordert werden, klicken Sie noch einmal auf Löschen.

VMs löschen

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

    Zu Seite „VM-Instanzen“

  2. Klicken Sie auf den Namen quickstart-source-vm.
  3. Klicken Sie oben in der Detailseite der Instanz auf Löschen.
  4. Klicken Sie auf den Namen quickstart-local-vm.
  5. Klicken Sie oben in der Detailseite der Instanz auf Löschen.

Nächste Schritte