Mkutano wa DEVOXX Uingereza. Chagua mfumo: Docker Swarm, Kubernetes au Mesos. Sehemu ya 3

Docker Swarm, Kubernetes, na Mesos ndio mifumo maarufu zaidi ya upangaji wa kontena. Katika mazungumzo yake, Arun Gupta analinganisha mambo yafuatayo ya Docker, Swarm, na Kubernetes:

  • Maendeleo ya ndani.
  • Vipengele vya kusambaza.
  • Maombi ya vyombo vingi.
  • Ugunduzi wa huduma.
  • Kuongeza huduma.
  • Kazi za kukimbia mara moja.
  • Kuunganishwa na Maven.
  • sasisho la "Rolling".
  • Kuunda nguzo ya hifadhidata ya Couchbase.

Kwa hivyo, utapata ufahamu wazi wa kile kila chombo cha ochestration kinaweza kutoa na kujifunza jinsi ya kutumia mifumo hii kwa ufanisi.

Arun Gupta ni mwanateknolojia mkuu wa bidhaa huria katika Amazon Web Services, ambaye amekuwa akiendeleza jumuiya za wasanidi programu za Sun, Oracle, Red Hat na Couchbase kwa zaidi ya miaka 10. Ana uzoefu mkubwa wa kufanya kazi katika timu zinazoongoza zinazofanya kazi mbalimbali zinazounda na kutekeleza mkakati wa kampeni na programu za uuzaji. Aliongoza timu za wahandisi wa Sun, ni mmoja wa waanzilishi wa timu ya Java EE na muundaji wa tawi la Marekani la Devoxx4Kids. Arun Gupta ndiye mwandishi wa zaidi ya machapisho elfu 2 katika blogi za IT na ametoa mazungumzo katika zaidi ya nchi 40.

Mkutano wa DEVOXX Uingereza. Chagua mfumo: Docker Swarm, Kubernetes au Mesos. Sehemu ya 1
Mkutano wa DEVOXX Uingereza. Chagua mfumo: Docker Swarm, Kubernetes au Mesos. Sehemu ya 2

Mstari wa 55 una COUCHBASE_URI inayoelekeza kwenye huduma hii ya hifadhidata, ambayo pia iliundwa kwa kutumia faili ya usanidi ya Kubernetes. Ukiangalia mstari wa 2, unaweza kuona aina: Huduma ni huduma ninayounda inayoitwa couchbase-service, na jina sawa limeorodheshwa kwenye mstari wa 4. Hapa chini kuna bandari.

Mkutano wa DEVOXX Uingereza. Chagua mfumo: Docker Swarm, Kubernetes au Mesos. Sehemu ya 3

Laini muhimu ni 6 na 7. Nikiwa katika huduma ninasema, "Hey, hizi ndizo lebo ninazotafuta!", na lebo hizi si chochote zaidi ya majina ya jozi tofauti, na mstari wa pointi 7 kwenye couchbase-rs-pod yangu. maombi. Zifuatazo ni bandari zinazotoa ufikiaji wa lebo hizi.

Kwenye mstari wa 19 ninaunda aina mpya ya ReplicaSet, mstari wa 31 una jina la picha, na mistari 24-27 inaelekeza kwa metadata inayohusishwa na ganda langu. Hivi ndivyo huduma inatafuta na ni nini muunganisho unapaswa kufanywa. Mwishoni mwa faili kuna aina fulani ya unganisho kati ya mistari 55-56 na 4, ikisema: "tumia huduma hii!"

Kwa hiyo, ninaanza huduma yangu wakati kuna seti ya replica, na kwa kuwa kila seti ya replica ina bandari yake na lebo inayolingana, imejumuishwa katika huduma. Kutoka kwa mtazamo wa msanidi programu, unaita tu huduma, ambayo hutumia seti ya nakala unazohitaji.

Kwa hivyo, nina ganda la WildFly ambalo huwasiliana na hifadhidata kupitia Huduma ya Couchbase. Ninaweza kutumia sehemu ya mbele na maganda kadhaa ya WildFly, ambayo pia huwasiliana na sehemu ya nyuma ya kitanda kupitia huduma ya msingi wa kitanda.

Mkutano wa DEVOXX Uingereza. Chagua mfumo: Docker Swarm, Kubernetes au Mesos. Sehemu ya 3

Baadaye tutaangalia jinsi huduma iliyo nje ya nguzo inavyowasiliana kupitia anwani yake ya IP na vipengele ambavyo viko ndani ya kikundi na kuwa na anwani ya ndani ya IP.

Kwa hivyo, vyombo visivyo na uraia ni nzuri, lakini ni vizuri kutumia vyombo vya hali gani? Hebu tuangalie mipangilio ya mfumo kwa vyombo vya hali, au vinavyoendelea. Katika Docker, kuna njia 4 tofauti za mpangilio wa uhifadhi wa data ambazo unapaswa kuzingatia. Ya kwanza ni Implicit Per-Container, ambayo ina maana kwamba unapotumia couchbase, MySQL au MyDB satateful kontena, zote huanza na Sandbox chaguo-msingi. Hiyo ni, kila kitu kilichohifadhiwa kwenye hifadhidata kinahifadhiwa kwenye chombo yenyewe. Ikiwa chombo kinatoweka, data hupotea pamoja nayo.

Ya pili ni Wazi kwa Kontena, unapounda hifadhi maalum na kiasi cha docker kuunda amri na kuhifadhi data ndani yake. Mbinu ya tatu ya Per-Host inahusishwa na ramani ya hifadhi, wakati kila kitu kilichohifadhiwa kwenye kontena kinarudufiwa kwa wakati mmoja kwenye seva pangishi. Chombo kisipofaulu, data itasalia kwenye seva pangishi. Mwisho ni matumizi ya majeshi kadhaa ya Multi-Host, ambayo inashauriwa katika hatua ya uzalishaji wa ufumbuzi mbalimbali. Wacha tuseme vyombo vyako vilivyo na programu zako vinaendeshwa kwenye seva pangishi, lakini unataka kuhifadhi data yako mahali pengine kwenye Mtandao, na kwa hili unatumia ramani otomatiki kwa mifumo iliyosambazwa.

Mkutano wa DEVOXX Uingereza. Chagua mfumo: Docker Swarm, Kubernetes au Mesos. Sehemu ya 3

Kila moja ya njia hizi hutumia eneo maalum la kuhifadhi. Data iliyo Dhahiri na Dhahiri ya Kila Kontena huhifadhi data kwenye seva pangishi kwenye /var/lib/docker/volumes. Unapotumia mbinu ya Per-Host, hifadhi huwekwa ndani ya chombo, na chombo chenyewe huwekwa kwenye seva pangishi. Kwa majeshi mengi, suluhu kama vile Ceph, ClusterFS, NFS, n.k. zinaweza kutumika.

Ikiwa chombo kinachoendelea kinashindwa, saraka ya hifadhi haipatikani katika kesi mbili za kwanza, lakini katika kesi mbili za mwisho upatikanaji unasimamiwa. Walakini, katika kesi ya kwanza, unaweza kupata hazina kupitia mwenyeji wa Docker anayeendesha kwenye mashine ya kawaida. Katika kesi ya pili, data haitapotea pia, kwa sababu umeunda hifadhi ya Wazi.

Ikiwa seva pangishi itashindwa, saraka ya uhifadhi haipatikani katika visa vitatu vya kwanza; katika kesi ya mwisho, unganisho na uhifadhi haujaingiliwa. Hatimaye, kazi iliyoshirikiwa imetengwa kabisa kwa ajili ya kuhifadhi katika kesi ya kwanza na inawezekana katika mapumziko. Katika hali ya pili, unaweza kushiriki hifadhi kulingana na kama hifadhidata yako inasaidia hifadhi iliyosambazwa au la. Kwa upande wa Per-Host, usambazaji wa data unawezekana tu kwa mwenyeji fulani, na kwa mwenyeji anuwai hutolewa na upanuzi wa nguzo.

Hii inapaswa kuzingatiwa wakati wa kuunda vyombo vya hali. Chombo kingine muhimu cha Docker ni programu-jalizi ya Kiasi, ambayo inafanya kazi kwa kanuni ya "betri zilizopo, lakini lazima zibadilishwe." Unapoanzisha kontena ya Docker, inasema, "Halo, mara tu unapoanzisha kontena na hifadhidata, unaweza kuhifadhi data yako kwenye chombo hiki!" Hiki ndicho kipengele chaguo-msingi, lakini unaweza kukibadilisha. Programu-jalizi hii hukuruhusu kutumia hifadhi ya mtandao au kitu kama hicho badala ya hifadhidata ya kontena. Inajumuisha kiendeshi chaguo-msingi cha hifadhi inayotegemea mwenyeji na inaruhusu ujumuishaji wa kontena na mifumo ya hifadhi ya nje kama vile Amazon EBS, Hifadhi ya Azure na diski zinazoendelea za GCE.

Slaidi inayofuata inaonyesha usanifu wa programu-jalizi ya Kiasi cha Docker.

Mkutano wa DEVOXX Uingereza. Chagua mfumo: Docker Swarm, Kubernetes au Mesos. Sehemu ya 3

Rangi ya samawati inawakilisha kiteja cha Docker kinachohusishwa na seva pangishi ya Docker ya bluu, ambayo ina injini ya Hifadhi ya Ndani inayokupa vyombo vya kuhifadhi data. Green inaonyesha Mteja wa Programu-jalizi na Daemon ya Programu-jalizi, ambazo pia zimeunganishwa kwa seva pangishi. Wanatoa fursa ya kuhifadhi data katika hifadhi ya mtandao ya aina ya Hifadhi ya Nyuma unayohitaji.

Programu-jalizi ya Kiasi cha Docker inaweza kutumika na hifadhi ya Portworx. Moduli ya PX-Dev kwa hakika ni chombo unachoendesha ambacho huunganishwa na seva pangishi ya Docker na hukuruhusu kuhifadhi data kwa urahisi kwenye Amazon EBS.

Mkutano wa DEVOXX Uingereza. Chagua mfumo: Docker Swarm, Kubernetes au Mesos. Sehemu ya 3

Mteja wa Portworx hukuruhusu kufuatilia hali ya vyombo mbalimbali vya hifadhi ambavyo vimeunganishwa kwa mwenyeji wako. Ukitembelea blogu yangu, unaweza kusoma jinsi ya kufaidika zaidi na Portworx na Docker.

Wazo la uhifadhi katika Kubernetes ni sawa na Docker na inawakilishwa na saraka ambazo zinaweza kufikiwa na kontena lako kwenye ganda. Wao ni huru kwa maisha ya chombo chochote. Aina za hifadhi zinazopatikana zaidi ni hostPath, nfs, awsElasticBlockStore, na gsePersistentDisk. Hebu tuangalie jinsi maduka haya yanavyofanya kazi katika Kubernetes. Kawaida, mchakato wa kuwaunganisha una hatua 3.

Ya kwanza ni kwamba mtu kwenye upande wa mtandao, kwa kawaida msimamizi, hukupa hifadhi inayoendelea. Kuna faili inayolingana ya usanidi wa PersistentVolume kwa hili. Ifuatayo, msanidi programu anaandika faili ya usanidi inayoitwa PersistentVolumeClaim, au ombi la kuhifadhi PVC, ambalo linasema: "Nina 50GB ya hifadhi iliyosambazwa, lakini ili watu wengine pia watumie uwezo wake, ninaiambia PVC hii ambayo kwa sasa unahitaji GB 10 tu". Hatimaye, hatua ya tatu ni kwamba ombi lako limewekwa kama hifadhi, na programu ambayo ina ganda, au seti ya nakala, au kitu kama hicho, huanza kuitumia. Ni muhimu kukumbuka kuwa mchakato huu una hatua 3 zilizotajwa na zinaweza kuongezeka.

Mkutano wa DEVOXX Uingereza. Chagua mfumo: Docker Swarm, Kubernetes au Mesos. Sehemu ya 3

Slaidi inayofuata inaonyesha Kontena ya Kudumu ya Kubernetes ya usanifu wa AWS.

Mkutano wa DEVOXX Uingereza. Chagua mfumo: Docker Swarm, Kubernetes au Mesos. Sehemu ya 3

Ndani ya mstatili wa kahawia unaowakilisha nguzo ya Kubernetes, kuna nodi kuu moja na nodi mbili za mfanyakazi, zilizoonyeshwa kwa njano. Moja ya nodi za wafanyikazi ina ganda la chungwa, hifadhi, kidhibiti cha kunakili, na kontena la kijani la Docker Couchbase. Ndani ya nguzo, juu ya nodi, mstatili wa zambarau unaonyesha Huduma inayopatikana kutoka nje. Usanifu huu unapendekezwa kwa kuhifadhi data kwenye kifaa yenyewe. Ikihitajika, ninaweza kuhifadhi data yangu katika EBS nje ya nguzo, kama inavyoonyeshwa kwenye slaidi inayofuata. Huu ni mfano wa kawaida wa kuongeza, lakini kuna kipengele cha kifedha cha kuzingatia wakati wa kutumia - kuhifadhi data mahali fulani kwenye mtandao inaweza kuwa ghali zaidi kuliko mwenyeji. Wakati wa kuchagua suluhisho za uwekaji vyombo, hii ni moja ya hoja nzito.

Mkutano wa DEVOXX Uingereza. Chagua mfumo: Docker Swarm, Kubernetes au Mesos. Sehemu ya 3

Kama tu na Docker, unaweza kutumia vyombo vinavyoendelea vya Kubernetes na Portworx.

Mkutano wa DEVOXX Uingereza. Chagua mfumo: Docker Swarm, Kubernetes au Mesos. Sehemu ya 3

Hili ndilo neno katika istilahi ya sasa ya Kubernetes 1.6 inaitwa β€œStatefulSet” - njia ya kufanya kazi na programu za Serikali ambazo huchakata matukio kuhusu kusimamisha Pod na kutekeleza Kuzima kwa Neema. Kwa upande wetu, maombi kama haya ni hifadhidata. Katika blogu yangu unaweza kusoma jinsi ya kuunda StatefulSet katika Kubernetes kwa kutumia Portworx.
Wacha tuzungumze juu ya nyanja ya maendeleo. Kama nilivyosema, Docker ina matoleo 2 - CE na EE, katika kesi ya kwanza tunazungumza juu ya toleo thabiti la Toleo la Jumuiya, ambalo linasasishwa mara moja kila baada ya miezi 3, tofauti na toleo lililosasishwa la kila mwezi la EE. Unaweza kupakua Docker kwa Mac, Linux au Windows. Mara tu ikiwa imewekwa, Docker itasasisha kiotomatiki na ni rahisi sana kuanza.

Mkutano wa DEVOXX Uingereza. Chagua mfumo: Docker Swarm, Kubernetes au Mesos. Sehemu ya 3

Kwa Kubernetes, napendelea toleo la Minikube - ni njia nzuri ya kuanza na jukwaa kwa kuunda nguzo kwenye nodi moja. Ili kuunda makundi ya nodes kadhaa, uchaguzi wa matoleo ni pana: hizi ni kops, kube-aws (CoreOS+AWS), kube-up (iliyopitwa na wakati). Ikiwa unatazamia kutumia Kubernetes inayotokana na AWS, ninapendekeza ujiunge na AWS SIG, ambayo hukutana mtandaoni kila Ijumaa na kuchapisha nyenzo mbalimbali za kuvutia kuhusu kufanya kazi na AWS Kubernetes.

Hebu tuangalie jinsi Rolling Update inafanywa kwenye majukwaa haya. Ikiwa kuna nguzo ya nodes kadhaa, basi hutumia toleo maalum la picha, kwa mfano, WildFly:1. Usasishaji unaoendelea unamaanisha kuwa toleo la picha linabadilishwa kwa mpangilio na mpya kwenye kila nodi, moja baada ya nyingine.

Mkutano wa DEVOXX Uingereza. Chagua mfumo: Docker Swarm, Kubernetes au Mesos. Sehemu ya 3

Ili kufanya hivyo, ninatumia amri ya sasisho la huduma ya docker (jina la huduma), ambayo ninabainisha toleo jipya la picha ya WildFly: 2 na njia ya kusasisha sasisho-usambamba 2. Nambari ya 2 inamaanisha kuwa mfumo utasasisha picha 2 za programu. wakati huo huo, kisha ucheleweshaji wa sasisho la sekunde 10 10s, baada ya hapo picha 2 zifuatazo zitasasishwa kwenye nodes 2 zaidi, nk. Utaratibu huu rahisi wa kusasisha umetolewa kwako kama sehemu ya Docker.

Katika Kubernetes, sasisho linaloendelea linafanya kazi kama hii. Kidhibiti cha urudufishaji rc huunda seti ya nakala za toleo lile lile, na kila ganda kwenye webapp-rc hii limetolewa na lebo iliyo katika etcd. Ninapohitaji ganda, mimi hutumia Huduma ya Maombi kupata hazina ya etcd, ambayo hunipa ganda kwa kutumia lebo maalum.

Mkutano wa DEVOXX Uingereza. Chagua mfumo: Docker Swarm, Kubernetes au Mesos. Sehemu ya 3

Katika kesi hii, tuna maganda 3 katika Kidhibiti cha Kurudia kinachoendesha programu ya WildFly toleo la 1. Wakati wa kusasisha nyuma, kidhibiti kingine cha urudufishaji kinaundwa na jina sawa na faharisi mwishoni - - xxxxx, ambapo x ni nambari za nasibu, na na maandiko sawa. Sasa Huduma ya Maombi ina maganda matatu yenye toleo la zamani la programu na maganda matatu yenye toleo jipya katika kidhibiti kipya cha Urudiaji. Baada ya hayo, maganda ya zamani yanafutwa, mtawala wa replication na pods mpya huitwa jina na kuweka katika kazi.

Mkutano wa DEVOXX Uingereza. Chagua mfumo: Docker Swarm, Kubernetes au Mesos. Sehemu ya 3

Hebu tuendelee kwenye ufuatiliaji. Docker ina amri nyingi za ufuatiliaji zilizojengwa. Kwa mfano, kiolesura cha mstari wa amri cha takwimu za chombo cha docker hukuruhusu kuonyesha habari kuhusu hali ya vyombo kwenye kiweko kila sekunde - matumizi ya kichakataji, matumizi ya diski, upakiaji wa mtandao. Zana ya API ya Kijijini cha Docker hutoa data kuhusu jinsi mteja anavyowasiliana na seva. Inatumia amri rahisi, lakini inategemea Docker REST API. Katika kesi hii, maneno REST, Flash, Remote yanamaanisha kitu kimoja. Unapowasiliana na mwenyeji, ni REST API. API ya Mbali ya Docker hukuruhusu kupata habari zaidi kuhusu vyombo vinavyoendesha. Blogu yangu inaangazia maelezo ya kutumia ufuatiliaji huu na Windows Server.

Kufuatilia matukio ya mfumo wa docker wakati wa kuendesha kundi la wapangishaji wengi huwezesha kupata data kuhusu ajali ya seva pangishi au ajali ya kontena kwenye seva pangishi mahususi, huduma za kuongeza ukubwa na mengineyo. Kuanzia na Docker 1.20, inajumuisha Prometheus, ambayo hupachika miisho kwenye programu zilizopo. Hii hukuruhusu kupokea vipimo kupitia HTTP na kuvionyesha kwenye dashibodi.

Kipengele kingine cha ufuatiliaji ni cAdvisor (fupi kwa mshauri wa chombo). Inachanganua na kutoa data ya matumizi ya rasilimali na utendaji kutoka kwa vyombo vinavyoendesha, ikitoa metriki za Prometheus moja kwa moja nje ya kisanduku. Jambo maalum kuhusu chombo hiki ni kwamba hutoa data kwa sekunde 60 zilizopita. Kwa hiyo, unahitaji kuwa na uwezo wa kukusanya data hii na kuiweka kwenye hifadhidata ili uweze kufuatilia mchakato wa muda mrefu. Inaweza pia kutumika kuonyesha vipimo vya dashibodi kwa michoro kwa kutumia Grafana au Kibana. Blogu yangu ina maelezo ya kina jinsi ya kutumia cAdvisor kufuatilia kontena kwa kutumia dashibodi ya Kibana.

Slaidi inayofuata inaonyesha jinsi matokeo ya mwisho ya Prometheus yanavyoonekana na vipimo vinavyopatikana vya kuonyeshwa.

Mkutano wa DEVOXX Uingereza. Chagua mfumo: Docker Swarm, Kubernetes au Mesos. Sehemu ya 3

Katika sehemu ya chini kushoto unaona vipimo vya maombi ya HTTP, majibu, n.k., upande wa kulia ni onyesho lao la picha.

Kubernetes pia inajumuisha zana za ufuatiliaji zilizojumuishwa. Slaidi hii inaonyesha nguzo ya kawaida iliyo na bwana mmoja na nodi tatu za mfanyakazi.

Mkutano wa DEVOXX Uingereza. Chagua mfumo: Docker Swarm, Kubernetes au Mesos. Sehemu ya 3

Kila nodi ya kufanya kazi ina cAdvisor iliyozinduliwa kiatomati. Zaidi ya hayo, kuna Heapster, mfumo wa ufuatiliaji wa utendaji na ukusanyaji wa vipimo unaooana na toleo la 1.0.6 la Kubernetes na matoleo mapya zaidi. Heapster hukuruhusu kukusanya sio tu vipimo vya utendaji vya mzigo wa kazi, maganda na vyombo, lakini pia matukio na ishara zingine zinazozalishwa na nguzo nzima. Ili kukusanya data, inazungumza na kila ganda la Kubelet, huhifadhi maelezo kiotomatiki katika hifadhidata ya InfluxDB, na kuyatoa kama vipimo kwenye dashibodi ya Grafana. Hata hivyo, kumbuka kwamba ikiwa unatumia miniKube, kipengele hiki hakipatikani kwa chaguo-msingi, kwa hivyo itabidi utumie nyongeza kwa ufuatiliaji. Kwa hivyo yote inategemea mahali unapoendesha vyombo na ni zana zipi za ufuatiliaji unaweza kutumia kwa chaguo-msingi na ambazo unahitaji kusakinisha kama nyongeza tofauti.

Slaidi inayofuata inaonyesha dashibodi za Grafana zinazoonyesha hali ya uendeshaji ya vyombo vyangu. Kuna data nyingi za kuvutia hapa. Kwa kweli, kuna zana nyingi za ufuatiliaji wa mchakato wa Docker na Kubernetes, kama vile SysDig, DataDog, NewRelic. Baadhi yao wana kipindi cha majaribio cha miaka 30 bila malipo, kwa hivyo unaweza kujaribu na kupata ile inayokufaa zaidi. Binafsi, napendelea kutumia SysDig na NewRelic, ambayo inaunganisha vizuri na Kubernetes. Kuna zana ambazo zinajumuisha sawa katika majukwaa ya Docker na Kubernetes.

Baadhi ya matangazo πŸ™‚

Asante kwa kukaa nasi. Je, unapenda makala zetu? Je, ungependa kuona maudhui ya kuvutia zaidi? Tuunge mkono kwa kuweka agizo au kupendekeza kwa marafiki, VPS ya wingu kwa watengenezaji kutoka $4.99, analogi ya kipekee ya seva za kiwango cha kuingia, ambayo ilivumbuliwa na sisi kwa ajili yako: Ukweli wote kuhusu VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps kutoka $19 au jinsi ya kushiriki seva? (inapatikana kwa RAID1 na RAID10, hadi cores 24 na hadi 40GB DDR4).

Dell R730xd 2x nafuu katika kituo cha data cha Equinix Tier IV huko Amsterdam? Hapa tu 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV kutoka $199 nchini Uholanzi! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - kutoka $99! Soma kuhusu Jinsi ya kujenga miundombinu ya Corp. darasa na matumizi ya seva za Dell R730xd E5-2650 v4 zenye thamani ya euro 9000 kwa senti?

Chanzo: mapenzi.com

Kuongeza maoni