Usar docker-machine para provisionar uma instância spot abre uma solicitação spot e espera que ela seja atendida. Se isso falhar, a docker-machine sai, mas a solicitação de local permanece aberta e pode ser atendida mais tarde. Isso resulta em uma solicitação de local pendente com uma instância ativa.
Isso parece acontecer em muitos outros casos também.
$ ./docker-machine-setup.sh # Run docker-machine create with spot instance..
Running pre-create checks...
Creating machine...
(aws01) Launching instance...
(aws01) Waiting for spot instance...
^C
[0] ~$ docker-machine rm aws01
About to remove aws01
Are you sure? (y/n): y
Error removing host "aws01": unknown instance
MissingParameter: The request must contain the parameter KeyName
status code: 400, request id:
Da mesma forma, se a solicitação de spot for cancelada no console. A mesma coisa acontece.
Também:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
aws01 - amazonec2 Error Unknown MissingParameter: The request must contain the parameter InstanceId
status code: 400, request id:
Parece que a máquina de estado da docker-machine está perdendo completamente um estado - o fato de que esta máquina ainda não foi alocada? !! Não ter alocado uma instância spot não é um estado de 'Erro'.
Isso atormenta nossos corredores de CI constantemente com instâncias pontuais.
O mesmo problema aqui. Alguém imaginou uma solução alternativa?
Fiz um patch para uma limpeza adequada de recursos pendentes em caso de falha na criação da máquina AWS. # 4317
Comentários muito úteis
Isso atormenta nossos corredores de CI constantemente com instâncias pontuais.