2026년에 Docker 또는 Kubernetes에서 OpenClaw Gateway를 운용하는 팀은 배포를 빠르게 돌리면서도 종종 「컨테이너가 떠 있다」를 건강으로 봅니다. HTTP 프로브 경로, readiness 의미, 롤링 파라미터를 같은 변경 티켓에 두지 않으면 콜드 스타트 중 liveness kill, readiness 없이 컨테이너만 기다리는 depends_on로 인한 간헐적 502, 프로바이더 429를 Gateway 다운으로 오인한 끝없는 재시작이 납니다. 본문은 《Docker 프로덕션 런북》《업그레이드·마이그레이션》《프로바이더 라우팅·페일오버》와 범위를 맞추고, RCA용 함정 여섯, liveness·readiness·startup 매트릭스, Compose 대 Kubernetes 매핑, 붙여 넣을 YAML 조각, 여섯 단계 롤아웃 런북, 대시보드 지표 세 가지를 정리합니다. 안정적인 원격 Mac 실행면 배치도 다룹니다.
최근 OpenClaw 릴리스는 오케스트레이션 친화적 HTTP 엔드포인트를 추가합니다(정확한 경로와 포트는 고정한 이미지 태그와 릴리스 노트를 따릅니다. /health, /ready, /healthz 같은 이름이 생태계에 나타납니다). 아래 여섯 패턴을 RCA에 남기고 《설치 후 doctor 분류》의 어휘를 재사용합니다.
depends_on에 health 조건이 없는 경우: Gateway가 백엔드 소켓에 닿기 전에 종속 서비스가 뜨며 간헐적 502가 납니다.127.0.0.1은 되지만 ClusterIP는 실패해 앱 장애로 오독합니다.maxUnavailable: 새 Pod가 readiness를 통하기 전 옛 Pod가 비워져 짧은 full-red 창이 생깁니다.《크로스플랫폼 설치》와 비교하면 설치는 첫 부팅, 프로덕션은 장기 운용, 본문은 오케스트레이터가 건강을 판단하는 방식, 업그레이드 편은 이미지 이동과 롤백을 다룹니다.
Kubernetes 프로브 유형은 Docker healthcheck 재시작 의미와 1:1로 대응하지 않습니다. 아키텍처 리뷰에서 표를 사용합니다.
| 점검 | 전형적 실패 효과 | 검증 대상 | OpenClaw 지침 |
|---|---|---|---|
| startupProbe | 성공 전까지 liveness 실패 억제 | 느리지만 상한 있는 콜드 스타트 | 첫 설정 fetch, 인덱스, 의존 대기에 수 분 걸릴 때 씁니다 |
| livenessProbe | 컨테이너·Pod 재시작 | 데드락, 무반응 프로세스 | 외부 LLM에 의존하지 않고 최소 자가 점검만 둡니다 |
| readinessProbe | Service 엔드포인트에서 제거 | 트래픽 수신 준비 미완 | 경량 모델 핑이나 설정 로드 완료 신호를 넣을 수 있으나 페일오버 정책에 맞춥니다 |
| Docker healthcheck | 비정상 표시, 재시작은 정책에 따름 | 단일 호스트 Compose | depends_on: condition: service_healthy와 짝을 이룹니다(문법은 Compose v2 문서 기준) |
「건강」을 구체 필드로 내리면 자정 논쟁이 줄어듭니다.
| 차원 | Docker Compose(패턴) | Kubernetes Deployment |
|---|---|---|
| 프로브 수단 | healthcheck.test에 curl·wget | httpGet 또는 exec |
| 기동 유예 | start_period | startupProbe 또는 큰 initialDelaySeconds |
| 트래픽 분리 | 프록시·LB 층 또는 라벨에만 의존 | readinessProbe가 Endpoints 제어 |
| 롤링 | 수동 compose 순서 또는 외부 CD | maxSurge·maxUnavailable·minReadySeconds |
# 예—PORT와 경로는 태그 문서 값으로 바꾸세요
# Docker Compose(발췌)
healthcheck:
test: ["CMD-SHELL", "curl -fsS http://127.0.0.1:${GATEWAY_PORT}/health || exit 1"]
interval: 15s
timeout: 3s
retries: 5
start_period: 120s
# Kubernetes(발췌)
readinessProbe:
httpGet:
path: /ready
port: http
initialDelaySeconds: 10
periodSeconds: 10
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 30
periodSeconds: 20
주의: 업스트림은 2026.3.x 스타일 릴리스에서 /health, /ready, /healthz를 추가하거나 이름을 바꿀 수 있습니다. 조각을 복사하기 전 공식 문서에서 digest·태그를 확인하고 스테이징에서 컨테이너 안 curl -v로 검증합니다.
docker compose exec 또는 kubectl exec로 127.0.0.1을 두드린 뒤 Service 경로를 확인합니다.maxUnavailable과 유지보수 창을 문서화합니다.《Linux systemd·Tunnel》 경로에서는 터널 건강, 루프백 리스너, 상위 LB 점검을 맞추지 않으면 「터널은 살아 있으나 Gateway가 안 듣는다」는 위양성이 납니다.
kubectl rollout status나 compose 업그레이드 로그를 Git 변경과 대조해 프로브를 과도하게 조인 경우와 이미지 퇴행을 가릅니다.
소비자 기기는 절전, 디스크 지터, 계획 없는 OS 업데이트와 싸우며 기동 시간과 프로브 임계값이 흔들립니다. 롤링 창과 겹치면 당번 시간을 태웁니다. OpenClaw와 에이전트를 기대할 수 있는 SLA로 돌리려면 전용 연산, 안정적 이그레스, 버스트 친화 노드가 필요합니다.
파편화된 셀프호스트는 멀티리전 지연과 계약 운영도 어렵고, 프로브 조정과 호스트 재부팅 결합이 노트북에서 특히 아픕니다. 24시간 관측·롤링·롤백에 유리한 Gateway에는 전문 멀티리전 Apple Silicon 클라우드 Mac이 애드혹 하드웨어보다 유리한 경우가 많습니다. MACCOME은 Mac Mini M4·M4 Pro 베어메탈을 유연한 조건으로 제공하며 Gateway나 혼합 자동화 호스트로 씁니다. 먼저 《고객 센터》에서 접속을 확인하고 《대여 요금》과 《멀티리전 가이드》로 SKU를 확정하십시오.
파일럿에서는 목표 리전에서 단기 대여로 컨테이너 프로브, Service 프로브, 전체 롤링 연습을 한 번 통과한 뒤 월·분기 약정을 고정합니다.
자주 묻는 질문
프로브는 실패하는데 UI는 열립니다. 무엇이 기준인가요?
오케스트레이터가 검사하는 URL과 상태 코드입니다. 과금 맥락은 《대여 요금》을 보고, 프로브는 스테이징에서 컨테이너 안 curl로 재현합니다.
Docker 프로덕션 글과 어떻게 쓰나요?
프로덕션 편은 볼륨과 토큰을, 본문은 프로브와 롤아웃을 다룹니다. 《업그레이드·마이그레이션》까지 같은 변경에 붙이십시오.
429를 liveness에 태울까요?
일반적으로 아닙니다. 《프로바이더 라우팅·페일오버》에서 백오프와 라우팅을 다루고, readiness 결합은 명시적 SLO 선택입니다.