K8S de cluster em execução por um longo tempo, conduzirá inevitavelmente a um monte de espelho inútil e arquivo de contêiner, o que requer a limpeza freqüente.
Geralmente, o recipiente Docker padrão localizado no armazenamento de dados caminho path / var / lib / janela de encaixe local através df -h / var / lib / janela de encaixe comando para visualizar sua ocupação. Se mais de 80%, isso significa que precisam ser limpos.
Primeiro, limpar o comando
Os dados redundantes associadas com a limpeza do recipiente há dois comandos, a saber:
janela de encaixe de ameixa imagem - de
docker ameixa sistema -f
Em que o primeiro comando não é apenas o arquivo de imagem é usado para limpar um recipiente, remoção do excesso de dados segundo comando, compreendendo parar o recipiente, o espelho extra, o volume não utilizado, etc., que o primeiro comando que compreende Quanto mais conteúdo.
Acima de dois comandos podem ser executados por um clean.sh roteiro unificada:
#! / bin / festa need_clean () { usados = ` df -h / var / lib / janela de encaixe | awk -F " [%] + " ' / dev / {print $ 5} ' ` se [[$ usado -ge 80 ]]; em seguida, retornar 0 fi retornar 1 } se need_clean; então imagem janela de encaixe de ameixa - af se need_clean; em seguida, ameixa seca sistema de janela de encaixe - f fi fi
Aqui para df -h O índice de ocupação na coluna por awk. -F "[%] +" significa que o número específico de espaços ou delimitadores%, pelo que a percentagem% excluídos.
Somente quando a taxa de ocupação superior a 80%, quando a execução do comando clara. Se, após o primeiro comando caiu abaixo de 80%, ele não tem de executar o próximo comando.
Em segundo lugar, criar uma tarefa agendada
Roteiro acabado, mas esperamos que a máquina pode executá-lo automaticamente no momento certo. Isso requer tarefa regular.
Criar uma tarefa agendada no linux é realmente muito simples. Se você executar um programa crond sistema, você só precisa criar um arquivo de usuário com seu nome na var / spool / cron diretório /, crond executá-lo automaticamente no momento certo.
Por exemplo, podemos criar um arquivo de raiz está em / var / spool / cron diretório como a máquina de gerenciamento de usuário root:
@daily festa /usr/local/bin/clean.sh
O script copiados para / usr / diretório / bin local (também, naturalmente, ser outro diretório), então crond irá executar o script todos os dias à meia-noite.
Em terceiro lugar, adicionar os bloqueios de arquivos
Um cenário provável é que, se o tempo é definido para executar a execução do script por minuto, é provável que apareça em um comando não foi executado, o próximo comando veio. Em seguida, ele irá causar confusão. Para lidar com esta situação, precisamos rebanho de comando, adicione um bloqueio para o arquivo. Então acima do arquivo raiz pode ser reescrita como:
@daily rebanho -n /tmp/.cleanlock -c " /usr/local/bin/clean.sh festa "
Que, / tmp / .cleanlock pode ser especificado facilmente. significativo -n se um bloqueio não for obtido, nenhuma acção. Claro que, como o dia de execução e, em seguida, devido a um período mais longo, você não pode adicionar um bloqueio de arquivo.
Através da operação acima, o sistema irá automaticamente de zero à noite todos os dias para verificar se você precisa limpar dados redundantes, garantir recursos suficientes para executar o cluster.