Команды, которые крутят OpenClaw Gateway в Docker или Kubernetes, в 2026 году часто выкатывают быстро, но по-прежнему принимают «контейнер запущен» за «здоров». Без HTTP-путей проб, семантики readiness и параметров rolling на том же тикете получаются убийства liveness на холодном старте, depends_on, который ждёт контейнеры, но не готовность, или 429 от провайдера, ошибочно принятый за мёртвый Gateway и бесконечные рестарты. Текст увязан с runbook по Docker в продакшене, чеклистом апгрейда и миграции и маршрутизацией и failover провайдеров; даны шесть типовых ловушек для RCA, матрица liveness/readiness/startup, сопоставление Compose и Kubernetes, фрагменты YAML, шестишаговый runbook выката и три метрики для дашборда, плюс размещение Gateway на стабильной плоскости удалённого Mac.
Свежие релизы OpenClaw добавляют HTTP-эндпоинты, удобные для оркестраторов (точные пути и порты — по вашему зафиксированному образу и release notes; в экосистеме встречаются имена вроде /health, /ready, /healthz). Фиксируйте шесть сценариев в RCA и используйте ту же лексику, что в doctor и постинсталляционном триаже.
depends_on без условий health: зависимые сервисы стартуют, пока Gateway ещё не держит backend-сокет — плавающие 502.127.0.0.1 в Pod работает, ClusterIP — нет; ошибочно трактуют как падение приложения.maxUnavailable: старые Pod уходят до того, как новые проходят readiness — короткие окна полного отказа.Относительно кроссплатформенного гайда по установке: установка закрывает первый запуск; продакшен — долгую эксплуатацию; эта статья — как оркестратор решает «здоров»; апгрейды — смену образа и откат.
Типы проб Kubernetes не совпадают один в один с рестартами Docker healthcheck; таблицу используйте на архитектурных ревью.
| Проверка | Типичный эффект при сбое | Что валидирует | Ориентир для OpenClaw |
|---|---|---|---|
| startupProbe | Подавляет сбои liveness до успеха | Медленный, но ограниченный cold start | Когда первая загрузка конфигурации, индексы или зависимости занимают минуты |
| livenessProbe | Перезапуск контейнера или Pod | Дедлок, неотвечающий процесс | Без внешних LLM; минимальная самопроверка |
| readinessProbe | Исключение из endpoints Service | Не готов к трафику | Допустим лёгкий ping модели или сигнал загрузки конфигурации — согласовать с политикой failover |
| Docker healthcheck | Помечает unhealthy; рестарт зависит от политики | Однохостовый Compose | Сочетать с depends_on: condition: service_healthy (синтаксис по доке Compose v2) |
Явная формулировка «здоров» снимает споры в ночных инцидентах.
| Измерение | Docker Compose (паттерн) | Deployment в Kubernetes |
|---|---|---|
| Команда пробы | healthcheck.test с curl/wget | httpGet или exec |
| Грейс на старте | start_period | startupProbe или больший initialDelaySeconds |
| Снятие трафика | Слой прокси/LB или только метка health | readinessProbe управляет Endpoints |
| Rolling | Ручной порядок 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
Внимание: upstream может добавлять или переименовывать /health, /ready, /healthz в релизах вроде 2026.3.x. Перед копированием сниппетов сверьтесь с официальной документацией для вашего digest/тега и проверьте curl -v на staging.
127.0.0.1 через docker compose exec или kubectl exec, затем через Service.maxUnavailable относительно окна обслуживания.На пути Linux systemd + Tunnel согласуйте health туннеля, loopback-слушатели и проверки upstream LB — иначе возможны ложноположительные «туннель жив, Gateway не слушает».
Сопоставляйте kubectl rollout status или логи апгрейда compose с изменениями в Git, чтобы отделить слишком жёсткие пробы от регрессий образа.
Потребительское железо борется со сном, джиттером диска и внеплановыми обновлениями ОС — время старта и пороги проб плывут. Вместе с окнами rolling это сжигает часы дежурства. Для OpenClaw и агентов под ожидаемым SLA нужны выделенные вычисления, стабильный egress и узлы с запасом по пику.
Разрозненный self-hosting усложняет мультирегиональную задержку и контрактные условия: на ноутбуках связка тюнинга проб и перезагрузок хоста болезненна. Для наблюдаемых, roll-friendly и откатываемых Gateway профессиональные мультирегиональные облачные Mac на Apple Silicon обычно выигрывают у нерегламентированного железа. MACCOME предлагает Mac Mini M4 / M4 Pro bare-metal на гибких условиях как узел Gateway или смешанной автоматизации — начните с центра помощи по языку доступа, затем тарифами аренды и мультирегиональным гайдом для финализации SKU.
Пилот: краткосрочная аренда в целевом регионе, прогон контейнерных проб, проб Service и одного полного rolling-упражнения до фиксации помесячных или квартальных условий.
Вопросы
Пробы падают, но UI открывается — что считать источником истины?
URL, метод и код, заданные оркестратором. Для коммерческого контекста откройте тарифы аренды; для проб воспроизведите curl внутри контейнера на staging.
Как использовать вместе со статьёй про Docker в продакшене?
Продакшен — про тома и токены; здесь — про пробы и выкаты. Прикрепите оба материала и апгрейды к одному изменению.
Должен ли 429 бить liveness?
Как правило нет — см. маршрутизацию и failover провайдеров для backoff и маршрутов; связка readiness с внешней моделью — осознанный выбор SLO.