Kubernetes クラスターデプロイメント
エンタープライズ級部デプロイ —— 自動スケーリング、高可用性、ローリング更新
K8s いつ上げる
本当の話:大多数 Kubernetes 不要。単一 Docker Compose で結構なトラフィック耐える。だがあなたの状況こんな感じなら —— チーム複数人同時利用、自動スケーリング要、ゼロ停止アップデート必須 —— K8s 正解。
この記事は K8s で OpenClaw をデプロイする完全ガイド、クラスタ準備から HPA 自動スケーリングまで、段階的に。
K8s 部デプロイを 5 ステップで完結
クラスタ準備
K8s クラスタ先に構築。クラウド厂商マネージド K8s(Alibaba Cloud ACK、Tencent TKE、AWS EKS)使うか、kubeadm で自作。最低 3 ノード。1 master + 2 worker 推奨。
Deployment 作成
1 つの Deployment YAML 記述。OpenClaw Pod テンプレート、レプリカ数、リソース上限定義。レプリカ数最低 2。1 つダウン別の 1 つ対応。
Service 作成
Service は流量を各 Pod に分散する責任があります。クラスタ内部で使用するには ClusterIP タイプを使用し、または NodePort で直接外部にポートを公開します。
Ingress を設定
Ingress はクラスターの入口ゲートウェイで、ドメイン名ルーティングと TLS オフロード を担当します。1 つの Nginx Ingress Controller をインストールしてから、Ingress ルールを設定するだけです。
HPA 自動スケーリング有効化
HPA(Horizontal Pod Autoscaler)は CPU またはメモリの使用率に基づいて Pod 数を自動的に増減します。ピーク時に自動スケールアップし、低谷時に自動スケールダウンすれば、お金も心も節約できます。
Deployment 設定
これはコア設定ファイル、OpenClaw の動く仕組みを定義:
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 設定
apiVersion: v1
デプロイコマンド
YAML で書いて、数個のコマンドでデプロイ上れます:
# 名前空間を作成
ローリング更新・ロールバック
K8s のローリングアップデートは組み込まれていますが、ロールバック方法を知る必要があります:
# イメージバージョンを更新