העברת מכונה וירטואלית של 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 למקור

בקטע הזה מוסבר איך ליצור מכונת 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 command, מתקינים את החבילה 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 ומעתיקים את כתובת ה-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.

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

  • בכרטיסייה של הפקודה 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. פורסים את המכונה הווירטואלית שהועברה:

    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! מוצג במסך, המיגרציה של מכונת ה-VM הצליחה.

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

הסרת המשאבים

כדי לא לצבור חיובים לחשבון 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. בחלק העליון של דף הפרטים של המופע, לוחצים על מחיקה.

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