Kubernetes cov kev coj ua zoo tshaj plaws. Tsim cov thawv me me

Kubernetes cov kev coj ua zoo tshaj plaws. Tsim cov thawv me me

Thawj kauj ruam ntawm kev xa mus rau Kubernetes yog tso koj daim ntawv thov rau hauv lub thawv. Nyob rau hauv no series, peb yuav saib yuav ua li cas koj yuav tsim ib tug me me, ruaj ntseg thawv duab.
Ua tsaug rau Docker, tsim cov duab thawv tsis tau yooj yim dua. Qhia kom meej cov duab hauv paus, ntxiv koj cov kev hloov pauv, thiab tsim ib lub thawv.

Kubernetes cov kev coj ua zoo tshaj plaws. Tsim cov thawv me me

Thaum cov txheej txheem no yog qhov zoo rau kev pib, siv lub hauv paus dluab tuaj yeem ua rau kev ua haujlwm tsis zoo nrog cov duab loj uas muaj qhov tsis zoo.

Tsis tas li ntawd, feem ntau cov duab hauv Docker siv Debian lossis Ubuntu rau lub hauv paus duab, thiab thaum qhov no muab kev sib raug zoo zoo thiab kev hloov kho yooj yim (ib Docker cov ntaub ntawv tsuas yog siv ob kab ntawm txoj cai), cov duab hauv qab tuaj yeem ntxiv ntau pua megabytes ntawm cov khoom ntxiv rau koj lub thawv. Piv txwv li, ib qho yooj yim node.js cov ntaub ntawv rau Go "nyob zoo-world" daim ntawv thov yog hais txog 700 megabytes, thaum koj daim ntawv thov tiag tsuas yog ob peb megabytes loj.

Kubernetes cov kev coj ua zoo tshaj plaws. Tsim cov thawv me me

Yog li tag nrho cov haujlwm ntxiv no yog qhov pov tseg ntawm qhov chaw digital thiab qhov chaw nkaum zoo rau kev nyab xeeb kev nyab xeeb thiab kab. Yog li cia saib ob txoj hauv kev los txo qhov loj ntawm lub thawv duab.

Thawj yog kev siv cov duab me me, qhov thib ob yog kev siv tus qauv tsim. Siv cov duab me me yog qhov yooj yim tshaj plaws los txo qhov loj ntawm koj lub thawv. Feem ntau, cov lus lossis pawg uas koj siv tau muab cov duab thawj daim ntawv thov uas tsawg dua li cov duab qub. Cia peb saib ntawm peb lub thawv node.js.

Kubernetes cov kev coj ua zoo tshaj plaws. Tsim cov thawv me me

Los ntawm lub neej ntawd, qhov node: 8 lub hauv paus duab loj hauv Docker yog 670 MB, thaum lub pob: 8-alpine duab loj tsuas yog 65 MB, uas yog 10 npaug me dua. Los ntawm kev siv cov duab me me ntawm Alpine, koj yuav txo qhov loj ntawm koj lub thawv. Alpine yog ib qho me me thiab hnyav Linux faib uas nrov heev ntawm Docker cov neeg siv vim nws tau sib xws nrog ntau daim ntawv thov thaum khaws cov ntim me me. Tsis zoo li tus qauv Docker "node" duab, "node: alpine" tshem tawm ntau cov ntaub ntawv pabcuam thiab cov kev pabcuam, tsuas yog cov uas txaus los khiav koj daim ntawv thov.

Txhawm rau txav mus rau cov duab me me, tsuas yog hloov kho Dockerfile kom pib ua haujlwm nrog cov duab hauv paus tshiab:

Kubernetes cov kev coj ua zoo tshaj plaws. Tsim cov thawv me me

Tam sim no, tsis zoo li cov duab onbuild qub, koj yuav tsum luam koj cov cai rau hauv lub thawv thiab nruab ib qho kev vam khom. Hauv Dockerfile tshiab, lub thawv pib nrog lub node: alpine duab, tom qab ntawd tsim cov ntawv teev npe rau cov lej, teeb tsa kev vam khom siv NPM pob tus thawj tswj hwm, thiab thaum kawg khiav server.js.

Kubernetes cov kev coj ua zoo tshaj plaws. Tsim cov thawv me me

Qhov kev hloov kho no ua rau hauv lub thawv uas yog 10 npaug me me. Yog tias koj cov lus programming lossis pawg tsis muaj cov duab txo qis ua haujlwm, siv Alpine Linux. Nws tseem yuav muab lub peev xwm los tswj tag nrho cov ntsiab lus ntawm lub thawv. Siv cov duab me me yog ib txoj hauv kev zoo los tsim cov thawv me me sai sai. Tab sis txawm tias qhov txo qis dua tuaj yeem ua tiav siv Tus Qauv Tsim Qauv.

Kubernetes cov kev coj ua zoo tshaj plaws. Tsim cov thawv me me

Hauv cov lus txhais, cov cai hauv paus yog thawj zaug dhau mus rau tus neeg txhais lus thiab tom qab ntawd raug coj ncaj qha. Nyob rau hauv compiled hom lus, lub hauv paus code yog thawj zaug hloov dua siab tshiab rau hauv compiled code. Txawm li cas los xij, kev sib sau feem ntau siv cov cuab yeej uas tsis xav tau los khiav cov cai. Qhov no txhais tau tias koj tuaj yeem tshem tawm cov cuab yeej no los ntawm lub thawv kawg. Koj tuaj yeem siv Builder Pattern rau qhov no.

Kubernetes cov kev coj ua zoo tshaj plaws. Tsim cov thawv me me

Cov cai yog tsim nyob rau hauv thawj lub thawv thiab muab tso ua ke. Cov cai muab tso ua ke yog tom qab ntawd ntim rau hauv lub thawv zaum kawg yam tsis muaj cov compilers thiab cov cuab yeej xav tau los sau cov lej ntawd. Cia peb khiav ib daim ntawv thov Go los ntawm cov txheej txheem no. Ua ntej, peb yuav txav los ntawm cov duab onbuild mus rau Alpine Linux.

Kubernetes cov kev coj ua zoo tshaj plaws. Tsim cov thawv me me

Hauv Dockerfile tshiab, lub thawv pib nrog golang: alpine duab. Tom qab ntawd nws tsim ib daim ntawv teev npe rau tus lej, theej nws mus rau hauv qhov chaws code, tsim qhov chaws ntawd, thiab khiav daim ntawv thov. Lub thawv no me dua li lub thawv onbuild, tab sis nws tseem muaj cov compiler thiab lwm yam cuab yeej Go uas peb tsis xav tau tiag tiag. Yog li cia cia li rho tawm cov kev pab cuam compiled thiab muab tso rau hauv nws lub thawv.

Kubernetes cov kev coj ua zoo tshaj plaws. Tsim cov thawv me me

Koj tuaj yeem pom qee yam coj txawv txawv hauv Docker cov ntaub ntawv no: nws muaj ob kab FROM. Thawj 4 kab lus zoo ib yam li Dockerfile yav dhau los tshwj tsis yog tias nws siv AS lo lus tseem ceeb rau npe rau theem no. Ntu tom ntej no muaj ib txoj kab tshiab FROM los pib ib daim duab tshiab, qhov twg es tsis txhob ntawm golang: alpine duab peb yuav siv Raw alpine raws li lub hauv paus duab.

Raw Alpine Linux tsis muaj daim ntawv pov thawj SSL tau teeb tsa, uas yuav ua rau feem ntau API hu dhau HTTPS ua tsis tiav, yog li cia peb nruab qee daim ntawv pov thawj CA hauv paus.

Tam sim no los txog qhov kev lom zem: txhawm rau luam cov lej sau los ntawm thawj lub thawv mus rau qhov thib ob, koj tuaj yeem siv cov lus txib COPY nyob rau kab 5 ntawm ntu thib ob. Nws tsuas yog luam ib daim ntawv thov thiab yuav tsis cuam tshuam rau Go cov cuab yeej siv hluav taws xob. Cov ntaub ntawv ntau theem Docker tshiab yuav muaj cov duab ntim uas tsuas yog 12 megabytes loj, piv rau cov duab ntim qub uas yog 700 megabytes, uas yog qhov sib txawv loj!
Yog li siv cov duab me me thiab Builder Pattern yog txoj hauv kev zoo los tsim cov thawv me me uas tsis muaj kev ua haujlwm ntau.
Nws yog qhov ua tau tias nyob ntawm daim ntawv thov pawg, muaj ntau txoj hauv kev los txo cov duab thiab lub thawv loj, tab sis cov thawv me me puas muaj txiaj ntsig ntsuas tau? Cia peb saib ob thaj chaw uas cov thawv me me muaj txiaj ntsig zoo heev - kev ua haujlwm thiab kev ruaj ntseg.

Txhawm rau ntsuas qhov kev ua tau zoo, xav txog lub sijhawm ntawm cov txheej txheem ntawm kev tsim lub thawv, ntxig rau hauv daim ntawv teev npe (thawb), thiab tom qab ntawd muab nws los ntawm qhov ntawd (rub). Koj tuaj yeem pom tias lub thawv me me muaj qhov zoo sib xws ntawm lub thawv loj.

Kubernetes cov kev coj ua zoo tshaj plaws. Tsim cov thawv me me

Docker yuav cache cov khaubncaws sab nraud povtseg yog li tom ntej tsim yuav ceev heev. Txawm li cas los xij, ntau lub tshuab CI siv los tsim thiab sim ntim tsis cache txheej, yog li muaj sijhawm txuag nyiaj ntau. Raws li koj tuaj yeem pom, lub sijhawm tsim lub thawv loj, nyob ntawm lub zog ntawm koj lub tshuab, yog los ntawm 34 mus rau 54 vib nas this, thiab thaum siv lub thawv txo qis siv tus qauv tsim - los ntawm 23 mus rau 28 vib nas this. Rau kev ua haujlwm ntawm hom no, cov khoom tsim tau nce yuav yog 40-50%. Yog li cia li xav txog pes tsawg zaus koj tsim thiab sim koj cov cai.

Tom qab lub thawv tau tsim, koj yuav tsum thawb nws cov duab (thawj lub thawv duab) rau hauv lub thawv ntawv sau npe kom koj thiaj li siv tau hauv koj pawg Kubernetes. Kuv pom zoo kom siv Google Container Registry.

Kubernetes cov kev coj ua zoo tshaj plaws. Tsim cov thawv me me

Nrog Google Container Registry (GCR), koj tsuas yog them rau cov khoom siv raw thiab kev sib txuas lus, thiab tsis muaj nqi tswj cov thawv ntxiv. Nws yog tus kheej, ruaj ntseg thiab ceev heev. GCR siv ntau lub tswv yim los ua kom nrawm nrawm. Raws li koj tuaj yeem pom, ntxig rau Docker Container Image thawv siv mus: onbuild yuav siv li ntawm 15 mus rau 48 vib nas this, nyob ntawm lub computer kev ua tau zoo, thiab tib lub lag luam nrog lub thawv me me yuav siv li ntawm 14 mus rau 16 vib nas this, thiab rau cov tshuab ua haujlwm tsawg dua. qhov kom zoo dua hauv kev ua haujlwm nrawm nce 3 zaug. Rau cov tshuab loj, lub sijhawm yog tib yam, txij li GCR siv lub ntiaj teb cache rau cov ntaub ntawv sib koom ntawm cov duab, txhais tau tias koj tsis tas yuav thauj lawv txhua. Hauv lub khoos phis tawj uas tsis muaj zog, CPU yog lub hauv paus caj dab, yog li qhov zoo ntawm kev siv cov thawv me me yog ntau dua ntawm no.

Yog tias koj siv GCR, Kuv pom zoo kom siv Google Container Builder (GCB) ua ib feem ntawm koj qhov kev tsim.

Kubernetes cov kev coj ua zoo tshaj plaws. Tsim cov thawv me me

Raws li koj tuaj yeem pom, nws txoj kev siv tso cai rau koj kom ua tiav cov txiaj ntsig zoo dua hauv kev txo lub sijhawm ntawm Build + Push ua haujlwm dua li txawm tias lub tshuab ua haujlwm tau zoo - qhov no, cov txheej txheem ntawm lub tsev thiab xa cov thawv rau tus tswv tsev tau nrawm los ntawm yuav luag 2 zaug. . Ntxiv rau, koj tau txais 120 dawb tsim feeb txhua hnub, uas suav nrog koj lub tsev ntim khoom xav tau nyob rau hauv feem ntau.

Tom ntej no los txog qhov tseem ceeb tshaj plaws kev ntsuas ntsuas - qhov ceev ntawm retrieving, los yog rub tawm, rub ntim. Thiab yog tias koj tsis quav ntsej ntau txog lub sijhawm siv rau kev ua haujlwm thawb, tom qab ntawd qhov ntev ntawm cov txheej txheem rub muaj qhov cuam tshuam loj rau tag nrho cov kev ua haujlwm ntawm lub cev. Wb hais tias koj muaj ib pawg ntawm peb cov nodes thiab ib tug ntawm lawv tsis. Yog tias koj tab tom siv cov kev tswj hwm xws li Google Kubernetes Cav, nws yuav cia li hloov qhov tuag node nrog ib qho tshiab. Txawm li cas los xij, cov node tshiab no yuav khoob tas li thiab koj yuav tsum rub tag nrho koj cov ntim rau hauv nws kom nws pib ua haujlwm. Yog tias qhov kev ua haujlwm rub yuav siv sijhawm ntev txaus, koj pawg yuav khiav qis dua txhua lub sijhawm.

Muaj ntau qhov xwm txheej uas qhov no tuaj yeem tshwm sim: ntxiv cov node tshiab rau pawg, hloov kho cov nodes, lossis txawm hloov mus rau lub thawv tshiab rau kev xa tawm. Yog li, txo qis rub lub sijhawm rub tawm dhau los ua qhov tseem ceeb. Nws yog undeniable tias lub thawv me me rub tawm sai dua li qhov loj. Yog tias koj tab tom khiav ntau lub thawv hauv Kubernetes pawg, lub sij hawm txuag tau tseem ceeb.

Kubernetes cov kev coj ua zoo tshaj plaws. Tsim cov thawv me me

Ua tib zoo saib qhov kev sib piv no: kev ua haujlwm rub tawm ntawm cov thawv me me yuav siv sijhawm 4-9 lub sijhawm tsawg dua, nyob ntawm lub tshuab lub zog, dua li kev ua haujlwm tib yam siv mus: onbuild. Siv cov duab sib koom, cov thawv me me ua rau lub sijhawm thiab nrawm ntawm qhov tshiab Kubernetes nodes tuaj yeem xa mus thiab tuaj hauv online.

Cia peb saib qhov teeb meem ntawm kev ruaj ntseg. Cov thawv me me tau suav tias muaj kev nyab xeeb dua li cov khoom loj dua vim tias lawv muaj qhov chaw nres me me. Puas yog tiag? Ib qho ntawm cov txiaj ntsig zoo tshaj plaws ntawm Google Container Registry yog lub peev xwm los soj ntsuam koj cov thawv rau qhov tsis zoo. Ob peb lub hlis dhau los kuv tau tsim ob qho tib si onbuild thiab multistage ntim, yog li cia saib seb puas muaj qhov tsis zoo nyob ntawd.

Kubernetes cov kev coj ua zoo tshaj plaws. Tsim cov thawv me me

Qhov tshwm sim yog qhov tsis txaus ntseeg: tsuas yog 3 qhov tsis zoo nruab nrab tau kuaj pom hauv lub thawv me me, thiab 16 qhov tseem ceeb thiab 376 lwm qhov tsis zoo tau pom hauv lub thawv loj. Yog tias peb saib cov ntsiab lus ntawm lub thawv loj, peb tuaj yeem pom tias feem ntau ntawm cov teeb meem kev ruaj ntseg tsis muaj dab tsi cuam tshuam nrog peb daim ntawv thov, tab sis muaj feem xyuam rau cov kev pab cuam uas peb tsis txawm siv. Yog li thaum tib neeg tham txog qhov chaw tawm tsam loj, qhov ntawd yog qhov lawv txhais tau.

Kubernetes cov kev coj ua zoo tshaj plaws. Tsim cov thawv me me

Lub takeaway yog qhov tseeb: tsim cov thawv me me vim tias lawv muab cov txiaj ntsig zoo thiab kev nyab xeeb rau koj lub cev.

Kubernetes cov kev coj ua zoo tshaj plaws. Lub koom haum ntawm Kubernetes nrog namespace

Ib co ads πŸ™‚

Ua tsaug uas koj tau nyob nrog peb. Koj puas nyiam peb cov ntawv? Xav pom cov ntsiab lus nthuav ntxiv? Txhawb nqa peb los ntawm kev tso ib qho kev txiav txim lossis qhia rau cov phooj ywg, huab VPS rau cov tsim tawm los ntawm $ 4.99, ib qho tshwj xeeb analogue ntawm nkag-theem servers, uas tau tsim los ntawm peb rau koj: Qhov tseeb tag nrho txog VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps los ntawm $ 19 los yog yuav ua li cas faib cov server? (muaj nrog RAID1 thiab RAID10, mus txog 24 cores thiab mus txog 40GB DDR4).

Dell R730xd 2x pheej yig dua hauv Equinix Tier IV data center hauv Amsterdam? Tsuas yog nyob ntawm no 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV los ntawm $ 199 hauv Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - los ntawm $ 99! Nyeem txog Yuav ua li cas tsim infrastructure Corp. chav kawm nrog kev siv Dell R730xd E5-2650 v4 servers muaj nqis 9000 euros rau ib lub nyiaj?

Tau qhov twg los: www.hab.com

Ntxiv ib saib