KATS vs DOGS + FLASK + DOCKER + KUBERNETES

Hefurðu einhvern tíma velt því fyrir þér hvernig þú getur smíðað Machine learning vefforrit og dreift því að stækka það og stjórna því fyrir alla í skýinu? Þú ert kominn á réttan stað. Í þessari færslu mun ég fara í gegnum grunnhugtökin um að geyma ML vefforritið þitt og dreifa því í Google skýinu með kebernetes vél.

Þú getur fundið heildar kóðann hér. Til að fá snögga kynningu skaltu fara á http://130.211.229.36/.(hlaða aðeins jpg myndum)

Forkröfur = Skilningur bryggjuaðila

Í fyrsta lagi hvað er kubernetes? Kubernetes er opið hugbúnaðarkerfi fyrir gámaílát, það meðhöndlar tímasetningu á hnúta í tölvuþyrpingu og stjórnar virku vinnuálagi til að tryggja að ástand þeirra passi við yfirlýsta áform notandans og notar hugtakið merkimiðar og belg sem það flokkar gámana sem samanstanda af forrit í rökréttar einingar til að auðvelda stjórnun og uppgötvun.

Kubernetes arkitektúr

Yfirlit yfir Kubernetes þyrpinguna með Master og starfsmannahnútum. Öllum aðgerðum er stjórnað frá Master hnút sem er með API í gangi. Kubectl er stjórnunarviðmót til að keyra skipanir gegn Kubernetes klösum.

Hver hnútur eru merktir og gefin merki. Gámaforritið þitt keyrir inni í fræbelgi í hnút og er sent í aðalhnút.

A NODE

Þetta er hnútur með mörgum fræbelgum með IP-netföng þeirra.

Fræbelgjir - Þetta eru grunneining arkitektúrsins inniheldur venjulega 2 gáma. Hverjum fræbelgi í Kubernetes er úthlutað einstöku pod IP-tölu innan þyrpingarinnar og hægt er að stjórna henni handvirkt í gegnum Kubernetes API, A fræbelgur getur skilgreint hljóðstyrk, svo sem staðbundinn diskaskrá eða netdisk, og flett því út fyrir gámunum í fræbelgur.

Og að lokum kemur Úthlutun forritsins þíns með þjónustu. Þegar hnút starfsmanns deyr, glatast belgurinn sem keyrir á hnútnum. Eftirmyndasett gæti síðan virkað rekið þyrpinguna aftur í viðeigandi ástand með stofnun nýrra fræbelga til að halda umsókn þinni í gang. Þetta er gert í gegnum service.yaml skrá.

Til að skilja betur innviði kubernetes mæli ég með myndbandi sem skýrir öll hugtökin á einfaldan hátt hlekk.

Byrjum á vefforritinu okkar.

Ég þjálfaði Neural net líkanið mitt og vistaði það á JSON og bjargaði einnig lóðunum í h5 skrá. Ég skrifaði use_model.py til að hlaða þjálfaða líkanið frá JSON og til að spá fyrir um nýja mynd.

Ég notaði FLASK til að búa til vefforrit. Forritið er einfalt, það tekur myndina og spáir kötti eða hundi með því að nota use_model.py og skilar hvort „Þú ert HUND“ eða „Þú ert KAT“. App.py gengur svona (ég skipti um hýsingu = 0.0.0.0 þegar ég bjó til gáminn.)

Þá er mikilvægasti hlutinn að skrifa Dockerfie til að geta smíðað tengikvíarmyndina.

Keyra skipanir til að fá uppfærslu og & setja upp python3 ...

Afritaðu núverandi skrá. pip setja kröfur.txt

EXPOSE höfn (þar sem app.py þinn þjónar)

Keyrðu síðan skipunina python3 app.py. CMD verður alltaf bætt við Entrypoint til að gefa þér loka skipunina til að keyra.

Þú getur smíðað gáminn á staðnum og prófað gámaflaskaforritið þitt (keyrt þessar skipanir í verkefnaskránni)

skipuleggjari byggja -t image_classifier: nýjasta.
tengikví hlaupa -it -p 5500: 3000 image_classifier

Þetta mun keyra app.py þína og með framsendingu hafna á sínum stað geturðu fengið aðgang að webappinu í vafranum þínum á http: // localhost: 5000.

Nú kemur sá hluti sem mest er búist við.

Búðu til reikning á cloud.google.com gera greiðslur kleift að fá aðgang að Kubernetes vél. Siglaðu að kubernetes vélinni og smelltu á virkjaðu skýhnappinn efst á stjórnborðsglugganum. Þú munt fá stjórnborði neðst þar sem þú getur keyrt skipanir. Þessi leikjatölva er fyrirfram sett upp með gcloud, tengikví og kubectl. Einu sinni í stjórnborði:

git klón <þinn_verkefni>
geisladisk þinn_verkefni

Stilltu umhverfisbreytuna PROJECT_ID í skelinni þinni með því að sækja forstillta verkefnisauðkenni á gcloud með því að keyra skipunina hér að neðan:

export PROJECT_ID = "$ (gcloud config fá-gildi verkefni -q)"

Gildið PROJECT_ID verður notað til að merkja gámamyndina til að ýta henni yfir á einka gátaskrána.

Nú geturðu smíðað gámamyndina:

skipuleggjari byggja -t gcr.io/${PROJECT_ID}/:1.0.0
tengja ýta gcr.io/${PROJECT_ID}/:1.0.0

Það mun taka nokkurn tíma að smíða, eftir smíði geturðu staðfest með „Docker images“ skipuninni. Nú geturðu búið til þyrpinguna þína:

Byggja upp gámamyndina

Búa til gámaklasa:

Nú þegar gámamyndin er geymd í skránni þarftu að búa til gámaklasa til að keyra gámamyndina. Þyrping samanstendur af laug af Compute Engine VM tilvikum sem keyra Kubernetes.

gcloud gámaklasar búa til  --zone = us-central1-f --num-nodes = 2

Það tekur nokkurn tíma að ljúka, eftir að því er lokið er hægt að staðfesta með „gcloud compute instances list“ skipuninni.

Dreifir umsókn þinni:

kubectl run  --image = gcr.io / $ {PROJECT_ID} / : 1.0.0 - port 3000

„Kubectl fá fræbelg“ skipunina til að sjá fræbelginn búinn til af dreifingunni.

Lýstu umsókn þinni yfir á internetið:

kubectl afhjúpa dreifing  --type = LoadBalancer --port 80 - Target-port 3000

Kubectl expose skipunina hér að ofan býr til þjónustulind, sem veitir netkerfi og IP stuðning við Pods. forritsins þíns. - hafnarfáninn tilgreinir gáttarnúmerið sem er stillt á Load Balancer, og - target-port fáninn tilgreinir portnúmerið sem er notað af Podinn búinn til með kubectl run skipuninni frá fyrra skrefi.

kubectl fá þjónustu

Output gefur þér ytri IP (neðst á myndinni hér að neðan):

Fáðu ytra IP

Þegar þú hefur ákveðið ytri IP tölu umsóknarinnar skaltu afrita IP tölu. Beindu vafranum þínum að þessari slóð (eins og http://130.211.229.36) til að athuga hvort forritið þitt sé aðgengilegt.

Þegar þú heimsækir ytri IP

ATH: 1. Hvar sem ég hef notað <> ekki hika við að bæta við nöfnum þínum. 2. Ég hef skrifað yaml skrár líka í githubinu mínu ef þú ert að nota Digitalocean eða einhvern annan skýjapall.

Þetta blogg er gagnlegt. Fyrir allar efasemdir og fyrirspurnir athugasemd hér að neðan.