Что такое ReplicaSet в Kubernetes?

«Что такое ReplicaSet в Kubernetes?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

ReplicaSet — это объект-контроллер в Kubernetes, который гарантирует, что в кластере постоянно работает заданное количество идентичных подов (Pods).

Основные функции:

  1. Масштабирование: поддерживает желаемое количество реплик (spec.replicas).
  2. Самоисцеление: автоматически пересоздает поды, если они завершаются, удаляются или нода выходит из строя.
  3. Селекторы: использует 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 является низкоуровневым строительным блоком для этих абстракций.