Kubernetes 叢集部署

企業級部署 —— 自動擴縮容、高可用、滾動更新

什麼時候該上 K8s

先說實話:大多數人用不著 Kubernetes。單機 Docker Compose 就能扛住不少流量了。但如果你的情況是這樣的 —— 團隊好幾個人同時用、需要自動擴縮容、要求零停機更新 —— 那 K8s 確實是正解。

這篇手把手帶你在 K8s 上部署 OpenClaw,從叢集準備到 HPA 自動擴縮容,一步步來。

五步搞定 K8s 部署

1

叢集準備

先把 K8s 叢集搭好。可以用雲廠商的託管 K8s(阿里雲 ACK、騰訊 TKE、AWS EKS),也可以用 kubeadm 自建。建議至少 3 個節點,1 master + 2 worker。

2

建立 Deployment

寫一個 Deployment YAML,定義 OpenClaw 的 Pod 模板、副本數、資源限制。副本數建議至少 2 個,保證一個挂了另一個能頂上。

3

建立 Service

Service 負責把流量分發到各個 Pod 上。用 ClusterIP 類型給叢集內部用,或者 NodePort 直接對外暴露連接埠。

4

設定 Ingress

Ingress 是叢集的入口網關,負責功能變數名稱路由和 TLS 卸載。裝一個 Nginx Ingress Controller,然後設定 Ingress 規則就行。

5

啟用 HPA 自動擴縮容

HPA(Horizontal Pod Autoscaler)根據 CPU 或記憶體使用率自動增減 Pod 數量。高峰期自動擴容,低谷期自動縮容,省錢又省心。

Deployment 設定

這是核心設定檔,定義了 OpenClaw 怎麼跑:

deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: openclaw
  namespace: openclaw
  labels:
    app: openclaw
spec:
  replicas: 2
  selector:
    matchLabels:
      app: openclaw
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  template:
    metadata:
      labels:
        app: openclaw
    spec:
      containers:
      - name: openclaw
        image: openclaw/openclaw:latest
        ports:
        - containerPort: 3000
        resources:
          requests:
            cpu: "500m"
            memory: "512Mi"
          limits:
            cpu: "2000m"
            memory: "2Gi"
        env:
        - name: OPENCLAW_API_KEY
          valueFrom:
            secretKeyRef:
              name: openclaw-secrets
              key: api-key
        livenessProbe:
          httpGet:
            path: /health
            port: 3000
          initialDelaySeconds: 30
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /health
            port: 3000
          initialDelaySeconds: 5
          periodSeconds: 5
        volumeMounts:
        - name: data
          mountPath: /app/data
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: openclaw-data

Service 設定

service.yaml
apiVersion: v1

部署指令

YAML 寫好了,幾條命令就能部署上去:

kubectl 部署指令
# 建立命名空間
💡 別為了炫技上 K8s。個人用或者小團隊(5 人以內),Docker Compose 完全夠用,運維成本低得多。K8s 的學習曲線很陡,叢集本身也需要維護。等你真的遇到單機扛不住、需要彈性伸縮的時候再考慮。

滾動更新與回滾

K8s 的滾動更新是自帶的,但你得知道怎麼回滾:

更新與回滾
# 更新鏡像版本
這篇教程對你有幫助嗎?