Implantação de cluster Kubernetes
deploy nível empresa — escalabilidade automática, alta disponibilidade, atualização contínua
quando subir pro K8s
verdade falada: maioria das pessoas não precisa de Kubernetes. Single-machine Docker Compose aguenta bastante tráfego. Mas se sua situação é: vários do time usando junto, precisa escalabilidade automática, zero-downtime update — aí sim K8s faz sentido.
Esse artigo deixa claro: aquele device que você tem na mão dá conta ou não, precisa atualizar, a grana onde meter.
cinco passos deploy K8s
Isolamento
primeiro constrói cluster K8s. Dá pra usar K8s gerenciado do provedor (ACK Alibaba, TKE Tencent, AWS EKS), ou construir com kubeadm. Recomenda pelo menos 3 nó, 1 master + 2 worker.
cria Deployment
escreve um Deployment YAML, define template do Pod OpenClaw, número de réplica, limite de recurso. Número de réplica recomenda pelo menos 2, quando um cai outro consegue cobrir.
cria Service
Service é responsável por distribuir tráfego para cada Pod. Use tipo ClusterIP para uso interno do cluster, ou NodePort para expor diretamente porta para fora.
Configuração
Ingress é o gateway de entrada do cluster, responsável pelo roteamento de domínio e descarga TLS. Instala um Nginx Ingress Controller, depois configura regras Ingress.
Habilita HPA de auto scaling
HPA (Horizontal Pod Autoscaler) ajusta automaticamente a quantidade de Pod baseado em CPU ou memória. Expande automaticamente em horário de pico, reduz em horário de baixa demanda, economiza dinheiro e trabalho.
Configuração de Deployment
Esse é o sistema de servidor mais comum, é só copiar e colar:
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
Configuração Service
apiVersion: v1
Checklist antes de implantar
YAML pronto, alguns comandos conseguem implantar:
# Criar namespace
Atualização rolling e rollback
Atualização gradual do K8s é nativa, mas você precisa saber como voltar:
# Atualizar versão da imagem