העברת מכונה וירטואלית של Linux באמצעות Migrate to Containers CLI
במדריך למתחילים הזה, יוצרים מכונה וירטואלית (VM) ב-Compute Engine, ואז משתמשים ב-CLI של Migrate to Containers כדי להעביר את המכונה הווירטואלית אל Google Kubernetes Engine (GKE).
לפני שמתחילים
בדף לבחירת הפרויקט במסוף Google Cloud , בוחרים פרויקט ב- Google Cloud או יוצרים אותו.
מוודאים שהחיוב מופעל בפרויקט Google Cloud . כך בודקים אם החיוב מופעל בפרויקט
מפעילים את Compute Engine API.
מפעילים את GKE API.
יצירת מכונה וירטואלית ב-Compute Engine עם שרת אינטרנט לשימוש כמכונת VM למקור
בקטע הזה מוסבר איך ליצור מכונת VM ב-Compute Engine שמציגה דף אינטרנט עם הכיתוב Hello World!, שאפשר להשתמש בו לבדיקה אחרי שההעברה מסתיימת.
במסוף Google Cloud , לוחצים על
Activate Cloud Shell.
יוצרים מכונה וירטואלית:
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.
יוצרים כלל חומת אש שמאפשר בקשות למופע דרך 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נכנסים לדף VM instances.
כדי להתחבר למכונה הווירטואלית
quickstart-source-vm, מאתרים את השורה של המכונה הווירטואלית ולוחצים על SSH.החיבור נוצר בכרטיסייה חדשה.
בכרטיסייה
quickstart-source-vmcommand, מתקינים את החבילהapache2:sudo apt-get update && sudo apt-get install apache2 -yאחרי שמתקינים את Apache, מערכת ההפעלה מפעילה באופן אוטומטי את שרת Apache.
באותה כרטיסייה, מחליפים את דף האינטרנט שמוגדר כברירת מחדל בשרת האינטרנט של Apache בדף חדש:
echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' | sudo tee /var/www/html/index.htmlחוזרים לדף VM instances ומעתיקים את כתובת ה-IP החיצונית שמוצגת עבור
quickstart-source-vm.מדביקים את כתובת ה-IP של המכונה הווירטואלית בסרגל הכתובות של הדפדפן. מוסיפים לפניו את הקידומת
http://.יופיע הדף Hello World!.
יצירת מכונה וירטואלית ב-Compute Engine לשימוש כמכונה מקומית
בקטע הזה יוצרים מכונה וירטואלית של Linux שאפשר להשתמש בה כמכונה מקומית כדי לבצע את הפעולות השונות של Migrate to Containers להעברת המכונה הווירטואלית של המקור.
במסוף Google Cloud , לוחצים על
Activate Cloud Shell.
יוצרים מכונה וירטואלית:
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יצירת האשכול עשויה להימשך כמה דקות.
הכנת המכונה הווירטואלית המקומית לביצוע ההעברה
נכנסים לדף VM instances.
כדי להתחבר למכונה הווירטואלית
quickstart-local-vm, מאתרים את השורה של המכונה הווירטואלית ולוחצים על SSH.החיבור נוצר בכרטיסייה חדשה.
בכרטיסייה של הפקודה
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. - כדי לדלג על הגדרת אזור ותחום ברירת מחדל, מזינים
n.
- כדי לבחור את החשבון שבו רוצים להשתמש לביצוע פעולות שונות, מזינים
מתקינים את 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מתקינים את Skaffold:
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 && \ sudo install skaffold /usr/local/bin/מורידים את 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 של המקור.
בכרטיסיית הפקודה
quickstart-local-vm, מקבלים רשימה של מסנני ברירת המחדל של Migrate to Containers בקובץ שנקראfilters.txt:./m2c copy default-filters > filters.txtכדי לערוך את מסנני ברירת המחדל:
פותחים את הקובץ
filters.txtבכלי לעריכת טקסט:vi filters.txtכדי לבצע שינויים בקובץ, מקישים על
i.צריך להסיר את ההצהרה הבאה:
- /var/log/*כדי לשמור את הקובץ ולצאת מעורך הטקסט, מקישים על
Escואז על Enter.:wq
מעתיקים את מערכת הקבצים של מכונת המקור:
./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.
בכרטיסייה
quickstart-local-vmcommand, מתקינים את הפלאגיןgke-gcloud-auth-plugin:sudo apt-get install google-cloud-sdk-gke-gcloud-auth-pluginהתקנה של
kubectl:sudo apt-get install kubectlמתחברים לאשכול
quickstart-cluster:gcloud container clusters get-credentials quickstart-cluster \ --zone us-central1-a --project PROJECT_IDפותחים את התיקייה
migration-artifacts:cd migration-artifactsכדי לחשוף את עומס העבודה לאינטרנט, מוסיפים שירות
LoadBalancerחדש בקובץdeployment_spec.yaml. כדי לערוך את הקובץdeployment_spec.yaml:פותחים את הקובץ
deployment_spec.yamlבכלי לעריכת טקסט:vi deployment_spec.yamlכדי לבצע שינויים בקובץ, מקישים על
i.מאתרים את האובייקט
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תוסיף עוד אובייקט
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כדי לשמור את הקובץ ולצאת מעורך הטקסט, מקישים על
Escואז על Enter.:wq
פורסים את המכונה הווירטואלית שהועברה:
skaffold run -d eu.gcr.io/PROJECT_IDמשיגים את כתובת ה-IP החיצונית של ה-VM שהועברה:
kubectl get service hello-serviceכאשר שרת האינטרנט מוכן, מוצגת כתובת 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כדי לבדוק אם ההעברה הצליחה, פותחים כרטיסייה חדשה בדפדפן ועוברים לדף האינטרנט בכתובת ה-IP החיצונית.
http://EXTERNAL_IPחשוב להשתמש ב-
HTTPולא ב-HTTPS.אם הטקסט Hello World! מוצג במסך, המיגרציה של מכונת ה-VM הצליחה.
אם אין לכם גישה לעומס העבודה שהועבר, תוכלו לקרוא איך לפתור בעיות ידועות.
הסרת המשאבים
כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה:
מחיקת אשכול GKE
- נכנסים לדף GKE במסוף Google Cloud .
- בוחרים באפשרות
quickstart-clusterואז לוחצים על מחיקה. - כשמופיעה בקשת אישור, לוחצים שוב על מחיקה.
מחיקת המכונות הווירטואליות
- נכנסים לדף VM instances במסוף Google Cloud .
- לוחצים על השם
quickstart-source-vm. - בחלק העליון של דף הפרטים של המופע, לוחצים על מחיקה.
- לוחצים על השם
quickstart-local-vm. - בחלק העליון של דף הפרטים של המופע, לוחצים על מחיקה.
המאמרים הבאים
- איך אוספים נתונים ומגלים אורחים בקבוצות
- במאגר GitHub Migrate to Containers זמין מדריך להעברת אפליקציית Spring Framework.