KASSID vs KOERAD + VIRM + KUMMIK + KUBERNETID

Kas olete kunagi mõelnud, kuidas luua masinõppega veebirakendus ja kasutusele võtta selle ulatus ja hallata seda kõigi pilves olevate inimeste jaoks? Olete jõudnud õigesse kohta. Selles postituses tutvun põhiprintsiipidega, mis käsitlevad teie ML-i veebirakenduse säilitamist ja Google'i pilves selle kasutuselevõttu kebernetes-mootori abil.

Täieliku koodi leiate siit. Kiire esitluse jaoks külastage saiti http://130.211.229.36/. (Laadige üles ainult jpg-pildid)

Eeltingimused = doktorite mõistmine

Esiteks, mis on kubernetes? Kubernetes on dokkimiskonteinerite avatud lähtekoodiga orkestreerimissüsteem, see tegeleb arvutiklastri sõlmedele ajastamisega ja haldab aktiivselt töökoormusi tagamaks, et nende olek vastab kasutaja deklareeritud kavatsustele, kasutades siltide kontseptsiooni ja kaustade abil rühmi konteinerid, mis moodustavad rakendus loogilisteks ühikuteks hõlpsaks haldamiseks ja avastamiseks.

Kubernetesi arhitektuur

Ülevaade Kubernetesi klastrist koos meister- ja töölisõlmedega. Kõiki klastri tegevusi juhitakse peasõlmest, kus töötab API. Kubectl on käsuribaliides käskude käitamiseks Kubernetesi klastrite vastu.

Kõik sõlmed on märgistatud ja neile on antud sildid. Teie konteineris olev rakendus töötab sõlmes asuvas tassis ja juurutatakse peasõlme.

NUUD

See on sõlme, millel on palju taskuid koos nende IP-aadressidega.

Kaardid - need on arhitektuuri põhiüksus, mis sisaldab tavaliselt 2 konteinerit. Igale Kubernetes'is asuvale poodile omistatakse klastris ainulaadne puldi IP-aadress ja seda saab Kubernetes API kaudu käsitsi hallata. Punn saab määratleda köite, näiteks kohaliku ketta kataloogi või võrguketta, ja paljastada selle kauna.

Ja lõpuks tuleb rakenduse paljastamine teenust kasutades. Kui töötaja sõlme sureb, lähevad kaduma ka sõlmel töötavad kaablid. Kopeerimiskomplekt võib seejärel klastri dünaamiliselt soovitud olekusse viia, luues uued kaustad, et teie rakendus töötaks. Seda tehakse faili service.yaml kaudu.

Kubernetes'i taristu paremaks mõistmiseks soovitan videot, kus selgitatakse kõiki mõisteid lihtsustatud viisil.

Alustame meie veebirakendust.

Ma koolitasin oma Neuraalvõrgu mudelit ja salvestasin selle JSON-i ning ka raskused h5-faili. Kirjutasin use_model.py koolitatud mudeli laadimiseks JSONist ja uue pildi ennustamiseks.

Veebirakenduse loomiseks kasutasin FLASK-i. Rakendus on lihtne, see võtab pildi ja ennustab kassi või koera, kasutades Use_model.py, ja tagastab kas te olete koer või te olete kass. App.py läheb niimoodi (muutsin konteineri loomisel hostiks = 0.0.0.0).

Siis on kõige olulisem kirjutada Dockerfie, et saaksite doki pildi üles ehitada.

Käivitage käsud apt-get update && python3 installimine ...

Kopeerige oma praegune kataloog. pip installinõuded.txt

EXPOSE port (kus teie app.py töötab)

Seejärel käivitage käsk python3 app.py. CMD lisatakse alati sisestuspunktile, et anda teile viimane käsk käitamiseks.

Saate konteineri ehitada kohapeal ja testida oma konteinerisisese kolbi rakendust (käivitage need käsud projekti kataloogis)

doki ehituse -t image_classifier: viimane.
doki käivitamine -p-5500: 3000 image_classifier

See käivitab teie rakenduse.py ja kui pordi edastamine on paigas, saate veebibrauseril juurde pääseda brauseris aadressil http: // localhost: 5000.

Nüüd tuleb kõige oodatum osa.

Kui soovite konto Kubernetese mootorile juurde pääseda, looge konto aadressil cloud.google.com. Liikuge kubernetes mootori juurde ja klõpsake konsooliakna ülaosas nuppu Aktiveeri pilvekesta nupp. Altpoolt saate konsooli, kus saate käivitada käske, millele see konsool on eelinstalleeritud koos gcloud, docker ja kubectl. Kui olete konsoolis:

git kloon 
cd oma_projekt

Seadke oma kestas keskkonnamuutuja PROJECT_ID, hankides gcloudis eelkonfigureeritud projekti ID, käivitades alltoodud käsu:

eksport PROJECT_ID = "$ (gcloud config saab väärtusprojekti -q)"

Väärtust PROJECT_ID kasutatakse konteineri pildi sildistamiseks selle edastamiseks teie privaatsesse konteineri registrisse.

Nüüd saate luua konteineri pildi:

doki ehitamine -tccr.io/${PROJECT_ID}/:1.0.0
doki tõukefunktsioon gcr.io/${PROJECT_ID}/:1.0.0

Ehitamine võtab natuke aega, pärast ehitamist saate seda kinnitada käsu „Dockeri pildid” abil. Nüüd saate oma klastri luua:

Konteineri pildi ehitamine

Konteineri klastri loomine:

Nüüd, kui konteineri pilt on registris salvestatud, peate konteineri pildi käitamiseks looma konteineri klastri. Klaster koosneb arvutusmootori VM-eksemplaridest, mis töötavad Kuberneteses.

gcloud konteineri klastrid loovad  --zone = us-central1-f --num-nodes = 2

Lõpetamine võtab natuke aega, pärast lõpetamist saate seda kinnitada käsuga “gcloud compute instance list”.

Rakenduse juurutamine:

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

Käsklus „kubectl get pods”, et näha juurutamise käigus loodud kausta.

Rakenduse avaldamine Internetis:

kubectl paljastab juurutamise  --type = LoadBalancer --port 80 --target-port 3000

Ülaltoodud käsuga kubectl paljastada luuakse teenuse ressurss, mis pakub teie rakenduse Podidele võrkude loomist ja IP-tuge. Portilipp tähistab koormuse tasakaalustajal konfigureeritud pordi numbrit ja lipp - target-pordi lipp määrab pordi numbri, mida kasutab eelmisest sammust kubectl run käsuga loodud kausta.

kubectl saada teenust

Väljund annab teile välise IP (allpool oleva pildi allosas):

Hankige väline IP

Kui olete rakenduse välise IP-aadressi kindlaks teinud, kopeerige IP-aadress. Osutage oma brauser sellele URL-ile (nt http://130.211.229.36), et kontrollida, kas teie rakendusele on juurde pääseda.

Välise IP külastamisel

MÄRKUS. 1. Kui iganes ma olen seda kasutanud, lisage soovitud nimed. 2. Olen kasutanud yaml-faile ka oma githubis, kui kasutate Digitaloceani või mõnda orheri pilveplatvormi.

Sellest ajaveebist on abi. Kõigi kahtluste ja küsimuste korral kommenteerige allpool.