首頁文章關於報價聯絡我們🌐 EN
返回首頁GCP
GCP 核心服務實戰教學:Compute Engine、Cloud Run、GKE 完整操作指南

GCP 核心服務實戰教學:Compute Engine、Cloud Run、GKE 完整操作指南

📑 目錄

GCP 核心服務實戰教學:Compute Engine、Cloud Run、GKE 完整操作指南GCP 核心服務實戰教學:Compute Engine、Cloud Run、GKE 完整操作指南

想在 GCP 上跑你的程式,但不知道該用哪個服務?

Compute Engine、Cloud Run、GKE... 名字都很像,到底差在哪裡?

這篇文章會帶你實際操作 GCP 三大運算服務。從建立第一台 VM,到部署 Serverless 容器,再到管理 Kubernetes 叢集,Step-by-step 教你上手。

想先了解 GCP 的整體架構?請參考「GCP 完整指南:從入門概念到企業實戰」。



GCP 運算服務選擇指南

💡 重點摘要:開始動手之前,先搞清楚這三個服務的差異。

VM vs Container vs Serverless 比較

服務類型你需要管理什麼適合場景
Compute EngineVM作業系統、Runtime、應用程式需要完全控制、特殊軟體需求
GKE容器編排容器、Pod、Deployment大規模微服務、複雜編排
Cloud RunServerless 容器容器映像檔API 服務、Web 應用、快速部署

簡單記法:

根據工作負載選擇適合的服務

選 Compute Engine 的情況:

選 Cloud Run 的情況:

選 GKE 的情況:

服務搭配與混合架構

實務上,很多專案會混用這些服務:

常見組合 1:前後端分離

常見組合 2:微服務架構

常見組合 3:ML 工作流



Compute Engine(VM)實戰教學

Compute Engine 是 GCP 最基本的運算服務。就像在雲端租一台電腦。

建立第一個 VM 執行個體

方法 1:使用 Cloud Console(Web 介面)

  1. 進入 Cloud Console → Compute Engine → VM instances

  2. 點擊「Create Instance」

  3. 設定基本資訊:

    • Name:my-first-vm
    • Region:asia-east1(台灣)
    • Zone:asia-east1-b
  4. 選擇機器類型(下一節詳談)

  5. 選擇開機磁碟(下一節詳談)

  6. 設定防火牆:

    • 勾選「Allow HTTP traffic」(如果要跑 Web)
    • 勾選「Allow HTTPS traffic」
  7. 點擊「Create」

方法 2:使用 gcloud CLI

gcloud compute instances create my-first-vm \
  --zone=asia-east1-b \
  --machine-type=e2-medium \
  --image-family=debian-11 \
  --image-project=debian-cloud \
  --boot-disk-size=20GB \
  --tags=http-server,https-server

CLI 的好處是可以寫成腳本,方便重複執行和版本控制。

機器類型與規格選擇

GCP 有很多機器系列,選錯會浪費錢。

機器系列比較:

系列特色適用場景價格
E2最便宜、共享 CPU開發測試、小型服務💰
N2平衡型、獨立 CPU一般生產環境💰💰
N2DAMD 處理器性價比要求高💰💰
C2運算優化CPU 密集型工作💰💰💰
M2記憶體優化大型資料庫、SAP💰💰💰💰
A2GPU 優化ML 訓練、渲染💰💰💰💰💰

怎麼選?

Custom Machine Type:

如果標準規格不符合需求,可以自訂 vCPU 和記憶體數量。

gcloud compute instances create custom-vm \
  --custom-cpu=6 \
  --custom-memory=12GB

開機磁碟與映像檔設定

映像檔選擇:

類型選項費用
公開映像檔Debian、Ubuntu、CentOS免費
Premium 映像檔Windows、RHEL、SUSE額外收費
自訂映像檔你自己做的儲存費用

磁碟類型:

類型IOPS適用場景價格
pd-standard(HDD)備份、冷資料$0.04/GB
pd-balanced(SSD)一般用途$0.10/GB
pd-ssd(SSD)資料庫、高 I/O$0.17/GB
pd-extreme(SSD)極高高效能資料庫$0.125/GB

建議:

網路與防火牆規則配置

預設網路設定:

每個 VM 預設會有:

防火牆規則設定:

# 允許 HTTP
gcloud compute firewall-rules create allow-http \
  --allow=tcp:80 \
  --target-tags=http-server

# 允許 HTTPS
gcloud compute firewall-rules create allow-https \
  --allow=tcp:443 \
  --target-tags=https-server

# 允許特定 IP 的 SSH
gcloud compute firewall-rules create allow-ssh-from-office \
  --allow=tcp:22 \
  --source-ranges=203.0.113.0/24

安全建議:

SSH 連線與基本管理

連線方式:

1. Cloud Console 內建 SSH

最簡單的方式,點一下就能連。

2. gcloud CLI

gcloud compute ssh my-first-vm --zone=asia-east1-b

3. 標準 SSH Client

# 先設定 SSH Key
gcloud compute config-ssh

# 然後用一般 SSH 連線
ssh my-first-vm.asia-east1-b.your-project

常用管理指令:

# 列出所有 VM
gcloud compute instances list

# 停止 VM(停止計費 vCPU,但磁碟還是收費)
gcloud compute instances stop my-first-vm --zone=asia-east1-b

# 啟動 VM
gcloud compute instances start my-first-vm --zone=asia-east1-b

# 刪除 VM
gcloud compute instances delete my-first-vm --zone=asia-east1-b

費用相關說明請見「GCP 定價與費用計算完整指南」。



Cloud Run 容器部署教學

Cloud Run 是 GCP 的 Serverless 容器服務。你只要給它一個容器,其他都不用管。

Cloud Run 運作原理

核心概念:

  1. 你打包一個容器映像檔
  2. 部署到 Cloud Run
  3. Cloud Run 自動處理:
    • 啟動容器
    • 負載平衡
    • 自動擴展(0 到 N 個實例)
    • HTTPS 憑證
    • 自訂網域

計費方式:

限制:

從 Container Registry 部署服務

步驟 1:準備你的應用程式

以 Node.js 為例,建立 index.js

const express = require('express');
const app = express();
const port = process.env.PORT || 8080;

app.get('/', (req, res) => {
  res.send('Hello from Cloud Run!');
});

app.listen(port, () => {
  console.log(`Server running on port ${port}`);
});

步驟 2:建立 Dockerfile

FROM node:18-slim
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
CMD ["node", "index.js"]

步驟 3:建置並推送到 Artifact Registry

# 設定 Docker 認證
gcloud auth configure-docker asia-east1-docker.pkg.dev

# 建置映像檔
docker build -t asia-east1-docker.pkg.dev/PROJECT_ID/REPO_NAME/my-app:v1 .

# 推送
docker push asia-east1-docker.pkg.dev/PROJECT_ID/REPO_NAME/my-app:v1

步驟 4:部署到 Cloud Run

gcloud run deploy my-service \
  --image=asia-east1-docker.pkg.dev/PROJECT_ID/REPO_NAME/my-app:v1 \
  --region=asia-east1 \
  --platform=managed \
  --allow-unauthenticated

部署完成後,會給你一個 HTTPS 網址。

自動擴展與流量管理

自動擴展設定:

gcloud run deploy my-service \
  --min-instances=0 \    # 最小實例數(0 = 可縮到 0)
  --max-instances=100 \  # 最大實例數
  --concurrency=80       # 每個實例最大同時請求數

流量分配(多版本部署):

# 部署新版本但不轉流量
gcloud run deploy my-service \
  --image=my-app:v2 \
  --no-traffic

# 逐步轉移流量
gcloud run services update-traffic my-service \
  --to-revisions=my-service-v2=50,my-service-v1=50

# 全部轉到新版
gcloud run services update-traffic my-service \
  --to-latest

自訂網域與 HTTPS 設定

設定自訂網域:

  1. 進入 Cloud Run → 選擇服務 → Manage Custom Domains
  2. 點擊「Add Mapping」
  3. 輸入你的網域(例如 api.example.com)
  4. 按照指示設定 DNS

DNS 設定:

HTTPS:

環境變數與 Secret 管理

設定環境變數:

gcloud run deploy my-service \
  --set-env-vars=DATABASE_URL=xxx,API_KEY=yyy

使用 Secret Manager:

# 先建立 Secret
echo -n "my-secret-value" | gcloud secrets create my-secret --data-file=-

# 部署時掛載 Secret
gcloud run deploy my-service \
  --set-secrets=API_KEY=my-secret:latest

好處:



GKE(Google Kubernetes Engine)入門

如果你的服務規模夠大、夠複雜,GKE 是最強大的選擇。

GKE 叢集建立與設定

使用 Console 建立:

  1. 進入 GKE → Create Cluster
  2. 選擇模式:Autopilot 或 Standard(下一節說明)
  3. 設定名稱和區域
  4. 設定節點池(Standard 模式)
  5. 建立

使用 gcloud 建立:

# Autopilot 模式
gcloud container clusters create-auto my-cluster \
  --region=asia-east1

# Standard 模式
gcloud container clusters create my-cluster \
  --zone=asia-east1-b \
  --num-nodes=3 \
  --machine-type=e2-medium

取得叢集認證:

gcloud container clusters get-credentials my-cluster \
  --region=asia-east1

執行後就可以用 kubectl 操作叢集。

Autopilot vs Standard 模式比較

項目AutopilotStandard
節點管理Google 管理你自己管理
計費單位Pod 資源節點資源
設定彈性較少完全自訂
安全性預設強化自行設定
複雜度
適合對象大多數使用者需要特殊配置

建議:

工作負載部署基礎

部署一個簡單的應用:

建立 deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: asia-east1-docker.pkg.dev/PROJECT_ID/REPO/my-app:v1
        ports:
        - containerPort: 8080
        resources:
          requests:
            memory: "256Mi"
            cpu: "250m"
          limits:
            memory: "512Mi"
            cpu: "500m"

部署:

kubectl apply -f deployment.yaml

常用指令:

# 查看 Deployment
kubectl get deployments

# 查看 Pod
kubectl get pods

# 查看 Pod 日誌
kubectl logs <pod-name>

# 進入 Pod
kubectl exec -it <pod-name> -- /bin/sh

# 擴展副本數
kubectl scale deployment my-app --replicas=5

服務暴露與負載平衡

建立 Service:

apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  type: LoadBalancer
  selector:
    app: my-app
  ports:
  - port: 80
    targetPort: 8080

Service 類型:

類型用途外部存取
ClusterIP叢集內部通訊
NodePort開放節點 Port是(較少用)
LoadBalancerGCP 負載平衡器

Ingress(進階):

如果要管理多個服務的路由:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
  - host: api.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-app-service
            port:
              number: 80


儲存服務整合

運算服務常常需要搭配儲存。

Cloud Storage 掛載與使用

從 VM 存取 Cloud Storage:

# 安裝 gsutil(通常已預裝)
# 上傳檔案
gsutil cp local-file.txt gs://my-bucket/

# 下載檔案
gsutil cp gs://my-bucket/file.txt ./

# 同步資料夾
gsutil rsync -r ./local-folder gs://my-bucket/folder

從 Cloud Run 存取:

const {Storage} = require('@google-cloud/storage');
const storage = new Storage();

async function uploadFile() {
  await storage.bucket('my-bucket').upload('local-file.txt');
}

Persistent Disk 配置

新增磁碟到 VM:

# 建立磁碟
gcloud compute disks create my-disk \
  --size=100GB \
  --type=pd-ssd \
  --zone=asia-east1-b

# 掛載到 VM
gcloud compute instances attach-disk my-vm \
  --disk=my-disk \
  --zone=asia-east1-b

在 VM 內掛載:

# SSH 進入 VM 後
sudo mkfs.ext4 -m 0 -F /dev/sdb
sudo mkdir /mnt/data
sudo mount /dev/sdb /mnt/data

# 設定開機自動掛載
echo '/dev/sdb /mnt/data ext4 defaults 0 0' | sudo tee -a /etc/fstab

Filestore(NFS)應用場景

適合場景:

建立 Filestore:

gcloud filestore instances create my-filestore \
  --zone=asia-east1-b \
  --tier=BASIC_HDD \
  --file-share=name=vol1,capacity=1TB \
  --network=name=default

在 VM 掛載:

sudo apt-get install nfs-common
sudo mkdir /mnt/filestore
sudo mount 10.0.0.2:/vol1 /mnt/filestore


常見問題與最佳實踐

實務上常遇到的問題和解決方案。

效能調校建議

Compute Engine:

Cloud Run:

GKE:

成本控制技巧

Compute Engine:

Cloud Run:

GKE:

監控與日誌設定

Cloud Monitoring:

所有 GCP 服務的指標都會自動送到 Cloud Monitoring。

重要指標:

Cloud Logging:

# 查看 VM 日誌
gcloud logging read "resource.type=gce_instance"

# 查看 Cloud Run 日誌
gcloud logging read "resource.type=cloud_run_revision"

# 查看 GKE 日誌
gcloud logging read "resource.type=k8s_container"

設定警報:

  1. 進入 Cloud Monitoring → Alerting
  2. 建立 Alert Policy
  3. 選擇指標和條件
  4. 設定通知管道(Email、Slack、PagerDuty)

資安相關設定請見「GCP 資安與 Cloud Armor 防護完整指南」。



架構設計需要第二意見?

好的架構能節省數倍的營運成本。

預約架構諮詢,讓我們一起檢視你的雲端架構。

CloudSwap 的架構諮詢服務:



結論:建構你的 GCP 運算架構

看完這篇教學,你應該知道怎麼選擇和使用 GCP 的運算服務了。

快速回顧:

需求選擇原因
需要完全控制Compute Engine可以裝任何軟體
想要最省事Cloud Run不用管基礎設施
大規模微服務GKE強大的編排能力
流量不穩定Cloud Run可以縮到 0
需要 GPUCompute Engine支援 NVIDIA GPU
複雜網路需求GKE細緻的網路控制

下一步建議:

  1. 如果是新專案,從 Cloud Run 開始
  2. 如果需要完整控制,用 Compute Engine
  3. 如果服務數量超過 10 個,考慮 GKE
  4. 混合使用是常態,不要硬要全部用同一種

動手做是最好的學習方式。開一個測試專案,把這篇教學的範例都跑一遍吧!



延伸閱讀



圖片說明






參考資料

  1. Google Cloud,《Compute Engine Documentation》(2024)
  2. Google Cloud,《Cloud Run Documentation》(2024)
  3. Google Cloud,《Google Kubernetes Engine Documentation》(2024)
  4. Google Cloud,《Cloud Storage Documentation》(2024)
  5. Google Cloud,《Best Practices for Operating Containers》(2024)
GCPKubernetesDocker
上一篇
GCP vs AWS 雲端平台完整比較(2025):功能、價格、適用場景分析
下一篇
GCP 資安與 Cloud Armor 防護完整指南:打造安全的雲端架構