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 Engine | VM | 作業系統、Runtime、應用程式 | 需要完全控制、特殊軟體需求 |
| GKE | 容器編排 | 容器、Pod、Deployment | 大規模微服務、複雜編排 |
| Cloud Run | Serverless 容器 | 容器映像檔 | API 服務、Web 應用、快速部署 |
簡單記法:
- 要完全控制 → Compute Engine
- 要省事省錢 → Cloud Run
- 要大規模管理 → GKE
根據工作負載選擇適合的服務
選 Compute Engine 的情況:
- 需要安裝特定軟體(如授權軟體)
- 需要 GPU 做機器學習訓練
- 需要 Windows Server
- 傳統的單體應用(Monolithic App)
- 需要固定 IP 的服務
選 Cloud Run 的情況:
- HTTP 服務(API、Web)
- 流量不穩定(有時很忙、有時沒人用)
- 想要自動擴展
- 想要按請求計費(沒流量不收錢)
- 快速部署和迭代
選 GKE 的情況:
- 大量的微服務需要編排
- 需要細緻的網路控制
- 有 On-premise K8s 經驗想搬上雲
- 需要有狀態服務(Stateful)
- 企業級的容器平台需求
服務搭配與混合架構
實務上,很多專案會混用這些服務:
常見組合 1:前後端分離
- 前端:Cloud Run(靜態網站、SSR)
- 後端 API:Cloud Run
- 背景任務:Compute Engine
常見組合 2:微服務架構
- 主要服務:GKE
- 輕量 Webhook:Cloud Run
- 批次處理:Compute Engine(Spot VM)
常見組合 3:ML 工作流
- 模型訓練:Compute Engine(GPU)
- 模型服務:Cloud Run 或 GKE
- 資料處理:Dataflow
Compute Engine(VM)實戰教學
Compute Engine 是 GCP 最基本的運算服務。就像在雲端租一台電腦。
建立第一個 VM 執行個體
方法 1:使用 Cloud Console(Web 介面)
-
進入 Cloud Console → Compute Engine → VM instances
-
點擊「Create Instance」
-
設定基本資訊:
- Name:
my-first-vm - Region:
asia-east1(台灣) - Zone:
asia-east1-b
- Name:
-
選擇機器類型(下一節詳談)
-
選擇開機磁碟(下一節詳談)
-
設定防火牆:
- 勾選「Allow HTTP traffic」(如果要跑 Web)
- 勾選「Allow HTTPS traffic」
-
點擊「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 | 一般生產環境 | 💰💰 |
| N2D | AMD 處理器 | 性價比要求高 | 💰💰 |
| C2 | 運算優化 | CPU 密集型工作 | 💰💰💰 |
| M2 | 記憶體優化 | 大型資料庫、SAP | 💰💰💰💰 |
| A2 | GPU 優化 | ML 訓練、渲染 | 💰💰💰💰💰 |
怎麼選?
- 開發測試環境 →
e2-micro(免費)或e2-small - 小型 Web 服務 →
e2-medium - 一般生產環境 →
n2-standard-2起跳 - 資料庫 →
n2-highmem-* - 批次運算 →
c2-standard-*
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 |
建議:
- 開發測試 → pd-balanced,20-50GB
- 一般生產 → pd-balanced,50-100GB
- 資料庫 → pd-ssd 或 pd-extreme
網路與防火牆規則配置
預設網路設定:
每個 VM 預設會有:
- 內部 IP(VPC 內部使用)
- 外部 IP(對外連線用,可選)
防火牆規則設定:
# 允許 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
安全建議:
- 不要開放 0.0.0.0/0 的 SSH(全世界都能連)
- 使用 IAP(Identity-Aware Proxy)取代直接 SSH
- 定期檢視不必要的防火牆規則
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 運作原理
核心概念:
- 你打包一個容器映像檔
- 部署到 Cloud Run
- Cloud Run 自動處理:
- 啟動容器
- 負載平衡
- 自動擴展(0 到 N 個實例)
- HTTPS 憑證
- 自訂網域
計費方式:
- 只有在處理請求時才收費
- 沒有請求可以縮到 0 個實例
- 按 CPU 時間和記憶體計費
限制:
- 必須是 HTTP 服務(監聽在 PORT 環境變數指定的 Port)
- 請求超時最長 60 分鐘
- 單一請求最大記憶體 32GB
從 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 設定
設定自訂網域:
- 進入 Cloud Run → 選擇服務 → Manage Custom Domains
- 點擊「Add Mapping」
- 輸入你的網域(例如 api.example.com)
- 按照指示設定 DNS
DNS 設定:
- 在你的 DNS 服務商加入 CNAME 記錄
- 指向 Cloud Run 提供的目標
HTTPS:
- Cloud Run 自動提供 SSL 憑證
- 支援自動續約
- 不需要額外設定
環境變數與 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
好處:
- Secret 不會出現在部署指令或環境變數列表
- 可以設定 IAM 權限控制誰能存取
- 支援版本管理
GKE(Google Kubernetes Engine)入門
如果你的服務規模夠大、夠複雜,GKE 是最強大的選擇。
GKE 叢集建立與設定
使用 Console 建立:
- 進入 GKE → Create Cluster
- 選擇模式:Autopilot 或 Standard(下一節說明)
- 設定名稱和區域
- 設定節點池(Standard 模式)
- 建立
使用 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 模式比較
| 項目 | Autopilot | Standard |
|---|---|---|
| 節點管理 | Google 管理 | 你自己管理 |
| 計費單位 | Pod 資源 | 節點資源 |
| 設定彈性 | 較少 | 完全自訂 |
| 安全性 | 預設強化 | 自行設定 |
| 複雜度 | 低 | 高 |
| 適合對象 | 大多數使用者 | 需要特殊配置 |
建議:
- 剛開始用 GKE → Autopilot
- 需要 GPU、特殊節點配置 → Standard
- 想省管理心力 → Autopilot
- 有專職 K8s 團隊 → Standard
工作負載部署基礎
部署一個簡單的應用:
建立 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 | 是(較少用) |
| LoadBalancer | GCP 負載平衡器 | 是 |
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)應用場景
適合場景:
- 多台 VM 需要共享檔案
- 需要 POSIX 檔案系統語意
- 傳統應用需要 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:
- 選擇正確的機器類型(不要過度配置)
- 使用 SSD 而非 HDD 做資料庫
- 考慮使用 Local SSD 做暫存
- 開啟 Preemptible/Spot VM 做批次作業
Cloud Run:
- 設定適當的 concurrency(預設 80)
- 使用 min-instances 避免冷啟動
- 容器映像檔要小(使用 Alpine、Distroless)
- 善用 CPU boost 功能
GKE:
- 設定 Resource Requests 和 Limits
- 使用 HPA(Horizontal Pod Autoscaler)
- 考慮使用 Node Auto-provisioning
- 善用 Pod Disruption Budget
成本控制技巧
Compute Engine:
- 開發環境用 Spot VM
- 用 Scheduling 設定下班自動關機
- 定期清理未使用的磁碟和快照
Cloud Run:
- min-instances 設 0(允許縮到 0)
- 不需要時不要設太高的 max-instances
- 優化容器啟動時間
GKE:
- Autopilot 模式按 Pod 計費更精準
- 使用 Cluster Autoscaler
- 考慮 Spot Node Pool 跑可中斷工作
監控與日誌設定
Cloud Monitoring:
所有 GCP 服務的指標都會自動送到 Cloud Monitoring。
重要指標:
- CPU 使用率
- 記憶體使用率
- 網路流量
- 延遲和錯誤率
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"
設定警報:
- 進入 Cloud Monitoring → Alerting
- 建立 Alert Policy
- 選擇指標和條件
- 設定通知管道(Email、Slack、PagerDuty)
資安相關設定請見「GCP 資安與 Cloud Armor 防護完整指南」。
架構設計需要第二意見?
好的架構能節省數倍的營運成本。
預約架構諮詢,讓我們一起檢視你的雲端架構。
CloudInsight 的架構諮詢服務:
- 現有架構評估:找出效能瓶頸和成本浪費
- 遷移規劃:從地端到雲端的完整規劃
- 最佳實踐建議:根據你的需求推薦最適合的服務組合
- 概念驗證(POC):幫你快速驗證架構可行性
結論:建構你的 GCP 運算架構
看完這篇教學,你應該知道怎麼選擇和使用 GCP 的運算服務了。
快速回顧:
| 需求 | 選擇 | 原因 |
|---|---|---|
| 需要完全控制 | Compute Engine | 可以裝任何軟體 |
| 想要最省事 | Cloud Run | 不用管基礎設施 |
| 大規模微服務 | GKE | 強大的編排能力 |
| 流量不穩定 | Cloud Run | 可以縮到 0 |
| 需要 GPU | Compute Engine | 支援 NVIDIA GPU |
| 複雜網路需求 | GKE | 細緻的網路控制 |
下一步建議:
- 如果是新專案,從 Cloud Run 開始
- 如果需要完整控制,用 Compute Engine
- 如果服務數量超過 10 個,考慮 GKE
- 混合使用是常態,不要硬要全部用同一種
動手做是最好的學習方式。開一個測試專案,把這篇教學的範例都跑一遍吧!
延伸閱讀
- 了解 GCP 基礎知識,請參考 GCP 完整指南
- 想了解費用怎麼算,請見 GCP 定價與費用計算完整指南
- AI 相關服務請見 GCP AI/ML 與 Vertex AI 完整指南
- 資安設定請見 GCP 資安與 Cloud Armor 防護指南
- 準備考證照?請見 GCP 證照與課程完整學習指南
圖片說明
插圖:GCP 運算服務選擇決策樹
場景描述: 流程圖形式的決策樹,從頂部「選擇運算服務」開始,透過幾個問題分支到三個結果:Compute Engine、Cloud Run、GKE。問題包含「需要完全控制?」「是 HTTP 服務?」「需要大規模編排?」
視覺重點:
- 主要內容清晰呈現
必須出現的元素:
- 依據描述中的關鍵元素
需要顯示的中文字: 無
顏色調性: 專業、清晰
避免元素: 抽象圖形、齒輪、發光特效
Slug:
gcp-compute-service-decision-tree
插圖:Cloud Run 自動擴展示意圖
場景描述: 時間軸圖表顯示 Cloud Run 的擴展行為。X 軸是時間,Y 軸左側是請求數量(折線),右側是實例數量(長條)。圖表顯示請求增加時實例跟著增加,請求減少時實例也減少,直到歸零。
視覺重點:
- 主要內容清晰呈現
必須出現的元素:
- 依據描述中的關鍵元素
需要顯示的中文字: 無
顏色調性: 專業、清晰
避免元素: 抽象圖形、齒輪、發光特效
Slug:
cloud-run-autoscaling-timeline-chart
插圖:GKE 叢集架構圖
場景描述: 架構圖顯示 GKE 叢集的結構。外層是 Cluster 邊界,內部分為 Control Plane(Google 管理)和 Node Pool。Node Pool 內有多個 Node,每個 Node 內有多個 Pod。Load Balancer 在外部指向 Pod。
視覺重點:
- 主要內容清晰呈現
必須出現的元素:
- 依據描述中的關鍵元素
需要顯示的中文字: 無
顏色調性: 專業、清晰
避免元素: 抽象圖形、齒輪、發光特效
Slug:
gke-cluster-architecture-diagram
插圖:三種運算服務成本比較圖
場景描述: 折線圖比較三種運算服務在不同流量下的月成本。X 軸是月請求數(從 0 到 1000 萬),Y 軸是月成本。三條線分別代表 Compute Engine(平坦線)、Cloud Run(從零開始逐漸上升)、GKE(有固定成本後上升)。
視覺重點:
- 主要內容清晰呈現
必須出現的元素:
- 依據描述中的關鍵元素
需要顯示的中文字: 無
顏色調性: 專業、清晰
避免元素: 抽象圖形、齒輪、發光特效
Slug:
gcp-compute-services-cost-comparison-chart
參考資料
- Google Cloud,《Compute Engine Documentation》(2024)
- Google Cloud,《Cloud Run Documentation》(2024)
- Google Cloud,《Google Kubernetes Engine Documentation》(2024)
- Google Cloud,《Cloud Storage Documentation》(2024)
- Google Cloud,《Best Practices for Operating Containers》(2024)
相關文章
GCP 完整指南(2025):Google Cloud Platform 從入門概念到企業實戰
GCP(Google Cloud Platform)是什麼?本指南完整介紹 Google 雲端平台的核心服務、定價計算、證照考試與 AWS 比較,幫助企業選擇最適合的雲端方案。
GCPGCP AI/ML 與 Vertex AI 完整指南:從模型訓練到生產部署
GCP AI/ML 服務完整指南!深入解析 Vertex AI 平台功能、AutoML 自動化建模、Gemini API 應用,以及企業 AI 導入的最佳實踐與成本規劃。
GCPGCP 證照與課程完整學習指南(2025):從入門到專業認證
2025 年 GCP 證照考試完整攻略!涵蓋 Google Cloud 認證體系、推薦課程資源、學習路徑規劃與考試準備技巧,助你順利取得雲端專業認證。