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 的滾動更新是自帶的,但你得知道怎麼回滾:
更新與回滾
# 更新鏡像版本