使用 Migrate to Containers CLI 遷移 Linux VM
在本快速入門導覽課程中,您將建立 Compute Engine 虛擬機器 (VM) 執行個體,然後使用 Migrate to Containers CLI 將 VM 遷移至 Google Kubernetes Engine (GKE)。
事前準備
在 Google Cloud 控制台的專案選擇器頁面中,選取或建立 Google Cloud 專案。
請確認您已為 Google Cloud 專案啟用計費功能。瞭解如何檢查專案是否已啟用計費功能。
啟用 Compute Engine API。
啟用 GKE API。
建立搭載網路伺服器的 Compute Engine VM,做為來源 VM
本節說明如何建立 Compute Engine VM,提供「Hello World!」網頁,供您在遷移完成後進行測試。
在 Google Cloud 控制台中,按一下「啟用 Cloud Shell」
。
建立 VM:
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」(VM 執行個體) 頁面。
如要連線至 VM
quickstart-source-vm,請找到 VM 所在列,然後按一下「SSH」SSH。系統會在新的分頁中建立連線。
在
quickstart-source-vm指令分頁中,安裝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」(VM 執行個體) 頁面,然後複製
quickstart-source-vm顯示的「External IP」(外部 IP) 位址。在瀏覽器的網址列中貼上 VM 的 IP 位址。並加上
http://前置字元。「Hello World!」頁面隨即顯示。
建立 Compute Engine VM 做為本機
在本節中,您將建立 Linux VM,做為執行各種 Migrate to Containers 作業的本機,以遷移來源 VM。
在 Google Cloud 控制台中,按一下「啟用 Cloud Shell」
。
建立 VM:
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 叢集
在本節中,您會在 Google Cloud中建立 GKE 叢集,並在本快速入門導覽課程稍後部署容器化工作負載。
在 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 以執行遷移作業
前往「VM instances」(VM 執行個體) 頁面。
如要連線至 VM
quickstart-local-vm,請找到 VM 所在列,然後按一下「SSH」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如要完成 gcloud CLI 設定,請按照
quickstart-local-vm指令分頁中顯示的指示操作:- 如要選取用於執行各項作業的帳戶,請輸入
1。 - 如要選取建立 VM 的專案,請輸入
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/下載 Migrate to Containers CLI:
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
遷移作業通常包含三個步驟:複製來源 VM 檔案系統、分析檔案系統以建立遷移計畫,以及產生遷移構件。
下列各節說明如何使用 Migrate to Containers CLI,透過本機 Linux VM 遷移來源 VM。
複製來源 VM 檔案系統
複製來源 VM 檔案系統時,Migrate to Containers CLI 會使用預設篩選器縮減複製的檔案系統大小。不過,如要讓 Apache 伺服器啟動,伺服器需要 /var/log 目錄,而預設篩選器會移除這個目錄。
本節說明如何編輯預設篩選器,確保 /var/log/* 會連同來源 VM 檔案系統一起複製。
在
quickstart-local-vm指令分頁中,取得名為filters.txt的檔案,其中列出預設的「遷移至容器」篩選器:./m2c copy default-filters > filters.txt如要編輯預設篩選器,請按照下列步驟操作:
在文字編輯器中開啟
filters.txt檔案:vi filters.txt如要變更檔案,請按
i鍵。移除下列陳述式:
- /var/log/*如要儲存檔案並退出文字編輯器,請依序按下
Esc鍵和: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 替換為專案 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 遷移的工作負載,部署至Google Cloud上執行的 GKE 叢集。
在
quickstart-local-vm指令分頁中,安裝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如要將工作負載公開至網際網路,請在
deployment_spec.yaml檔案中新增LoadBalancer服務。如要編輯deployment_spec.yaml檔案,請按照下列步驟操作:在文字編輯器中開啟
deployment_spec.yaml檔案:vi deployment_spec.yaml如要變更檔案,請按
i鍵。找出名為
linux-system的Service物件。如下所示: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在
linux-system之後新增另一個名為hello-service的Service物件: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鍵和:wq鍵。
部署遷移的 VM:
skaffold run -d eu.gcr.io/PROJECT_ID取得遷移的 VM 外部 IP 位址:
kubectl get service hello-service網路伺服器準備就緒後,您會看到所新增
hello-service的外部 IP 位址。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 叢集
- 前往 Google Cloud 控制台的「GKE」GKE頁面。
- 選取「
quickstart-cluster」,然後按一下「刪除」圖示 。 - 系統提示您進行確認時,再按一下 [Delete] (刪除)。
刪除 VM
- 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
- 按一下名稱
quickstart-source-vm。 - 在執行個體詳細資料頁面的頂端,按一下「刪除」。
- 按一下名稱
quickstart-local-vm。 - 在執行個體詳細資料頁面的頂端,按一下「刪除」。
後續步驟
- 瞭解如何批次探索訪客並收集資料。
- 如要瞭解如何遷移更複雜的應用程式,請參閱 Migrate to Containers GitHub 存放區中的「遷移 Spring 架構應用程式」教學課程。