Kubernetes クラスターデプロイメント

エンタープライズ級部デプロイ —— 自動スケーリング、高可用性、ローリング更新

K8s いつ上げる

本当の話:大多数 Kubernetes 不要。単一 Docker Compose で結構なトラフィック耐える。だがあなたの状況こんな感じなら —— チーム複数人同時利用、自動スケーリング要、ゼロ停止アップデート必須 —— K8s 正解。

この記事は K8s で OpenClaw をデプロイする完全ガイド、クラスタ準備から HPA 自動スケーリングまで、段階的に。

K8s 部デプロイを 5 ステップで完結

1

クラスタ準備

K8s クラスタ先に構築。クラウド厂商マネージド K8s(Alibaba Cloud ACK、Tencent TKE、AWS EKS)使うか、kubeadm で自作。最低 3 ノード。1 master + 2 worker 推奨。

2

Deployment 作成

1 つの Deployment YAML 記述。OpenClaw Pod テンプレート、レプリカ数、リソース上限定義。レプリカ数最低 2。1 つダウン別の 1 つ対応。

3

Service 作成

Service は流量を各 Pod に分散する責任があります。クラスタ内部で使用するには ClusterIP タイプを使用し、または NodePort で直接外部にポートを公開します。

4

Ingress を設定

Ingress はクラスターの入口ゲートウェイで、ドメイン名ルーティングと TLS オフロード を担当します。1 つの 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 のローリングアップデートは組み込まれていますが、ロールバック方法を知る必要があります:

更新・ロールバック
# イメージバージョンを更新
このチュートリアルはあなたに役に立った?