Orkestrasi kontainer saat ini terutama dikaitkan dengan kubernet. Tapi ini bukan satu-satunya pilihan yang mungkin. Ada alat orkestrasi alternatif, seperti nomad, pengembang HashiCorp (dikenal sebagai pengembang virtualisasi Vagrant).
Menguasai pekerjaan dengan orkestrasi biasanya sulit, karena tidak semua orang memiliki akses ke infrastruktur dari beberapa server dengan akses root, oleh karena itu, dalam posting sebelumnya
Kami menyebarkan Kubernetes di desktop dalam beberapa menit dengan MicroK8s kami menggambarkan proses penerapan lingkungan Kubernetes di desktop menggunakan aplikasi web Django sebagai contoh. Awalnya, saya berencana untuk terus menggambarkan eksploitasi database di lingkungan MicroK8s. Tapi kemudian saya pikir akan menarik untuk terus bekerja dengan alat orkestrasi nomad yang sama nyamannya. Saya bahkan tidak akan memberikan orang Jerman untuk membandingkan berbagai sistem orkestrasi. Satu-satunya hal yang saya perhatikan bagi mereka yang meragukan nomad itu bahkan lebih mudah untuk menginstal daripada MicroK8s, karena Untuk melakukan ini, cukup salin dua file yang dapat dieksekusi (nomad dan konsul) dari server pengembang.
Jadi, seperti yang saya katakan, pertama-tama Anda perlu mengunduh
nomad dan
konsul , yang datang sebagai binari siap pakai untuk semua sistem operasi utama. Anda tidak perlu akses root untuk menjalankan file-file ini, jadi semuanya dapat ditempatkan di direktori home dan dijalankan atas nama pengguna yang tidak memiliki hak istimewa.
Dan, tentu saja, Anda harus sudah memasang buruh pelabuhan, jika saja Anda akan memesan ulang kontainer buruh pelabuhan. Omong-omong, nomad dapat menjalankan tidak hanya kontainer, tetapi juga executable biasa, yang akan segera kita gunakan.
Jadi, pertama-tama Anda perlu membuat file konfigurasi nomad. Nomad dapat diluncurkan dalam mode server atau mode klien, serta secara bersamaan di kedua mode (tidak disarankan pada produksi). Untuk melakukan ini, Anda harus menempatkan bagian server, bagian klien, atau kedua bagian ini di file konfigurasi:
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" }
Nomad diluncurkan oleh perintah yang menunjukkan path ke file konfigurasi yang dibuat:
nomad agent --config nomad/nomad.conf
Di bagian terakhir dari konfigurasi, alamat di mana konsul akan bekerja ditentukan. Konsul juga dapat bekerja dalam mode server, mode klien, dan dalam mode server dan klien:
consul agent -server -client 127.0.0.1 -advertise 127.0.0.1 -data-dir /tmp/consul -ui -bootstrap
Setelah menjalankan perintah ini, Anda dapat membuka di browser (http: // localhost: 4646) - ini adalah nomad UI, dan (http: // localhost: 8500) - ini adalah konsul UI.
Selanjutnya, buat Dockerfile untuk gambar Django. Dari Dockerfile di
posting sebelumnya, ini berbeda dari garis di mana akses ke Django diizinkan melalui semua 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"]
Setelah membangun kontainer:
docker build django/ -t apapacy/tut-django:1.0.1
Penting untuk membuat tugas di mana jumlah replika wadah Django yang dibutuhkan akan dibuat (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" } } } } }
Semua parameter konfigurasi ini cukup dapat dimengerti berdasarkan namanya. Satu-satunya hal yang saya ingin dekripsi adalah satu baris:
port "lb" {}
, yang berarti bahwa port akan secara dinamis ditetapkan oleh lingkungan (Anda juga dapat mengaturnya secara statis).
Tugas dimulai oleh perintah:
nomad job run nomad/django.conf
Sekarang melalui nomad UI (http: // localhost: 4646) Anda dapat melihat status pekerjaan django, dan melalui konsul UI (http: // localhost: 8500) Anda dapat melihat status layanan django, dan juga alamat IP dan port mana yang berfungsi. setiap replika layanan django. Sekarang layanan tersedia melalui alamat ip ini, tetapi hanya di dalam jaringan nomad, dan tidak dapat diakses dari luar. Untuk mempublikasikan layanan untuk akses eksternal, Anda dapat menggunakan sejumlah fitur. Misalnya, melalui haproxy, tetapi cara termudah untuk melakukan ini adalah melalui modul lain (ketiga setelah nomad dan konsul) dari HashiCorp - fabio.
Anda tidak perlu mengunduhnya juga - Anda dapat memberikan kasing nomad ini, yang, seperti yang saya sebutkan di awal pesan, dapat bekerja tidak hanya dengan wadah buruh pelabuhan, tetapi juga dengan file yang dapat dieksekusi. Untuk melakukan ini, buat tugas lain (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 } } } } } }
Driver
driver = "raw_exec"
digunakan untuk menyelesaikan tugas ini. Tidak semua driver dimuat secara default, jadi dalam konfigurasi nomad kami menyediakan fitur ini:
client { enabled = true options = { "driver.raw_exec.enable" = "1" } }
Ngomong-ngomong, dalam versi nomad yang baru, sintaks memuat plugin dan driver akan berubah, jadi bagian konfigurasi ini harus segera diselesaikan.
Tugas dimulai oleh perintah:
nomad job run nomad/fabio.conf
Setelah itu, UI fabio tersedia di browser di alamat (http: // localhost: 9998). Dan di alamatnya (http: // localhost: 9999) layanan Django akan dipublikasikan.
Kode untuk konfigurasi yang ditampilkan dalam publikasi dapat ditemukan di repositori .
Tautan yang bermanfaat
1.dvps.blog/minimalnoie-sravnieniie-swarm-kubernetes-mesos-nomad-rancherpapacy@gmail.com
20 Februari 2019