Chaos Engineering é uma prática que envolve a introdução deliberada de falhas em um sistema para testar sua resiliência. Uma das ferramentas populares nessa prática é o Chaos Monkey, que é utilizada para interromper serviços em um ambiente controlado e observar como o sistema responde. Neste artigo, vamos explorar como criar um "Chaos Monkey" para Kubernetes, utilizando um script em Python que deleta pods de forma aleatória em um cluster, para avaliar a robustez do sistema.
kubernetes
para Python.Para interagir com a API do Kubernetes usando Python, precisamos da biblioteca kubernetes
. Instale-a utilizando o seguinte comando:
pip install kubernetes
Aqui está o script Python que deleta pods aleatoriamente em namespaces específicos.
import random
import time
from kubernetes import client, config
def delete_random_pod():
config.load_kube_config()
v1 = client.CoreV1Api()
namespaces = ["default", "kube-system", "your-namespace"]
namespace = random.choice(namespaces)
pods = v1.list_namespaced_pod(namespace)
if not pods.items:
print(f"No pods found in namespace: {namespace}")
return
pod = random.choice(pods.items)
pod_name = pod.metadata.name
print(f"Deleting pod {pod_name} in namespace {namespace}")
v1.delete_namespaced_pod(name=pod_name, namespace=namespace)
if __name__ == "__main__":
while True:
delete_random_pod()
time.sleep(3600) # Executa a cada 1 hora
Carregando a Configuração do Kubernetes: Utiliza config.load_kube_config()
para carregar a configuração do Kubernetes do contexto atual.
Selecionando um Namespace Aleatório: A lista namespaces
contém os namespaces dos quais os pods podem ser excluídos. Escolhemos um namespace aleatoriamente usando random.choice()
.
Listando e Deletando Pods: Listamos os pods no namespace selecionado. Se houver pods, escolhemos um aleatoriamente e o deletamos.
Agendamento da Execução: Utilizamos um loop infinito para executar a exclusão de pods a cada 1 hora (time.sleep(3600)
).