O Docker Swarm migra contêineres com fome de recursos para outros nós?

2

Vamos supor um cluster do Docker de 3 nós. Um desses nós, os recursos são apertados. Um par de serviços que podem ser bastante gananciosos em termos de CPU ou RAM aconteceram no mesmo host.

O Docker irá, a qualquer momento, verificar se os outros nós têm menos trabalho a fazer e migrar um ou mais serviços do nó pressionado para um dos nós menos pressionados?

Existe alguma funcionalidade incorporada no Docker para lidar com isso, ou uma migração será eventualmente resultado de, e. um assassino da OOM tirando um container?

    
por sbrattla 11.12.2017 / 09:05

1 resposta

3

O Swarm não move tarefas (contêineres). Seu objetivo é "não fazer mal" movendo contêineres que você não disse explicitamente para fazer isso. Se você fizer um service update , ele recriará o contêiner, potencialmente em outros nós, com base em 1. assegurando que as tarefas nesse serviço estejam distribuídas entre os nós e 2. a densidade do contêiner por nó.

Mas a AFAIK nessa avaliação não é baseada na utilização de recursos momento a momento.

Você pode usar as opções --limit-cpu/memory e --reserve-cpu/memory nos seus comandos service create/update que ajudarão. reserve fará com que o Swarm rastreie essa reserva e, se você definir reservas para vários serviços, verificará se eles estão agendados em nós com esses recursos disponíveis, mas, novamente, usa apenas a tabela de reservas, não a utilização em tempo real para determinar que (AFAIK).

Eu vi pessoas usarem o Prometheus para monitorar e lançar alertas que escalam um serviço, portanto, é possível que esses alertas também iniciem a movimentação de um contêiner.

    
por 13.12.2017 / 00:20