Что такое etcd?

«Что такое etcd?» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

etcd — это распределенное, надежное хранилище типа «ключ-значение», используемое в качестве основного хранилища данных для координации и управления состоянием в распределенных системах. В экосистеме Kubernetes etcd выступает в роли «мозга» кластера, храня всю конфигурацию и состояние (состояния нод, подов, сервисов, секретов и т.д.).

Ключевые особенности для DevOps:

  • Консенсусный алгоритм Raft: Гарантирует согласованность и отказоустойчивость данных в кластере etcd.
  • Высокая доступность: Данные реплицируются между несколькими нодами etcd, формируя отказоустойчивый кластер.
  • Наблюдение (Watch): Клиенты могут подписываться на изменения ключей, что позволяет системам (вроде kube-apiserver) мгновенно реагировать на изменения конфигурации.
  • Безопасность: Поддержка аутентификации на основе клиентских сертификатов TLS и авторизации RBAC.

Пример базовых операций с утилитой etcdctl:

# Установка значения для ключа конфигурации приложения
etcdctl put /cluster/apps/frontend/replicas "3"

# Получение значения
etcdctl get /cluster/apps/frontend/replicas

# Просмотр всех ключей с префиксом (например, для дампа конфигурации)
etcdctl get /cluster/ --prefix

# Наблюдение за изменениями ключа в реальном времени
etcdctl watch /cluster/apps/frontend/replicas

В DevOps-практиках понимание etcd критически важно для отладки проблем кластера Kubernetes, выполнения резервного копирования (etcdctl snapshot save) и восстановления состояния системы.