Skip to main content

ETCD (Distributed reliable Key-Value Store)

https://github.com/etcd-io/etcd

Como se mencionó anteriormente, ETCD es un almacén para guardar clave y valor de forma:

  • Segura
  • Rápida
  • Simple

Cuando una base de datos SQL añade una nueva entrada en una tabla, no toda la información se completa. Una nueva columna impactaría en la adición de esta información para todas las entradas (filas) de la tabla.

Alt text

En un almacén clave-valor como ETCD quedaría así.

Alt text

Toda la información de una entrada queda junta en una única tabla clave-valor, siendo que una nueva entrada en ella no impacta en otras. YAML y JSON consiguen representar estas tablas de forma muy simple.

Instalación

Para instalar solo hay que descargar el binario, extraer y ejecutar.

curl -L https://github.com/etcd-io/etcd/releases/download/v3.5.11/etcd-v3.5.11-linux-amd64.tar.gz -o etcd-v3.5.11-linux-amd64.tar.gz
tar xzvf etcd-v3.5.11-linux-amd64.tar.gz
tar - xzvf
cd etcd-v3.5.11-linux-amd64
./etcd
....#Eliminado
94d","cluster-version":"3.5"}
{"level":"info","ts":"2023-12-22T19:55:41.701034-0300","caller":"api/capability.go:75","msg":"enabled capabilities for version","cluster-version":"3.5"}
{"level":"info","ts":"2023-12-22T19:55:41.701049-0300","caller":"etcdserver/server.go:2599","msg":"cluster version is updated","cluster-version":"3.5"}
{"level":"info","ts":"2023-12-22T19:55:41.701228-0300","caller":"embed/serve.go:187","msg":"serving client traffic insecurely; this is strongly discouraged!","traffic":"grpc+http","address":"127.0.0.1:2379"} #<<<<<

Se iniciará un servicio que escuchará en el puerto 2379.

Usando un cliente podemos recuperar y almacenar información. El cliente que ya viene con el paquete es etcdctl.

./etcdctl version
etcdctl version: 3.5.11
API version: 3.5
➜ ./etcdctl put key1 value1
OK
➜ ./etcdctl get key1
key1
value1

Si se desea instalar etcdctl en una máquina Ubuntu podemos instalar el paquete.

sudo apt-get install etcd-client

ETCD en Kubernetes

Sirve para almacenar la información de los nodos, pods, configuraciones, secrets, cuentas, roles, bindings, etc. Toda la información que el Kube-APIServer gestiona queda almacenada en ETCD, es decir, si perdemos ETCD todo el cluster se pierde.

Solo después de actualizada la información en ETCD un cambio en el cluster se considera completo.

Generalmente ETCD termina quedando junto a los nodos del control plane cuando configuramos el cluster usando kubeadm, pero ETCD puede ser un servicio aparte de Kubernetes. Durante el curso aprenderemos cómo configurar un cluster con ETCD externo en alta disponibilidad.