העברת מכונה וירטואלית של Linux באמצעות Migrate to Containers CLI

במדריך הזה לתחילת העבודה, יוצרים מכונה וירטואלית (VM) ב-Compute Engine, ואז משתמשים ב-CLI של Migrate to Containers כדי להעביר את המכונה הווירטואלית אל Google Kubernetes Engine‏ (GKE).

לפני שמתחילים

  1. בדף לבחירת הפרויקט במסוף Google Cloud , בוחרים פרויקט ב- Google Cloud או יוצרים אותו.

    כניסה לדף לבחירת הפרויקט

  2. מוודאים שהחיוב מופעל בפרויקט Google Cloud . כך בודקים אם החיוב מופעל בפרויקט

  3. מפעילים את Compute Engine API.

    הפעלת Compute Engine API

  4. מפעילים את GKE API.

    הפעלת GKE API

יצירת מכונה וירטואלית ב-Compute Engine עם שרת אינטרנט לשימוש כמכונת VM למקור

בקטע הזה מוסבר איך ליצור מכונה וירטואלית ב-Compute Engine שמציגה את דף האינטרנט Hello World!, שאפשר להשתמש בו לבדיקה אחרי שההעברה מסתיימת.

  1. במסוף Google Cloud , לוחצים על כפתור הפעלת ShellActivate Cloud Shell.

    כניסה למסוף Google Cloud

  2. יוצרים מכונה וירטואלית:

    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
    

    צריך להמתין כמה דקות עד שתסתיים יצירת ה-VM.

  3. יוצרים כלל חומת אש שמאפשר בקשות למכונה דרך 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
    
  4. נכנסים לדף VM instances.

    כניסה לדף VM instances

  5. כדי להתחבר למכונה הווירטואלית quickstart-source-vm, מאתרים את השורה של המכונה הווירטואלית ולוחצים על SSH.

    החיבור נוצר בכרטיסייה חדשה.

  6. בכרטיסיית הפקודה quickstart-source-vm, מתקינים את החבילה apache2:

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

    אחרי שמתקינים את Apache, מערכת ההפעלה מפעילה אוטומטית את שרת Apache.

  7. באותה כרטיסייה, מחליפים את דף האינטרנט שמוגדר כברירת מחדל בשרת האינטרנט של Apache בדף חדש:

    echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' | sudo tee /var/www/html/index.html
    
  8. חוזרים לדף VM instances ומעתיקים את כתובת ה-External IP שמוצגת עבור quickstart-source-vm.

  9. מדביקים את כתובת ה-IP של המכונה הווירטואלית בסרגל הכתובות של הדפדפן. מוסיפים לפניו את הקידומת http://.

    יופיע הדף Hello World!.

יצירת מכונה וירטואלית ב-Compute Engine לשימוש כמכונה מקומית

בקטע הזה יוצרים מכונה וירטואלית של Linux שאפשר להשתמש בה כמכונה מקומית כדי לבצע את הפעולות השונות של Migrate to Containers להעברת המכונה הווירטואלית של המקור.

  1. במסוף Google Cloud , לוחצים על כפתור הפעלת ShellActivate Cloud Shell.

    כניסה למסוף Google Cloud

  2. יוצרים מכונה וירטואלית:

    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
    

    צריך להמתין כמה דקות עד שתסתיים יצירת ה-VM.

יצירת אשכול GKE

בקטע הזה תיצרו אשכול GKE ב- Google Cloud, שבו תפרסו את עומס העבודה שלכם בתוך קונטיינר בהמשך המדריך למתחילים הזה.

  • ב-Cloud Shell, יוצרים אשכול 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
    

    יכול להיות שיחלפו כמה דקות עד ליצירת האשכול.

הכנת המכונה הווירטואלית המקומית לביצוע ההעברה

  1. נכנסים לדף VM instances.

    כניסה לדף VM instances

  2. כדי להתחבר למכונה הווירטואלית quickstart-local-vm, מאתרים את השורה של המכונה הווירטואלית ולוחצים על SSH.

    החיבור נוצר בכרטיסייה חדשה.

  3. בכרטיסייה של הפקודה quickstart-local-vm, מתקינים את 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
    

    כדי להשלים את ההגדרה של ה-CLI של gcloud, פועלים לפי ההוראות שמופיעות בכרטיסיית הפקודות quickstart-local-vm:

    1. כדי לבחור את החשבון שבו רוצים להשתמש לביצוע פעולות שונות, מזינים 1.
    2. כדי לבחור את הפרויקט שבו יצרתם את המכונה הווירטואלית, מזינים 1.
    3. כדי לדלג על הגדרת אזור ותחום ברירת מחדל, מזינים n.
  4. מתקינים את Docker ומאפשרים למשתמש שאינו root להפעיל קונטיינרים:

    # 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. מתקינים את Skaffold:

    curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 && \
    sudo install skaffold /usr/local/bin/
    
  6. מורידים את CLI של 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
    

העברת המכונה הווירטואלית של המקור

העברה כוללת בדרך כלל שלושה שלבים: העתקת מערכת הקבצים של מכונת ה-VM המקורית, ניתוח מערכת הקבצים כדי ליצור תוכנית העברה ויצירת ארטיפקטים של ההעברה.

בקטעים הבאים מוסבר איך להשתמש ב-CLI של Migrate to Containers כדי להעביר את מכונת ה-VM של המקור באמצעות מכונת ה-VM המקומית של Linux.

העתקת מערכת הקבצים של המכונה הווירטואלית של המקור

כשמעתיקים מערכת קבצים של מכונה וירטואלית של מקור, ה-CLI של Migrate to Containers משתמש במסנני ברירת מחדל כדי להקטין את הגודל של מערכת הקבצים שהועתקה. עם זאת, כדי שהשרת Apache יהיה זמין להפעלה, השרת צריך את הספרייה /var/log, שמוסרת על ידי מסנני ברירת המחדל.

בקטע הזה מוסבר איך לערוך את מסנני ברירת המחדל כדי לוודא ש-/var/log/* מועתק עם מערכת הקבצים של מכונת ה-VM של המקור.

  1. בכרטיסיית הפקודה quickstart-local-vm, מקבלים רשימה של מסנני ברירת המחדל של Migrate to Containers בקובץ שנקרא filters.txt:

    ./m2c copy default-filters > filters.txt
    
  2. כדי לערוך את מסנני ברירת המחדל:

    1. פותחים את הקובץ filters.txt בכלי לעריכת טקסט:

      vi filters.txt
      
    2. כדי לבצע שינויים בקובץ, מקישים על i.

    3. צריך להסיר את ההצהרה הבאה:

      - /var/log/*
      
    4. כדי לשמור את הקובץ ולצאת מעורך הטקסט, מקישים על Esc ואז על Enter. :wq

  3. מעתיקים את מערכת הקבצים של מכונת המקור:

    ./m2c copy gcloud \
      --project PROJECT_ID --zone us-central1-a \
      --vm-name quickstart-source-vm --output quickstart-vm-filesystem \
      --filters filters.txt
    

    מחליפים את PROJECT_ID במזהה הפרויקט.

    עותק של מערכת הקבצים של מכונת המקור זמין בספרייה quickstart-vm-filesystem.

יצירת תוכנית ההעברה

  • בכרטיסיית הפקודות quickstart-local-vm, יוצרים את תוכנית המיגרציה:

    ./m2c analyze \
      --source quickstart-vm-filesystem --plugin linux-vm-container \
      --output analysis-output
    

    אחרי שהניתוח מסתיים, נוצרת ספרייה חדשה בשם analysis-output שמכילה את תוכנית המיגרציה, config.yaml.

יצירת פריטי מידע שנוצרו בתהליך המיגרציה

  • בכרטיסיית הפקודות quickstart-local-vm, יוצרים את פריטי המיגרציה:

    ./m2c generate --input analysis-output --output migration-artifacts
    

    הארטיפקטים שנוצרו להעברה מתווספים לספרייה migration-artifacts.

פריסת עומס העבודה שהועבר

בקטע הזה, פורסים את עומס העבודה שהועבר ממכונת ה-VM המקומית quickstart-local-vm לאשכול GKE שפועל ב-Google Cloud.

  1. בכרטיסייה quickstart-local-vm command, מתקינים את הפלאגין gke-gcloud-auth-plugin:

    sudo apt-get install google-cloud-sdk-gke-gcloud-auth-plugin
    
  2. התקנה של kubectl:

    sudo apt-get install kubectl
    
  3. מתחברים לאשכול quickstart-cluster:

    gcloud container clusters get-credentials quickstart-cluster \
      --zone us-central1-a --project PROJECT_ID
    
  4. פותחים את התיקייה migration-artifacts:

    cd migration-artifacts
    
  5. כדי לחשוף את עומס העבודה לאינטרנט, מוסיפים שירות LoadBalancer חדש בקובץ deployment_spec.yaml. כדי לערוך את הקובץ deployment_spec.yaml:

    1. פותחים את הקובץ deployment_spec.yaml בכלי לעריכת טקסט:

      vi deployment_spec.yaml
      
    2. כדי לבצע שינויים בקובץ, מקישים על i.

    3. מאתרים את האובייקט Service בשם linux-system. היא אמורה להיראות כך:

      apiVersion: v1
      kind: Service
      metadata:
        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. תוסיף עוד אובייקט Service בשם hello-service מיד אחרי linux-system:

      apiVersion: v1
      kind: Service
      metadata:
        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. כדי לשמור את הקובץ ולצאת מעורך הטקסט, מקישים על Esc ואז על Enter. :wq

  6. פורסים את ה-VM שהועבר:

    skaffold run -d eu.gcr.io/PROJECT_ID
    
  7. משיגים את כתובת ה-IP החיצונית של ה-VM שהועברה:

    kubectl get service hello-service
    
  8. כשהשרת מוכן, מוצגת כתובת IP חיצונית עבור hello-service שהוספתם.

    NAME            TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)        AGE
    hello-service   LoadBalancer   10.23.241.124   EXTERNAL_IP   80:32611/TCP   5m4s
    
  9. כדי לבדוק אם ההעברה הצליחה, פותחים כרטיסייה חדשה בדפדפן ומבקרים בדף האינטרנט בכתובת ה-IP החיצונית.

    http://EXTERNAL_IP
    

    חשוב להשתמש ב-HTTP ולא ב-HTTPS.

  10. אם הטקסט Hello World! מוצג במסך, המיגרציה של המכונה הווירטואלית הצליחה.

    אם אין לכם גישה לעומס העבודה שהועבר, תוכלו לקרוא איך לפתור בעיות ידועות.

הסרת המשאבים

כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה, פועלים לפי השלבים הבאים:

מחיקת אשכול GKE

  1. נכנסים לדף GKE במסוף Google Cloud .

    מעבר אל GKE

  2. בוחרים באפשרות quickstart-cluster ולוחצים על מחיקה.
  3. כשמופיעה בקשת אישור, לוחצים שוב על מחיקה.

מחיקת המכונות הווירטואליות

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף VM instances

  2. לוחצים על השם quickstart-source-vm.
  3. בחלק העליון של דף הפרטים של המופע, לוחצים על מחיקה.
  4. לוחצים על השם quickstart-local-vm.
  5. בחלק העליון של דף הפרטים של המופע, לוחצים על מחיקה.

המאמרים הבאים