Kubernetes: Chaos Monkey
Hoy os voy a enseñar una herramienta que me llama mucho la atención.
La herramienta en cuestión es Chaos Monkey, y la usa Netflix para matar pods aleatoriamente dentro de su infraestructura. Pero no Pods de desarrollo, obsoletos o no sé…la usa sobre Pods que están dando servicio de verdad. Parece de locos, pero tiene su sentido…
El proyecto en cuestión, fue creado por los ingenieros de la compañía en 2011. Lo que buscaban era crear una infraestructura sólida, pero que a su vez siempre “esté en el alambre”, teniendo procesos internos que provocaran problemas continuamente, de forma que validasen que sus sistemas no tenían problemas de disponibilidad.
En una infraestructura tradicional, si nos ponemos a tirar servidores o servicios sin discriminación, para poder comprobar que está todo trabajando adecuadamente, acabaríamos provocando algún problema más tarde o más temprano. Esto lo puedes hacer eventualmente y de forma más o menos controlada (fuera de horario), para comprobar el grado de HA de tus sistemas (seguro que hay valientes que lo hacen en plena carga de trabajo de la empresa de turno…)
Como hemos dicho varias veces, la naturaleza de un container es ser efímero, con lo que utilizar una herramienta de este tipo, no es descabellado del todo, cuando tus sistemas se ejecutan sobre ellos. Eso le pasa a Netflix. ¿Cuál es la solución a un problema con Pods o Containers? “Matar” al objeto que da el problema, para que se regenere…entonces, si yo coloco un sistema que provoca errores, la teoría, si todo es correcto, es que las automatizaciones que nos proporcionan tecnologías como Kubernetes, van a lograr dejar estable la infraestructura, prácticamente pase lo que pase, si es en la capa de servicios.
PROYECTO: https://github.com/Netflix/chaosmonkey
INSTALACION KUBE CHAOS MONKEY
El proceso de instalación es muy sencillo, en mi caso lo dejaré en un fichero kube-monkey.yaml:
$ git clone https://github.com/asobti/kube-monkey
$ cd kube-monkey/helm
$ helm install --name my-release kubemonkey -f kube-monkey.yaml
CONFIGURACION KUBE CHAOS MONKEY
Con el proceso anterior, lo que conseguimos es ejecutar Chaos Monkey en nuestro clúster de Kubernetes, pero a continuación le diremos qué Pod va a ser el que va a tener los problemas. Con el valor MTBF le diremos cada cuantos días va a suceder, el valor KILL-VALUE nos especifica cuántos PODS deben “matarse”… Guardar la configuración en otro fichero YAML y ejecutar el Deployment:
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: pod-elblogdenegu
namespace: hello-word-namespace
labels:
kube-monkey/enabled: enabled
kube-monkey/identifier: monkey-victim
kube-monkey/mtbf: '2'
kube-monkey/kill-mode: "fixed"
kube-monkey/kill-value: '1'
spec:
template:
metadata:
labels:
kube-monkey/enabled: enabled
kube-monkey/identifier: monkey-victim
Como veis, se puede ajustar, para no tiraros a la piscina sin salvavidas. Me parece un sistema que complementa a una buena monitorización, ya que valida tus clúster Kubernetes de una forma activa y automatizada.
Espero os parezca interesante…ya que es gratis, comparte ;P
¿Te ha gustado la entrada SÍGUENOS EN TWITTER?
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?