跳至主要內容
ESC
Study Jam:雲端基礎實作 — 第 9/10 篇

部署應用到 Kubernetes

GCP

課程概述

Kubernetes 最初是 Google 開源出來的,而 GKE(Google Kubernetes Engine)就是 Google Cloud 幫你全託管的 Kubernetes 服務。這堂課我們從建立叢集開始,一路把應用容器化、部署、再把服務暴露出去。

你將學到

  • 建立與配置 GKE 叢集
  • 使用 kubectl 管理工作負載
  • 建立 Deployment 與 Service
  • 實作滾動更新與回滾
  • 理解 Pod、Node、Cluster 的關係

核心概念

Kubernetes 核心元件

Cluster(叢集)
  ├── Control Plane(控制面)— API Server、Scheduler、etcd
  └── Node Pool(節點池)
        └── Node(節點)
              └── Pod(容器組)
                    └── Container(容器)

常用 kubectl 指令

# 建立 GKE 叢集
gcloud container clusters create my-cluster \
  --zone us-central1-a --num-nodes 3

# 取得叢集認證
gcloud container clusters get-credentials my-cluster --zone us-central1-a

# 部署應用
kubectl create deployment nginx --image=nginx:latest

# 暴露服務
kubectl expose deployment nginx --type=LoadBalancer --port=80

# 擴展副本數
kubectl scale deployment nginx --replicas=3

# 查看 Pod 狀態
kubectl get pods -o wide

# 滾動更新
kubectl set image deployment/nginx nginx=nginx:1.25

# 回滾
kubectl rollout undo deployment/nginx

Deployment YAML 範例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: web
          image: us-central1-docker.pkg.dev/PROJECT/repo/app:v1
          ports:
            - containerPort: 8080
          resources:
            requests:
              cpu: '250m'
              memory: '128Mi'

實作重點

  • GKE Autopilot 模式不用自己管節點,按 Pod 用掉的資源計費,剛入門很省事
  • Standard 模式可以完整控制節點,比較進階的需求才用得到
  • 建立叢集時挑對機器類型,大多數工作負載用 e2-medium 就夠了
  • Pod 起不來時,用 kubectl describe pod 來查問題出在哪

Skill Badge 指引

Lab 連結Deploy to Kubernetes in Google Cloud — 完成此 lab 可獲得 Skill Badge

延伸學習

Study Jam:雲端基礎實作 — 9/10 完成 查看系列全覽 →

留言討論

徽章解鎖!