Ответ
ReplicaSet — это объект-контроллер в Kubernetes, который гарантирует, что в кластере постоянно работает заданное количество идентичных подов (Pods).
Основные функции:
- Масштабирование: поддерживает желаемое количество реплик (
spec.replicas). - Самоисцеление: автоматически пересоздает поды, если они завершаются, удаляются или нода выходит из строя.
- Селекторы: использует
selector.matchLabelsдля идентификации подов, которыми управляет. Поддерживает set-based селекторы (in,notin).
Пример манифеста ReplicaSet:
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: myapp-replicaset
spec:
replicas: 3 # Желаемое количество идентичных подов
selector:
matchLabels:
app: myapp # Управляет подами с этой меткой
template: # Шаблон для создания новых подов
metadata:
labels:
app: myapp
spec:
containers:
- name: nginx-container
image: nginx:1.21
ports:
- containerPort: 80
Важная практика: Прямое управление ReplicaSet используется редко. Основной инструмент для развертывания stateful/stateless приложений — Deployment. Deployment управляет ReplicaSet'ами и предоставляет декларативные стратегии обновления (rolling update, rollback). ReplicaSet является низкоуровневым строительным блоком для этих абстракций.