Estou implantando um contêiner em uma instância COS (Container OS). Muito simples.
Quero que ele reinicie diariamente. Qual é a melhor maneira de fazer isso? Uma simples aba CRON que eu poderia configurar na VM? O problema com isso é que precisará ser refeito sempre que a VM for reimplantada.
Cron Jobs em VMs não são recomendados para Containers, porque executar um Cron Job na própria VM cria uma dependência direta entre o Job e a VM. Isso significa que se a VM reiniciar, perderemos o Cron Job. Os containers podem ser reiniciados ou destruídos sem afetar o estado geral do aplicativo, o Cron Job na VM não respeita esse comportamento. Então, o Cron Job na própria VM não é ideal para implantações de container porque ele está vinculado à VM e não ao Container em si.
Você pode configurar um Cron Job no Kubernetes , que é um recurso integrado, então será útil reiniciar os pods. Consulte Executando tarefas automatizadas com um CronJob para obter mais detalhes.
Use um Cron Job, mas não para executar seus pods, mas para agendar um comando da API do Kubernetes que reiniciará a implantação todos os dias ( kubectl rollout restart ). Dessa forma, se algo der errado, os pods antigos não ficarão inativos ou serão removidos.
Certifique-se também de que você está especificando o namespace correto e que o pod tem as permissões corretas para interagir com a API do k8s. Porque a autorização da API do k8s para pods é normalmente feita por meio de contas de serviço . Você também precisaria dar a ele permissões para acessar a API, o que significa criar um ServiceAccount e alguns objetos de política RBAC (Role, RoleBinding) e então definir serviceAccountName na especificação do seu pod lá.
Para reiniciar o pod diariamente, execute o seguinte:
Onde 86400 é um período desejado em segundos (1 reinicialização por dia neste exemplo).
Semelhante ao acima, você também pode usar outras soluções alternativas, como abaixo:
Stackdriver Monitoring: fornece agendamento de reinicialização flexível com base em métricas personalizadas. Google Cloud Run: simples e eficiente para aplicativos escaláveis e sem estado.
Avaliar Agendar uma instância de VM para iniciar e parar .
Reiniciar a VM COS reiniciará o contêiner. Desde que o contêiner tenha sido definido como parte da configuração da instância (ou seja,
--container-image
etc.) e não tenha sido executado como um contêiner ad hoc quando a imagem estava em execução.