Atualmente, a orquestração de contêiner está associada principalmente aos kubernetes. Mas essa não é a única opção possível. Existem ferramentas alternativas de orquestração, como nomad, desenvolvedor do HashiCorp (conhecido como desenvolvedor de virtualização do Vagrant).
Dominar o trabalho com orquestração é geralmente difícil, porque nem todo mundo tem acesso à infraestrutura de vários servidores com acesso root, portanto, em uma postagem anterior
Implementamos o Kubernetes na área de trabalho em alguns minutos. Com o MicroK8s, descrevemos o processo de implantação do ambiente Kubernetes na área de trabalho usando o aplicativo da Web Django como exemplo. Inicialmente, planejei continuar descrevendo a exploração do banco de dados no ambiente do MicroK8s. Mas então pensei que seria interessante continuar trabalhando com uma ferramenta de orquestração nômade igualmente conveniente. Nem darei um alemão para comparar diferentes sistemas de orquestração. A única coisa que noto para quem duvida que o nômade seja ainda mais fácil de instalar do que o MicroK8s, porque Para fazer isso, basta copiar os dois arquivos executáveis (nomad e consul) do servidor do desenvolvedor.
Então, como eu disse, você primeiro precisa baixar o
nômade e o
cônsul , que são binários prontos para todos os principais sistemas operacionais. Você não precisa de acesso root para executar esses arquivos; portanto, tudo pode ser colocado no diretório inicial e executado em nome de um usuário não privilegiado.
E, é claro, você já deve ter o docker instalado, se quiser reordenar os contêineres. A propósito, o nomad pode executar não apenas contêineres, mas também executáveis regulares, que usaremos em breve.
Então, primeiro você precisa criar um arquivo de configuração nômade. O Nomad pode ser iniciado no modo servidor ou no cliente, bem como simultaneamente nos dois modos (não recomendado na produção). Para fazer isso, você deve colocar a seção do servidor, a seção do cliente ou ambas as seções no arquivo de configuração:
bind_addr = "127.0.0.1" data_dir = "/tmp/nomad" advertise { http = "127.0.0.1" rpc = "127.0.0.1" serf = "127.0.0.1" } server { enabled = true bootstrap_expect = 1 } client { enabled = true options = { "driver.raw_exec.enable" = "1" } } consul { address = "127.0.0.1:8500" }
O Nomad é iniciado por um comando que indica o caminho para o arquivo de configuração criado:
nomad agent --config nomad/nomad.conf
Na última seção da configuração, o endereço no qual o consul trabalhará é especificado. O Consul também pode trabalhar no modo servidor, no modo cliente e no modo servidor e cliente:
consul agent -server -client 127.0.0.1 -advertise 127.0.0.1 -data-dir /tmp/consul -ui -bootstrap
Depois de executar esses comandos, você pode abrir no navegador (http: // localhost: 4646) - este é o nómada da interface do usuário e (http: // localhost: 8500) - este é o consul da interface do usuário.
Em seguida, crie um Dockerfile para a imagem do Django. Do Dockerfile na
postagem anterior, ele difere da linha na qual o acesso ao Django é permitido através de qualquer host:
FROM python:3-slim LABEL maintainer="apapacy@gmail.com" WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt RUN django-admin startproject mysite /app \ && echo "\nALLOWED_HOSTS = ['*']\n" >> /app/mysite/settings.py EXPOSE 8000 STOPSIGNAL SIGINT ENTRYPOINT ["python", "manage.py"] CMD ["runserver", "0.0.0.0:8000"]
Após a construção do contêiner:
docker build django/ -t apapacy/tut-django:1.0.1
Você precisa criar uma tarefa na qual o número necessário de réplicas de contêineres do Django será criado (nomad / django.conf):
job "django-job" { datacenters = ["dc1"] type = "service" group "django-group" { count = 3 restart { attempts = 2 interval = "30m" delay = "15s" mode = "fail" } ephemeral_disk { size = 300 } task "django-job" { driver = "docker" config { image = "apapacy/tut-django:1.0.1" port_map { lb = 8000 } } resources { network { mbits = 10 port "lb" {} } } service { name = "django" tags = ["urlprefix-/"] port = "lb" check { name = "alive" type = "http" path = "/" interval = "10s" timeout = "2s" } } } } }
Todos os parâmetros dessa configuração são bastante compreensíveis com base em seus nomes. A única coisa que gostaria de descriptografar é uma linha:
port "lb" {}
, o que significa que as portas serão atribuídas dinamicamente pelo ambiente (você também pode defini-las estaticamente).
A tarefa é iniciada pelo comando:
nomad job run nomad/django.conf
Agora, através do UI nomad (http: // localhost: 4646), você pode ver o status do trabalho do django-job e, através do consul da UI (http: // localhost: 8500), o status do serviço django e também em quais endereços IP e portas ele funciona cada réplica do serviço django. Agora, os serviços estão disponíveis através desses endereços IP, mas apenas dentro da rede nômade, e não são acessíveis externamente. Para publicar serviços para acesso externo, você pode usar vários recursos. Por exemplo, através do haproxy, mas a maneira mais fácil de fazer isso é através de outro módulo (terceiro após nômade e cônsul) da HashiCorp - fabio.
Também não é necessário fazer o download - você pode fornecer esse caso nômade, que, como mencionei no início da mensagem, pode funcionar não apenas com contêineres de janela de encaixe, mas também com arquivos executáveis. Para fazer isso, crie outra tarefa (nomad / fabio.conf):
job "fabio-job" { datacenters = ["dc1"] type = "system" update { stagger = "60s" max_parallel = 1 } group "fabio-group" { count = 1 task "fabio-task" { driver = "raw_exec" artifact { source = "https://github.com/fabiolb/fabio/releases/download/v1.5.4/fabio-1.5.4-go1.9.2-linux_amd64" } config { command = "fabio-1.5.4-go1.9.2-linux_amd64" } resources { cpu = 100 # 500 MHz memory = 128 # 256MB network { mbits = 10 port "lb" { static = 9999 } port "admin" { static = 9998 } } } } } }
O driver
driver = "raw_exec"
usado para concluir esta tarefa. Nem todos os drivers são carregados por padrão; portanto, na configuração nômade, fornecemos este recurso:
client { enabled = true options = { "driver.raw_exec.enable" = "1" } }
A propósito, nas novas versões do nomad, a sintaxe de carregamento de plug-ins e drivers será alterada, portanto essa parte da configuração precisará ser finalizada em breve.
A tarefa é iniciada pelo comando:
nomad job run nomad/fabio.conf
Depois disso, a interface do usuário fabio estará disponível no navegador no endereço (http: // localhost: 9998). E no endereço (http: // localhost: 9999) o serviço django será publicado.
O código para as configurações mostradas na publicação pode ser encontrado no repositório .
Links úteis
1.dvps.blog/minimalnoie-sravnieniie-swarm-kubernetes-mesos-nomad-rancherpapacy@gmail.com
20 de fevereiro de 2019