Limpeza de Recursos K3s
Este script instala e configura um sistema automatizado de limpeza K3s que ajuda a manter seu cluster K3s removendo containers parados e imagens não utilizadas.
📋 O que ele faz
O script de instalação configura:
- Um script de limpeza em
/usr/local/bin/k3s-cleanup.sh - Um cron job configurável (padrão: diariamente às 2:00 AM)
- Registro de logs em
/var/log/k3s-cleanup.log - Configuração de logrotate para gerenciar retenção de logs (padrão: 7 dias)
- Usa o caminho completo
/usr/local/bin/k3spara compatibilidade com cron
O processo de limpeza:
- ✅ Remove containers parados (estado Created/Exited)
- ✅ Remove imagens não utilizadas para liberar espaço em disco
- ✅ Mostra uso de disco antes e depois da limpeza
- ✅ Registra todas as operações com timestamps
🚀 Instalação Rápida
Execução direta com padrões (2:00 AM diariamente, retenção de logs de 7 dias)
curl -fsSL https://eliasmeireles.com.br/tools/k8s/install-k3s-cleanup.sh | sudo bash
Execução direta com opções personalizadas
# Download e execução com agendamento personalizado (ex: a cada 6 horas)
curl -fsSL https://eliasmeireles.com.br/tools/k8s/install-k3s-cleanup.sh | sudo bash -s -- -s '0 */6 * * *'
# Com retenção de logs personalizada (16 dias)
curl -fsSL https://eliasmeireles.com.br/tools/k8s/install-k3s-cleanup.sh | sudo bash -s -- -lk 16
# Com agendamento e retenção de logs personalizados
curl -fsSL https://eliasmeireles.com.br/tools/k8s/install-k3s-cleanup.sh | sudo bash -s -- -s '0 */6 * * *' -lk 16
Instalação manual
# Download do script
wget https://eliasmeireles.com.br/tools/k8s/install-k3s-cleanup.sh
# Tornar executável
chmod +x install-k3s-cleanup.sh
# Executar com padrões (2:00 AM diariamente, retenção de 7 dias)
sudo ./install-k3s-cleanup.sh
# Com agendamento personalizado
sudo ./install-k3s-cleanup.sh -s '0 */6 * * *'
# Com retenção de logs personalizada
sudo ./install-k3s-cleanup.sh -lk 16
# Com agendamento e retenção de logs personalizados
sudo ./install-k3s-cleanup.sh -s '0 */6 * * *' -lk 16
# Mostrar ajuda
sudo ./install-k3s-cleanup.sh -h
📋 Requisitos
- Privilégios root: O script deve ser executado como root ou com
sudo - K3s instalado: O script requer que o K3s esteja instalado em
/usr/local/bin/k3s - Serviço cron: Para agendamento automatizado (geralmente pré-instalado na maioria dos sistemas)
🛠️ Opções de Linha de Comando
| Flag | Forma Longa | Descrição | Padrão |
|---|---|---|---|
-s | --schedule | Expressão de agendamento cron | 0 2 * * * (2:00 AM diariamente) |
-lk | --log-keep | Dias para manter logs | 7 |
-h | --help | Mostrar mensagem de ajuda | - |
🔧 Uso
Após a Instalação
O script configura automaticamente um cron job diário, mas você também pode executá-lo manualmente:
# Executar limpeza manualmente
sudo /usr/local/bin/k3s-cleanup.sh
# Ver logs de limpeza
sudo tail -f /var/log/k3s-cleanup.log
# Verificar cron jobs atuais
crontab -l | grep k3s-cleanup
Operações de Limpeza Manual
Se você precisar de mais controle, pode usar comandos crictl do K3s diretamente:
# Listar todos os containers
sudo k3s crictl ps -a
# Remover containers parados específicos
sudo k3s crictl rm <container-id>
# Listar todas as imagens
sudo k3s crictl images
# Remover imagens não utilizadas
sudo k3s crictl rmi --prune
📊 Monitoramento
Verificar Uso de Disco
# Antes da limpeza
df -h | grep mnt
# Ver histórico de limpeza
sudo grep "Disk usage" /var/log/k3s-cleanup.log
Ver Logs
# Ver logs recentes de limpeza
sudo tail -20 /var/log/k3s-cleanup.log
# Ver todos os logs de limpeza
sudo cat /var/log/k3s-cleanup.log
# Seguir logs em tempo real
sudo tail -f /var/log/k3s-cleanup.log
# Ver logs rotacionados (comprimidos)
sudo zcat /var/log/k3s-cleanup.log.1.gz
# Verificar configuração do logrotate
cat /etc/logrotate.d/k3s-cleanup
⚙️ Configuração
Modificar Agendamento Cron e Retenção de Logs
Você pode alterar o agendamento e a retenção de logs executando o script de instalação novamente:
# Alterar apenas o agendamento
sudo ./install-k3s-cleanup.sh -s '0 */6 * * *'
# Alterar apenas a retenção de logs
sudo ./install-k3s-cleanup.sh -lk 30
# Alterar ambos agendamento e retenção de logs
sudo ./install-k3s-cleanup.sh -s '0 */6 * * *' -lk 16
# O script irá:
# 1. Remover a entrada existente do crontab
# 2. Criar uma nova entrada com o agendamento atualizado
# 3. Atualizar configuração do logrotate
Exemplos de Agendamento
sudo ./install-k3s-cleanup.sh -s '0 2 * * *' # Diariamente às 2:00 AM (padrão)
sudo ./install-k3s-cleanup.sh -s '0 */6 * * *' # A cada 6 horas
sudo ./install-k3s-cleanup.sh -s '30 3 * * *' # Diariamente às 3:30 AM
sudo ./install-k3s-cleanup.sh -s '0 1 * * 0' # Semanalmente aos domingos às 1:00 AM
sudo ./install-k3s-cleanup.sh -s '0 3 1 * *' # Mensalmente no dia 1 às 3:00 AM
Exemplos de Retenção de Logs
sudo ./install-k3s-cleanup.sh -lk 7 # Manter logs por 7 dias (padrão)
sudo ./install-k3s-cleanup.sh -lk 16 # Manter logs por 16 dias
sudo ./install-k3s-cleanup.sh -lk 30 # Manter logs por 30 dias
Edição Manual do Crontab
Alternativamente, você pode editar o crontab diretamente:
# Editar crontab
sudo crontab -e
# Modificar o agendamento na entrada k3s-cleanup
Desabilitar Limpeza Automática
# Remover do crontab
sudo crontab -e
# Deletar a linha contendo k3s-cleanup.sh
🔍 Solução de Problemas
Problemas Comuns
Script falha com “k3s command not found”
# Verificar se k3s está instalado no local esperado
ls -la /usr/local/bin/k3s
# Se k3s estiver em outro lugar, criar um symlink
sudo ln -s $(which k3s) /usr/local/bin/k3s
# O script usa o caminho completo /usr/local/bin/k3s para compatibilidade com cron
Erros de permissão negada
# Garantir que o script tenha as permissões corretas
sudo chmod +x /usr/local/bin/k3s-cleanup.sh
# Verificar propriedade do arquivo
ls -la /usr/local/bin/k3s-cleanup.sh
Cron job não está executando
# Verificar se o serviço cron está executando
sudo systemctl status cron
# Iniciar serviço cron se necessário
sudo systemctl start cron
sudo systemctl enable cron
Logs não estão rotacionando
# Verificar configuração do logrotate
cat /etc/logrotate.d/k3s-cleanup
# Testar logrotate manualmente
sudo logrotate -d /etc/logrotate.d/k3s-cleanup
# Forçar logrotate
sudo logrotate -f /etc/logrotate.d/k3s-cleanup
Verificação
# Testar o script de limpeza manualmente
sudo /usr/local/bin/k3s-cleanup.sh
# Verificar se o cron job está agendado
sudo crontab -l | grep k3s-cleanup
# Verificar se o arquivo de log existe e é gravável
ls -la /var/log/k3s-cleanup.log
🗑️ Desinstalação
Para remover o sistema de limpeza:
# Remover o script
sudo rm /usr/local/bin/k3s-cleanup.sh
# Remover do crontab
sudo crontab -e
# Deletar linhas contendo k3s-cleanup
# Remover configuração do logrotate
sudo rm /etc/logrotate.d/k3s-cleanup
# Remover arquivos de log (opcional)
sudo rm /var/log/k3s-cleanup.log*
📝 Notas
- O script é projetado para ser seguro e removerá apenas containers parados e imagens não utilizadas
- Todas as operações são registradas com timestamps para fins de auditoria
- O script inclui tratamento de erros e sairá com segurança se o K3s não estiver disponível
- O uso de disco é mostrado antes e depois da limpeza para rastrear economia de espaço
- Usa o caminho completo
/usr/local/bin/k3spara garantir que os cron jobs funcionem corretamente - Re-executar o script de instalação substituirá a entrada existente do crontab com a nova configuração
- O logrotate gerencia automaticamente os arquivos de log, comprimindo logs antigos e removendo-os após o período de retenção
- Todas as opções suportam formas curtas (
-s,-lk) e longas (--schedule,--log-keep) - Use
-hou--helppara ver todas as opções disponíveis