Konferensi DEVOXX UK. Pilih kerangka: Docker Swarm, Kubernetes utawa Mesos. Bagean 3

Docker Swarm, Kubernetes, lan Mesos minangka kerangka orkestrasi wadah sing paling populer. Ing pirembagan kasebut, Arun Gupta mbandhingake aspek Docker, Swarm, lan Kubernetes ing ngisor iki:

  • Pangembangan lokal.
  • Fungsi panyebaran.
  • Aplikasi multi-wadhah.
  • Panemuan layanan.
  • Scaling layanan.
  • Run-sapisan tugas.
  • Integrasi karo Maven.
  • "Rolling" nganyari.
  • Nggawe kluster database Couchbase.

Akibaté, sampeyan bakal entuk pangerten sing jelas babagan apa sing ditawakake saben alat orkestrasi lan sinau babagan nggunakake platform kasebut kanthi efektif.

Arun Gupta minangka kepala teknologi kanggo produk open-source ing Amazon Web Services, sing wis ngembangake komunitas pangembang Sun, Oracle, Red Hat lan Couchbase luwih saka 10 taun. Nduwe pengalaman ekstensif sing kerja ing tim lintas fungsi sing mimpin ngembangake lan ngetrapake strategi kanggo kampanye lan program pemasaran. Dheweke mimpin tim insinyur Sun, minangka salah sawijining pendiri tim Java EE lan pencipta Devoxx4Kids cabang AS. Arun Gupta minangka penulis luwih saka 2 ewu kiriman ing blog IT lan wis menehi ceramah ing luwih saka 40 negara.

Konferensi DEVOXX UK. Pilih kerangka: Docker Swarm, Kubernetes utawa Mesos. Bagean 1
Konferensi DEVOXX UK. Pilih kerangka: Docker Swarm, Kubernetes utawa Mesos. Bagean 2

Baris 55 ngemot COUCHBASE_URI sing nuduhake layanan database iki, sing uga digawe nggunakake file konfigurasi Kubernetes. Yen katon ing baris 2, sampeyan bisa ndeleng jenis: Service iku layanan aku nggawe disebut couchbase-layanan, lan jeneng sing padha kadhaptar ing baris 4. Ing ngisor iki sawetara bandar.

Konferensi DEVOXX UK. Pilih kerangka: Docker Swarm, Kubernetes utawa Mesos. Bagean 3

Ing garis tombol 6 lan 7. Ing layanan ngandika, "Hei, iki label aku looking for!", Lan label iki ora luwih saka jeneng pasangan variabel, lan baris 7 TCTerms kanggo couchbase-rs-pod sandi. aplikasi. Ing ngisor iki minangka port sing nyedhiyakake akses menyang label sing padha.

Ing baris 19 Aku nggawe jinis anyar ReplicaSet, baris 31 ngemot jeneng gambar, lan garis 24-27 tumuju metadata gadhah pod sandi. Iki persis apa layanan looking for lan apa sambungan kudu digawe kanggo. Ing mburi file ana sawetara jinis sambungan antarane baris 55-56 lan 4, ngandika: "Gunakake layanan iki!"

Dadi, aku miwiti layanan nalika ana pesawat replika, lan amarga saben pesawat replika duwe port dhewe kanthi label sing cocog, kalebu ing layanan kasebut. Saka sudut pandang pangembang, sampeyan mung nelpon layanan kasebut, sing banjur nggunakake set replika sing dibutuhake.

Akibaté, aku duwe pod WildFly sing komunikasi karo backend database liwat Couchbase Service. Aku bisa nggunakake frontend karo sawetara pods WildFly, kang uga komunikasi karo backend couchbase liwat layanan couchbase.

Konferensi DEVOXX UK. Pilih kerangka: Docker Swarm, Kubernetes utawa Mesos. Bagean 3

Mengko kita bakal ndeleng carane layanan sing ana ing njaba kluster komunikasi liwat alamat IP karo unsur sing ana ing njero kluster lan duwe alamat IP internal.

Dadi, wadhah stateless apik, nanging kepiye nggunakake wadhah stateful? Ayo katon ing setelan sistem kanggo stateful, utawa wadhah terus-terusan. Ing Docker, ana 4 pendekatan sing beda kanggo tata letak panyimpenan data sing kudu digatekake. Sing pertama yaiku Implicit Per-Container, sing tegese nalika nggunakake couchbase, MySQL utawa MyDB satateful wadhah, kabeh diwiwiti nganggo Sandbox standar. Yaiku, kabeh sing disimpen ing database disimpen ing wadhah kasebut dhewe. Yen wadhah ilang, data bakal ilang bebarengan karo.

Kapindho yaiku Explicit Per-Container, nalika sampeyan nggawe panyimpenan tartamtu kanthi volume docker nggawe printah lan nyimpen data ing kono. Pendekatan Per-Host katelu digandhengake karo pemetaan panyimpenan, nalika kabeh sing disimpen ing wadhah kasebut diduplikasi bebarengan ing host. Yen wadhah gagal, data bakal tetep ing host. Sing terakhir yaiku nggunakake sawetara host Multi-Host, sing disaranake ing tahap produksi macem-macem solusi. Contone, wadhah karo aplikasi sampeyan mlaku ing host, nanging sampeyan pengin nyimpen data ing endi wae ing Internet, lan sampeyan nggunakake pemetaan otomatis kanggo sistem sing disebarake.

Konferensi DEVOXX UK. Pilih kerangka: Docker Swarm, Kubernetes utawa Mesos. Bagean 3

Saben cara iki nggunakake lokasi panyimpenan tartamtu. Implisit lan Eksplisit Per-Container nyimpen data ing host ing /var/lib/docker/volume. Nalika nggunakake cara Per-Host, panyimpenan dipasang nang wadhah, lan wadhah dhewe dipasang ing inang. Kanggo multihost, solusi kayata Ceph, ClusterFS, NFS, lan liya-liyane bisa digunakake.

Yen wadhah sing terus-terusan gagal, direktori panyimpenan ora bisa diakses ing rong kasus pisanan, nanging ing rong kasus pungkasan, akses dijaga. Nanging, ing kasus sing sepisanan, sampeyan bisa ngakses repositori liwat host Docker sing mlaku ing mesin virtual. Ing kasus kapindho, data ora bakal ilang, amarga sampeyan wis nggawe panyimpenan Eksplisit.

Yen host gagal, direktori panyimpenan ora kasedhiya ing telung kasus pisanan; ing kasus pungkasan, sambungan karo panyimpenan ora diselani. Pungkasan, fungsi sing dienggo bareng ora kalebu kanggo panyimpenan ing kasus sing sepisanan lan bisa uga ing liyane. Ing kasus kapindho, sampeyan bisa nuduhake panyimpenan gumantung apa database sampeyan ndhukung panyimpenan sing disebarake utawa ora. Ing kasus Per-Host, distribusi data mung bisa ditindakake ing host tartamtu, lan kanggo multihost diwenehake kanthi ekspansi kluster.

Iki kudu dianggep nalika nggawe wadhah stateful. Alat Docker liyane sing migunani yaiku plugin Volume, sing dianggo kanthi prinsip "baterei saiki, nanging kudu diganti." Nalika sampeyan miwiti wadhah Docker, ujar, "Eh, yen sampeyan miwiti wadhah kanthi database, sampeyan bisa nyimpen data ing wadhah iki!" Iki minangka fitur standar, nanging sampeyan bisa ngganti. Plugin iki ngidini sampeyan nggunakake drive jaringan utawa sing padha tinimbang database wadhah. Iki kalebu driver standar kanggo panyimpenan adhedhasar host lan ngidini integrasi wadhah karo sistem panyimpenan eksternal kayata Amazon EBS, Azure Storage lan GCE Persistent disk.

Slide sabanjure nuduhake arsitektur plugin Docker Volume.

Konferensi DEVOXX UK. Pilih kerangka: Docker Swarm, Kubernetes utawa Mesos. Bagean 3

Werna biru nggambarake klien Docker sing digandhengake karo host Docker biru, sing nduweni mesin panyimpenan Lokal sing nyedhiyakake wadhah kanggo nyimpen data. Ijo nuduhake Klien Plugin lan Plugin Daemon, sing uga disambungake menyang host. Dheweke menehi kesempatan kanggo nyimpen data ing panyimpenan jaringan saka jinis Storage Backend sing sampeyan butuhake.

Plugin Docker Volume bisa digunakake karo panyimpenan Portworx. Modul PX-Dev sejatine minangka wadhah sing sampeyan lakoni sing nyambung menyang host Docker lan ngidini sampeyan nyimpen data kanthi gampang ing Amazon EBS.

Konferensi DEVOXX UK. Pilih kerangka: Docker Swarm, Kubernetes utawa Mesos. Bagean 3

Klien Portworx ngidini sampeyan ngawasi status macem-macem wadhah panyimpenan sing disambungake menyang host sampeyan. Yen sampeyan ngunjungi blogku, sampeyan bisa maca carane ngoptimalake Portworx karo Docker.

Konsep panyimpenan ing Kubernetes padha karo Docker lan diwakili dening direktori sing bisa diakses ing wadhah sampeyan ing pod. Dheweke bebas saka umur wadhah apa wae. Jinis panyimpenan sing paling umum kasedhiya yaiku hostPath, nfs, awsElasticBlockStore, lan gsePersistentDisk. Ayo goleki kepiye toko kasebut bisa digunakake ing Kubernetes. Biasane, proses nyambungake kalebu 3 langkah.

Sing pertama yaiku wong ing sisih jaringan, biasane administrator, menehi sampeyan panyimpenan sing terus-terusan. Ana file konfigurasi PersistentVolume sing cocog kanggo iki. Sabanjure, pangembang aplikasi nulis file konfigurasi sing diarani PersistentVolumeClaim, utawa panyuwunan panyimpenan PVC, sing ujar: "Aku duwe 50GB panyimpenan sing disebarake, nanging supaya wong liya uga nggunakake kapasitase, aku ngandhani PVC iki sing saiki dakkarepake. mung butuh 10 GB". Pungkasan, langkah katelu yaiku panjaluk sampeyan dipasang minangka panyimpenan, lan aplikasi sing duwe pod, utawa replika set, utawa sing padha, wiwit nggunakake. Penting kanggo elinga yen proses iki kalebu 3 langkah sing kasebut lan bisa diukur.

Konferensi DEVOXX UK. Pilih kerangka: Docker Swarm, Kubernetes utawa Mesos. Bagean 3

Slide sabanjure nuduhake Kubernetes Persistence Container saka arsitektur AWS.

Konferensi DEVOXX UK. Pilih kerangka: Docker Swarm, Kubernetes utawa Mesos. Bagean 3

Ing njero persegi panjang coklat sing makili klompok Kubernetes, ana siji simpul master lan rong simpul pekerja, sing dituduhake kanthi warna kuning. Salah sawijining simpul pekerja ngemot polong oranye, panyimpenan, pengontrol replika, lan wadhah Docker Couchbase ijo. Ing kluster, ing ndhuwur simpul, persegi panjang ungu nuduhake Layanan sing bisa diakses saka njaba. Arsitektur iki dianjurake kanggo nyimpen data ing piranti dhewe. Yen perlu, Aku bisa nyimpen data ing EBS njaba kluster, minangka ditampilake ing slide sabanjuré. Iki minangka model khas kanggo skala, nanging ana aspek finansial sing kudu ditimbang nalika nggunakake - nyimpen data ing endi wae ing jaringan bisa luwih larang tinimbang ing host. Nalika milih solusi containerization, iki minangka salah sawijining argumen sing penting.

Konferensi DEVOXX UK. Pilih kerangka: Docker Swarm, Kubernetes utawa Mesos. Bagean 3

Kaya karo Docker, sampeyan bisa nggunakake wadhah Kubernetes sing terus-terusan karo Portworx.

Konferensi DEVOXX UK. Pilih kerangka: Docker Swarm, Kubernetes utawa Mesos. Bagean 3

Iki apa ing terminologi Kubernetes 1.6 saiki diarani "StatefulSet" - cara nggarap aplikasi Stateful sing ngolah acara babagan mungkasi Pod lan nindakake Mati Mati. Ing kasus kita, aplikasi kasebut minangka basis data. Ing blogku sampeyan bisa maca carane nggawe StatefulSet ing Kubernetes nggunakake Portworx.
Ayo dadi pirembagan bab aspek pembangunan. Kaya sing dakkandhakake, Docker duwe versi 2 - CE lan EE, ing kasus sing sepisanan kita ngomong babagan versi stabil saka Edisi Komunitas, sing dianyari saben 3 wulan, beda karo versi EE sing dianyari saben wulan. Sampeyan bisa ndownload Docker kanggo Mac, Linux utawa Windows. Sawise diinstal, Docker bakal nganyari kanthi otomatis lan gampang banget diwiwiti.

Konferensi DEVOXX UK. Pilih kerangka: Docker Swarm, Kubernetes utawa Mesos. Bagean 3

Kanggo Kubernetes, aku luwih seneng versi Minikube - iku cara sing apik kanggo miwiti platform kanthi nggawe kluster ing siji simpul. Kanggo nggawe klompok sawetara simpul, pilihan versi luwih akeh: iki kops, kube-aws (CoreOS+AWS), kube-up (lawas). Yen sampeyan pengin nggunakake Kubernetes basis AWS, Aku menehi saran kanggo gabung karo AWS SIG, sing ketemu online saben ana lan nerbitaké macem-macem bahan menarik ing karya karo AWS Kubernetes.

Ayo goleki kepiye Rolling Update ditindakake ing platform kasebut. Yen ana klompok sawetara kelenjar, banjur nggunakake versi tartamtu saka gambar, contone, WildFly:1. Nganyari rolling tegese versi gambar diganti kanthi sing anyar ing saben simpul, siji-sijine.

Konferensi DEVOXX UK. Pilih kerangka: Docker Swarm, Kubernetes utawa Mesos. Bagean 3

Kanggo nindakake iki, aku nggunakake printah nganyari layanan docker (jeneng layanan), kang aku nemtokake versi anyar saka WildFly: 2 gambar lan nganyari cara nganyari-paralelisme 2. Nomer 2 tegese sistem bakal nganyari 2 gambar aplikasi. bebarengan, banjur nganyari 10 detik wektu tundha 10s, sawise kang sabanjuré 2 gambar bakal dianyari ing 2 kelenjar liyane, etc. Mekanisme nganyari rolling prasaja iki diwenehake kanggo sampeyan minangka bagéan saka Docker.

Ing Kubernetes, nganyari rolling kaya iki. Replikasi controller rc nggawe pesawat saka replika saka versi padha, lan saben pod ing webapp-rc iki kasedhiya karo label dumunung ing etcd. Nalika aku butuh polong, aku nggunakake Layanan Aplikasi kanggo ngakses gudang etcd, sing nyedhiyakake polong nggunakake label sing ditemtokake.

Konferensi DEVOXX UK. Pilih kerangka: Docker Swarm, Kubernetes utawa Mesos. Bagean 3

Ing kasus iki, kita duwe 3 pods ing Replikasi controller sing mbukak aplikasi WildFly versi 1. Nalika nganyari ing latar mburi, controller replikasi liyane digawe kanthi jeneng sing padha lan indeks ing mburi - - xxxxx, ngendi x nomer acak, lan kanthi label sing padha. Saiki Layanan Aplikasi duwe telung pods karo versi lawas saka aplikasi lan telung pods karo versi anyar ing Replication controller anyar. Sawise iki, polong lawas dibusak, pengontrol replikasi karo polong anyar diganti jeneng lan dioperasikake.

Konferensi DEVOXX UK. Pilih kerangka: Docker Swarm, Kubernetes utawa Mesos. Bagean 3

Ayo pindhah menyang ngawasi. Docker duwe akeh perintah pemantauan sing dibangun. Contone, antarmuka baris printah stats wadhah docker ngidini sampeyan nampilake informasi babagan kahanan kontaner menyang konsol saben detik - panggunaan prosesor, panggunaan disk, beban jaringan. Alat Docker Remote API nyedhiyakake data babagan cara klien komunikasi karo server. Iku nggunakake printah prasaja, nanging adhedhasar Docker REST API. Ing kasus iki, tembung REST, Flash, Remote tegese padha. Nalika sampeyan komunikasi karo host, iku API REST. Docker Remote API ngidini sampeyan entuk informasi luwih lengkap babagan kontaner sing mlaku. Blogku njelasake rincian nggunakake pemantauan iki karo Windows Server.

Ngawasi acara sistem docker nalika mbukak kluster multi-host ndadekake bisa entuk data babagan kacilakan host utawa kacilakan wadhah ing host tartamtu, layanan skala, lan liya-liyane. Diwiwiti karo Docker 1.20, kalebu Prometheus, sing ngemot titik pungkasan menyang aplikasi sing wis ana. Iki ngidini sampeyan nampa metrik liwat HTTP lan nampilake ing dashboard.

Fitur pemantauan liyane yaiku cAdvisor (singkatan saka penasihat wadah). Iki nganalisa lan nyedhiyakake panggunaan sumber daya lan data kinerja saka kontaner sing mlaku, nyedhiyakake metrik Prometheus langsung saka kothak. Babagan khusus babagan alat iki yaiku mung nyedhiyakake data sajrone 60 detik pungkasan. Mulane, sampeyan kudu bisa ngumpulake data iki lan sijine menyang database supaya sampeyan bisa ngawasi proses long-term. Uga bisa digunakake kanggo nampilake metrik dashboard kanthi grafis nggunakake Grafana utawa Kibana. Blogku duwe katrangan rinci babagan cara nggunakake cAdvisor kanggo ngawasi kontaner nggunakake dashboard Kibana.

Slide sabanjure nuduhake kaya apa output titik akhir Prometheus lan metrik sing kasedhiya kanggo ditampilake.

Konferensi DEVOXX UK. Pilih kerangka: Docker Swarm, Kubernetes utawa Mesos. Bagean 3

Ing sisih kiwa ngisor sampeyan ndeleng metrik kanggo panjalukan HTTP, tanggapan, lan sapiturute, ing sisih tengen yaiku tampilan grafis.

Kubernetes uga kalebu alat ngawasi sing dibangun. Slide iki nuduhake kluster khas sing ngemot siji master lan telung node pekerja.

Konferensi DEVOXX UK. Pilih kerangka: Docker Swarm, Kubernetes utawa Mesos. Bagean 3

Saben simpul kerja ngemot cAdvisor sing diluncurake kanthi otomatis. Kajaba iku, ana Heapster, sistem pemantauan kinerja lan koleksi metrik sing kompatibel karo versi Kubernetes 1.0.6 lan luwih dhuwur. Heapster ngidini sampeyan ngumpulake ora mung metrik kinerja beban kerja, polong lan wadhah, nanging uga acara lan sinyal liyane sing diasilake kabeh kluster. Kanggo ngumpulake data, ngomong karo Kubelet saben pod, kanthi otomatis nyimpen informasi ing database InfluxDB, lan metu minangka metrik kanggo dashboard Grafana. Nanging, elinga yen sampeyan nggunakake miniKube, fitur iki ora kasedhiya kanthi standar, mula sampeyan kudu nggunakake tambahan kanggo ngawasi. Dadi kabeh gumantung ing ngendi sampeyan mbukak wadhah lan alat ngawasi sing bisa digunakake kanthi standar lan sampeyan kudu nginstal minangka tambahan sing kapisah.

Slide sabanjure nuduhake dashboard Grafana sing nuduhake status mlaku saka wadhahku. Ana cukup akeh data menarik ing kene. Mesthine, ana akeh alat pemantauan proses Docker lan Kubernetes komersial, kayata SysDig, DataDog, NewRelic. Sawetara wong duwe wektu uji coba gratis 30 taun, supaya sampeyan bisa nyoba lan nemokake sing paling cocog karo sampeyan. Secara pribadi, aku luwih seneng nggunakake SysDig lan NewRelic, sing nggabungake kanthi apik karo Kubernetes. Ana alat sing nggabungake kanthi apik ing platform Docker lan Kubernetes.

Sawetara iklan 🙂

Matur nuwun kanggo tetep karo kita. Apa sampeyan seneng karo artikel kita? Pengin ndeleng konten sing luwih menarik? Ndhukung kita kanthi nggawe pesenan utawa menehi rekomendasi menyang kanca, cloud VPS kanggo pangembang saka $4.99, analog unik saka server level entri, sing diciptakake kanggo sampeyan: Bebener kabeh babagan VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps saka $ 19 utawa carane nuduhake server? (kasedhiya karo RAID1 lan RAID10, munggah 24 intine lan nganti 40GB DDR4).

Dell R730xd 2 kaping luwih murah ing pusat data Equinix Tier IV ing Amsterdam? Mung kene 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV saka $199 ing Walanda! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - saka $99! Maca babagan Carane mbangun infrastruktur corp. kelas karo nggunakake Dell R730xd E5-2650 v4 server worth 9000 euro kanggo Penny?

Source: www.habr.com

Add a comment