Kubernetes для AI микросервисов — это оркестрация контейнерных AI-сервисов с автоматическим масштабированием, самовосстановлением и управлением конфигурацией. В этой статье мы развернём AI-сервис с ModelSwitch API в Kubernetes и настроим автоскейлинг по нагрузке.
Kubernetes Deployment
Создайте Deployment с правильными resource requests и liveness/readiness пробами:
# k8s/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ai-service
labels:
app: ai-service
spec:
replicas: 2
selector:
matchLabels:
app: ai-service
template:
metadata:
labels:
app: ai-service
spec:
containers:
- name: ai-service
image: your-registry/ai-service:latest
ports:
- containerPort: 8000
env:
- name: MODELSWITCH_API_KEY
valueFrom:
secretKeyRef:
name: ai-secrets
key: modelswitch-api-key
- name: MODELSWITCH_BASE_URL
valueFrom:
configMapKeyRef:
name: ai-config
key: modelswitch-base-url
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 10
periodSeconds: 30
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
periodSeconds: 10
Resource requests гарантируют, что поду выделяются ресурсы, а liveness и readiness пробы обеспечивают автоматический перезапуск при сбоях и исключение из балансировки нездоровых подов.
Secrets и ConfigMap
Храните API-ключ в Kubernetes Secret, а конфигурацию — в ConfigMap:
# Создание секрета с API-ключом
kubectl create secret generic ai-secrets --from-literal=modelswitch-api-key=msk_ваш_ключ
# Создание ConfigMap с конфигурацией
kubectl apply -f - <
Горизонтальный автоскейлинг (HPA)
Настройте HPA для автоматического масштабирования при росте нагрузки:
# k8s/hpa.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: ai-service-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: ai-service
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 80
behavior:
scaleUp:
stabilizationWindowSeconds: 60
policies:
- type: Pods
value: 2
periodSeconds: 60
scaleDown:
stabilizationWindowSeconds: 300
policies:
- type: Pods
value: 1
periodSeconds: 120
HPA будет добавлять поды при превышении 70% CPU или 80% памяти и убирать их при снижении нагрузки. Stabilization window предотвращает колебания — поды не будут постоянно создаваться и удаляться.
Service и Ingress
Создайте Service и Ingress для доступа к AI-сервису извне:
# k8s/service.yaml
apiVersion: v1
kind: Service
metadata:
name: ai-service
spec:
selector:
app: ai-service
ports:
- port: 80
targetPort: 8000
type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ai-service-ingress
annotations:
nginx.ingress.kubernetes.io/proxy-read-timeout: "120"
nginx.ingress.kubernetes.io/proxy-send-timeout: "120"
spec:
rules:
- host: ai.your-domain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: ai-service
port:
number: 80
Обратите внимание на увеличенные таймауты proxy (120 секунд) — генерация AI может занимать значительное время, особенно для больших промптов.
Заключение
Kubernetes обеспечивает надёжную оркестрацию AI-микросервисов с автоскейлингом, самовосстановлением и безопасным управлением секретами. ModelSwitch упрощает конфигурацию: один API-ключ в Kubernetes Secret заменяет ключи от множества AI-провайдеров. Используйте HPA для автоматического масштабирования под переменную AI-нагрузку.