Ответ
Etcd — это распределенное key-value хранилище, которое служит единственным источником истины для всего состояния кластера Kubernetes (метаданные Pod'ов, Services, ConfigMaps, Secrets и т.д.).
Если etcd кластер полностью теряет кворум (например, падает большинство нод):
- API-сервер Kubernetes становится недоступен. Команды
kubectl(get, create, delete) будут завершаться с ошибками типа "connection refused" или "the server is currently unable to handle the request". - Управляющие плоскости (control plane) парализуются:
- kube-controller-manager и kube-scheduler перестанут работать, так как не могут общаться с API-сервером.
- Это означает, что новые Pod'ы не смогут создаваться, Deployment'ы не смогут масштабироваться или обновляться, отказавшие Pod'ы не будут пересозданы.
- Существующие рабочие нагрузки (Pods, Services):
- Поды на рабочих нодах (worker nodes) продолжат работать. Kubelet на каждой ноде управляет жизненным циклом своих Pod'ов независимо.
- Сетевая связность между Pod'ами (через CNI, например, Calico или Cilium) и работа Service'ов (через kube-proxy или CNI) также продолжат работать, так как их конфигурация уже применена на нодах.
- CoreDNS/kube-dNS будут отвечать на запросы, основанные на последнем известном состоянии Service'ов.
Кратко: кластер переходит в "замороженное" состояние. Существующие приложения работают, но любое изменение или самовосстановление становится невозможным.
Восстановление и отказоустойчивость (DevOps perspective):
- Кворум: Продакшен-кластеры должны иметь не менее 3 нод etcd (лучше нечетное число: 3, 5) для отказоустойчивости. Кластер может пережить отказ
(N-1)/2нод. - Регулярные бэкапы: Критически важно настроить автоматическое создание и проверку снапшотов etcd (например, с помощью
etcdctl snapshot save). Восстановление кластера из бэкапа — стандартная процедура на случай катастрофы. - Мониторинг: Необходимо мониторить здоровье etcd-нод (доступность, лидерство, задержки записи) через Prometheus.
- Управляемые сервисы: Использование managed-Kubernetes (GKE, EKS, AKS) снимает с команды операционную нагрузку по поддержанию etcd, так как провайдер обеспечивает его отказоустойчивость и бэкапы.