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

Docker 패키지 활성화

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의 롤링 업데이트는 기본으로 들어있지만 롤백 방법을 알아야 함:

업데이트는 노가다일 필요 없음
# 이미지 버전 업데이트
이 튜토리얼이 도움 됐나?