https://github.com/ctrox/zeropod
Zeropod é um runtime especializado para Kubernetes, implementado como um containerd shim, projetado para otimizar o uso de recursos ao automaticamente criar checkpoints e “pausar” containers que estão ociosos por um tempo determinado (baseado na ausência de conexões TCP). Quando ocioso, o Zeropod salva o estado completo da memória do container no disco usando CRIU (Checkpoint/Restore In Userspace). Se houver novo tráfego, ele intercepta a conexão de entrada, restaura o container em dezenas a centenas de milissegundos e encaminha a requisição — tornando o processo quase invisível para os usuários finais.
Principais Características
- Escala até Zero: Permite que pods reduzam o uso de recursos a zero quando inativos, mas restauram instantaneamente o estado completo e disponibilidade quando necessário. O pod nunca é marcado como terminado no Kubernetes, garantindo que integrações operacionais como
kubectl exec
continuem funcionando normalmente. - Checkpoint Automático: O Zeropod monitora a atividade TCP. Após um período configurável de inatividade, ele cria um checkpoint do container em execução no disco.
- Restauração Quase Instantânea: Quando uma nova conexão chega, o Zeropod reativa o container a partir do último estado com atraso mínimo.
- Migração & Migração ao Vivo: Suporta migração de pods entre nós — tanto para containers “pausados” quanto (com recursos recentes) migração ao vivo de containers em execução sem tempo de inatividade, utilizando a migração preguiçosa do CRIU e transferência de memória segura via TLS pod-a-pod.
- Eficiência de Recursos: Enquanto os pods estão pausados, suas alocações de CPU/memória podem ser reduzidas ou liberadas, diminuindo custos em ambientes de desenvolvimento, staging ou com baixo tráfego.
- eBPF para Redirecionamento de Tráfego: Um programa eBPF intercepta o tráfego TCP, direcionando novas conexões para um processo “ativador” leve, que inicia a lógica de restauração e retoma a operação normal do container.
- Métricas Prometheus: Expõe métricas operacionais e de checkpoint.
Casos de Uso
- Sites e APIs com baixo tráfego.
- Ambientes de desenvolvimento e staging com uso esporádico.
- Oferta de pequenos níveis “gratuitos” ou reduzidos em PaaS.
- Sites “quase estáticos” que eventualmente precisam de processamento dinâmico no servidor.
- Qualquer workload Kubernetes que se beneficie da economia de custos durante períodos ociosos sem perder disponibilidade instantânea.
Configuração
Para usar o Zeropod, defina o runtimeClassName
do pod como zeropod
e aplique algumas anotações:
zeropod.ctrox.dev/container-names
: Quais containers no pod devem ser gerenciados.zeropod.ctrox.dev/ports-map
: Portas a monitorar para gatilhos de restauração.zeropod.ctrox.dev/scaledown-duration
: Tempo de inatividade antes de reduzir escala (padrão: 1 minuto; zero desativa o scale-down automático).
Atividade Recente
Logs recentes de workflows e releases mostram desenvolvimento constante, incluindo a integração de novas capacidades de migração ao vivo e atualizações contínuas para suportar novas versões do CRIU e componentes instaladores mais robustos.
Resumindo, o Zeropod traz o conceito de “escala até zero” e restauração rápida e com estado para ambientes Kubernetes padrão com configuração mínima, permitindo eficiência no uso de recursos para quase qualquer perfil de aplicação.
Recomendação do Kope