{"id":31938,"date":"2020-06-24T14:12:04","date_gmt":"2020-06-24T12:12:04","guid":{"rendered":"https:\/\/fotc.com\/kubernetes-tutorial\/"},"modified":"2022-05-16T09:21:35","modified_gmt":"2022-05-16T07:21:35","slug":"kubernetes-tutorial","status":"publish","type":"post","link":"https:\/\/fotc.com\/ro\/blog\/kubernetes-tutorial\/","title":{"rendered":"Kubernetes \u2013 ce este \u0219i cum s\u0103 \u00eencepe\u021bi? [Tutorial pe GCP]"},"content":{"rendered":"\n
Tot mai multe sisteme IT sunt create folosind containere. Containerizarea implic\u0103 plasarea componentelor aplica\u021biei (procesele, dependen\u021bele, bibliotecile, fi\u0219ierele de configurare sau bazele de date locale) \u00een c\u00e2teva sau mai multe “colec\u021bii” numite containere. Aceasta combin\u0103 avantajele virtualiz\u0103rii \u0219i men\u021binerii sistemului pe un server fizic. Adic\u0103, ofer\u0103 scalabilitate, portabilitate software rapid\u0103 \u0219i u\u0219oar\u0103 \u0219i separarea instan\u021belor, men\u021bin\u00e2nd \u00een acela\u0219i timp o performan\u021b\u0103 ridicat\u0103.<\/span> Av\u00e2nd numai c\u00e2teva containere, acestea pot fi controlate manual, dar \u00een cazul a sute sau mii de containere distribuite \u0219i gestionate dinamic, controlul poate fi dificil. R\u0103spunsul la aceast\u0103 problem\u0103 este orchestra\u021bia, adic\u0103 introducerea automatiz\u0103rii, administrarea grupurilor \u0219i monitorizarea containerelor. Cel mai popular instrument pentru orchestra\u021bie este Kubernetes.<\/strong><\/span><\/p>\n\n\n\n Kubernetes este o platform\u0103 open source care serve\u0219te la administrarea containerelor pe scar\u0103 larg\u0103. <\/span><\/p>\n\n\n\n Denumirea provine din limba greac\u0103 \u2013 “\u03ba\u03c5\u03b2\u03b5\u03c1\u03bd\u03ae\u03c4\u03b7\u03c2” \u00eenseamn\u0103 timonier, ceea ce explic\u0103 perfect scopul platformei. Kubernetes este numit, de asemenea, K8s, o abreviere \u00een care opt litere “ubernete” au fost \u00eenlocuite cu cifra “8”.<\/span><\/p>\n\n\n\n Instrumentul a fost creat de Google \u00een urm\u0103 cu aproape 20 de ani pentru a administra lucr\u0103rile mediului de produc\u021bie al companiei. \u00cen anul 2014, proiectul a fost predat organiza\u021biei Cloud Native Computing Foundation \u0219i a fost f\u0103cut public \u2013 de atunci, platforma este dezvoltat\u0103 continuu de organiza\u021bie \u0219i de companiile \u0219i speciali\u0219tii care utilizeaz\u0103 Kubernetes (\u00een proiectele open source se pot implica \u0219i utilizatorii).<\/span><\/p>\n\n\n\n K8s suport\u0103 automatizarea implement\u0103rilor, scalarea aplica\u021biilor, gestionarea containerelor, monitorizarea proceselor \u0219i modific\u0103rilor. Proprietarii de aplica\u021bii \u0219i echipele de dezvoltare care utilizeaz\u0103 platforma se pot concentra mai mult pe dezvoltarea produsului lor dec\u00e2t pe lucr\u0103rile DevOps (gestionarea infrastructurii \u0219i adaptarea produsului la cerin\u021bele acesteia). Kubernetes permite administrarea clusterelor (grupuri de servere care colaboreaz\u0103), astfel \u00eenc\u00e2t acestea s\u0103 arate, din perspectiva utilizatorului, \u00een termeni simpli, ca o singur\u0103 ma\u0219in\u0103. K8s elimin\u0103 obliga\u021bia dezvoltatorului de a adapta aplica\u021bia la cerin\u021bele infrastructurii \u2013 specialistul comand\u0103 lansarea aplica\u021biei, iar Kubernetes poate \u00eemp\u0103r\u021bi singur serviciile \u00eentre clustere, servere \u0219i le poate direc\u021biona spre containerele corespunz\u0103toare. Kubernetes are propria sa form\u0103 de load-balancing care este o tehnic\u0103 de dispersare (echilibrare) a sarcinilor \u00eentre mai multe ma\u0219ini.<\/span><\/p>\n\n\n\n K8s este suportat de majoritatea cloud-urilor publice, inclusiv de<\/span> Google Cloud Platform<\/span>.<\/span><\/a><\/p>\n\n\n\n Vezi \u0219i:<\/span><\/p>\n\n\n\n Platforma Kubernetes permite administrarea tuturor clusterelor, serverelor \u0219i containerelor dintr-un singur loc, indiferent unde se afl\u0103 ma\u0219inile sau componentele aplica\u021biei. Aceasta suport\u0103 planificarea \u00een grup, implementarea, scalarea \u0219i gestionarea ciclului de via\u021b\u0103 al elementelor.<\/span><\/p>\n\n\n\n La baza K8s st\u0103 scalabilitatea \u2013 instrumentul a fost creat de Google pentru a lansa miliarde de containere pe s\u0103pt\u0103m\u00e2n\u0103. Indiferent de num\u0103rul de ac\u021biuni efectuate, de ma\u0219ini utilizate sau de containere de\u021binute, nu este nevoie s\u0103 extinde\u021bi sau s\u0103 mic\u0219ora\u021bi echipa DevOps<\/strong>. Ave\u021bi, de asemenea, posibilitatea s\u0103 scala\u021bi orizontal \u0219i s\u0103 reduce\u021bi necesarul de resurse prin comenzi sau prin interfa\u021ba utilizatorului sau automat pe baza utiliz\u0103rii procesorului.<\/span><\/p>\n\n\n\n Kubernetes lucreaz\u0103 \u00eempreun\u0103 cu infrastructura de pe servere fizice<\/strong>, solu\u021bii cloud \u0219i hibride<\/strong> (combina\u021bie \u00eentre un centru local \u0219i cloud). Acesta este suportat de diver\u0219i furnizori de cloud-uri publice, inclusiv Google Cloud Platform, Amazon Web Services \u0219i Microsoft Azure.<\/span><\/p>\n\n\n\n Dup\u0103 lansarea aplica\u021biei pe platform\u0103, aceasta devine o aplica\u021bie portabil\u0103. Aplica\u021bia poate fi mutat\u0103 \u00eentre medii<\/strong> (cum ar fi dezvoltare, testare, produc\u021bie) \u0219i \u00eentre solu\u021bii de infrastructur\u0103, men\u021bin\u00e2nd \u00een acela\u0219i timp coeren\u021ba aplica\u021biei.<\/strong><\/span><\/p>\n\n\n\n K8s face modific\u0103ri treptat, monitoriz\u00e2nd constant starea fiec\u0103rei instan\u021be.<\/strong> Dac\u0103 ceva nu merge bine, Kubernetes retrage automat modific\u0103rile. Dac\u0103 un container prezint\u0103 o eroare, instrumentul \u00eel \u00eenlocuie\u0219te cu altul, lucr\u00e2nd \u00een acela\u0219i timp la restabilirea func\u021bion\u0103rii \u0219i elimin\u00e2nd elementele inutile.<\/span><\/p>\n\n\n\n Kubernetes este un proiect open source. \u00cen dezvoltarea sa sunt implica\u021bi nu numai proprietarii, ci \u0219i persoanele care folosesc platforma zilnic: dezvoltatori, speciali\u0219ti DevOps, companii de software<\/strong>. Ace\u0219tia creeaz\u0103 elemente noi sau propun implementarea de \u00eembun\u0103t\u0103\u021biri ale proceselor \u0219i instrumentelor existente.<\/span><\/p>\n\n\n\n Platforma este utilizat\u0103 de companiile cu servicii avansate care administreaz\u0103 cantit\u0103\u021bi mari de date, axate pe dezvoltare rapid\u0103 \u0219i f\u0103r\u0103 probleme.<\/span><\/p>\n\n\n\n Posibilit\u0103\u021bile Kubernetes sunt utilizate, de asemenea, de Booking.com, BlaBlaCar, ING Group \u0219i Zalando.<\/span><\/p>\n\n\n\n Primul pas este intrarea \u00een consola Google Cloud:<\/span> https:\/\/console.cloud.google.com\/<\/span><\/a>.<\/span><\/p>\n\n\n\n Crea\u021bi un proiect nou (face\u021bi clic pe numele proiectului de l\u00e2ng\u0103 textul “Google Cloud Platform” din col\u021bul din st\u00e2nga sus).<\/span><\/p>\n\n\n\n Completa\u021bi numele proiectului \u0219i face\u021bi clic pe Create<\/strong>.<\/span><\/p>\n\n\n\n Revenind la lista de proiecte (butonul de l\u00e2ng\u0103 textul “Google Cloud Platform”) ve\u021bi primi ID-ul proiectului<\/strong>. Acesta va fi necesar \u00een etapele urm\u0103toare.<\/span><\/p>\n\n\n\n Deschide\u021bi Cloudshell<\/strong> (col\u021bul din dreapta sus).<\/span><\/p>\n\n\n\n Folosind comanda de mai jos, seta\u021bi proiectul la care ve\u021bi lucra:<\/span><\/p>\n\n\n Ave\u021bi grij\u0103 s\u0103 introduce\u021bi \u00een comand\u0103 ID-ul proiectului dvs. \u2013 acesta poate fi diferit de cel din exemplul dat.<\/span><\/p>\n\n\n\n Mai departe, seta\u021bi regiunea \u00een care dori\u021bi s\u0103 implementa\u021bi aplica\u021bia:<\/span><\/p>\n\n\n Lista regiunilor se afl\u0103 aici: <\/span> <\/span>https:\/\/cloud.google.com\/about\/locations#europe<\/a><\/p>\n\n\n\n Crea\u021bi un cluster folosind comanda:<\/span><\/p>\n\n\n Steagul \u2013num-nodes<\/strong> permite setarea num\u0103rului de node-uri (ma\u0219ini fizice sau virtuale) din cluster. Mai multe informa\u021bii despre steag pot fi g\u0103site sub linkul: <\/span>https:\/\/cloud.google.com\/sdk\/gcloud\/reference\/container\/clusters\/create#\u2013num-nodes<\/span><\/a><\/p>\n\n\n\n Aceast\u0103 opera\u021bie poate dura c\u00e2teva minute.<\/strong><\/p>\n\n\n\n Dup\u0103 terminarea opera\u021biei, ve\u021bi ob\u021bine un tabel \u00een Cloudshell care va afi\u0219a parametrii clusterului.<\/span><\/p>\n\n\n\n Acum folosi\u021bi comanda:<\/span><\/p>\n\n\n Comanda actualizeaz\u0103 fi\u0219ierul kubeconfig<\/strong> cu referin\u021bele \u0219i informa\u021biile corespunz\u0103toare pentru a continua lucrul cu clusterul.<\/span><\/p>\n\n\n\n Pentru a implementa aplica\u021bia \u00een cluster, folosi\u021bi comanda: <\/span><\/p>\n\n\n Steagul \u2013image<\/strong> indic\u0103 un link la o aplica\u021bie containerizat\u0103 \u00een serviciul Container Registry<\/strong> (GCR). Serviciul Container Registry permite stocarea imaginilor containerizate ale aplica\u021biei. Pentru mai multe informa\u021bii despre GCR, consulta\u021bi:<\/span> https:\/\/cloud.google.com\/container-registry<\/span><\/a><\/p>\n\n\n\n Aici se afl\u0103 codul surs\u0103 al aplica\u021biei hello-app<\/strong> pe care o implementa\u021bi:<\/span> https:\/\/github.com\/GoogleCloudPlatform\/kubernetes-engine-samples\/blob\/master\/hello-app\/main.go<\/span><\/a><\/p>\n\n\n\n Pute\u021bi implementa aplica\u021bia indic\u00e2nd o imagine containerizat\u0103 din Container Registry<\/strong>.<\/span><\/p>\n\n\n\n Acum expune\u021bi aplica\u021bia (expose<\/strong>). \u00cen acest scop, folosi\u021bi comanda:<\/span><\/p>\n\n\n Mai multe informa\u021bii despre kubectl<\/strong> pot fi g\u0103site la: <\/span>https:\/\/kubernetes.io\/docs\/reference\/generated\/kubectl\/kubectl-commands#expose<\/span><\/a><\/p>\n\n\n\n Steagul \u2013type<\/strong> indic\u0103 tipul de implementare (ClusterIP, NodePort, LoadBalancer sau ExternalName). \u00cen acest caz, crea\u021bi un LoadBalancer care va face aplica\u021bia disponibil\u0103 pe Internet.<\/span><\/p>\n\n\n\n Steagul \u2013port<\/strong> indic\u0103 portul prin care urmeaz\u0103 s\u0103 fie deservit\u0103 aplica\u021bia.<\/span><\/p>\n\n\n\n Steagul \u2013target-port<\/strong> indic\u0103 portul din container spre care serviciul va direc\u021biona traficul.<\/span><\/p>\n\n\n\n Apoi tasta\u021bi comanda: <\/span><\/p>\n\n\n Datorit\u0103 acesteia ve\u021bi ob\u021bine IP-ul public al clusterului<\/strong> pe care a\u021bi implementat aplica\u021bia:<\/span><\/p>\n\n\n\n Iat\u0103 rezultatul:<\/span><\/p>\n\n\n\n Pentru a \u0219terge clusterul \u0219i a anula implementarea, utiliza\u021bi urm\u0103toarele comenzi:<\/span><\/p>\n\n\n Acestea sunt bazele Kubernetes!<\/span><\/p>\n\n\n\n Dac\u0103 dori\u021bi s\u0103 testa\u021bi posibilit\u0103\u021bile Kubernetes \u0219i s\u0103 cunoa\u0219te\u021bi Google Cloud Platform \u2013 o infrastructur\u0103 cloud scalabil\u0103 cu multe propuneri tehnologice \u2013 <\/span>contacta\u021bi-ne<\/span>.<\/span><\/a> \u00cen calitate de partener oficial Google Cloud Premier Partner, v\u0103 garant\u0103m un voucher de pornire \u00een GCP de 500 USD,<\/strong> asisten\u021b\u0103 tehnic\u0103 complet\u0103 \u0219i posibilitatea de pl\u0103ti pentru serviciul cloud \u00een lei<\/strong>.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":" Tot mai multe sisteme IT sunt create folosind containere. Containerizarea implic\u0103 plasarea componentelor aplica\u021biei (procesele, dependen\u021bele, bibliotecile, fi\u0219ierele de configurare sau bazele de date locale) \u00een c\u00e2teva sau mai multe “colec\u021bii” numite containere. Aceasta combin\u0103 avantajele virtualiz\u0103rii \u0219i men\u021binerii sistemului pe un server fizic. Adic\u0103, ofer\u0103 scalabilitate, portabilitate software rapid\u0103 \u0219i u\u0219oar\u0103 \u0219i separarea instan\u021belor, … Continued<\/a><\/p>\n","protected":false},"author":13,"featured_media":20541,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_typography_data":[],"_editorskit_blocks_typography":"","_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}"},"categories":[562],"tags":[555,139],"yoast_head":"\n
\n<\/p>\n\n\n\n\n\n\n\nCe este Kubernetes?<\/span><\/h2>\n\n\n\n
Centralizare<\/h3>\n\n\n\n
Scalabilitate<\/span><\/h3>\n\n\n\n
Diverse solu\u021bii de infrastructur\u0103<\/span><\/h3>\n\n\n\n
Coeren\u021ba \u00eentre medii<\/span><\/h3>\n\n\n\n
Prevenirea defec\u021biunilor \u0219i auto-repararea <\/span><\/h3>\n\n\n\n
Dezvoltarea continu\u0103 a platformei<\/span><\/h3>\n\n\n\n
Exemple de utilizare a Kubernetes<\/span><\/h2>\n\n\n\n
Kubernetes pe Google Cloud Platform \u2013 tutorial<\/span><\/h3>\n\n\n\n
<\/figure>\n\n\n\n
<\/figure>\n\n\n\n
<\/figure>\n\n\n\n
<\/figure>\n\n\n\n
gcloud config set project k8s-demo-281313<\/pre>\n\n\n\n
<\/figure>\n\n\n\n
gcloud config set compute\/zone europe-west3-c<\/pre>\n\n\n\n
<\/figure>\n\n\n\n
gcloud container clusters create my-cluster--num-nodes=1<\/pre>\n\n\n\n
<\/figure>\n\n\n\n
gcloud container clusters get-credentials my-cluster<\/pre>\n\n\n\n
<\/figure>\n\n\n\n
kubectl create deployment hello-server --image=gcr.io\/google-samples\/hello-app:1.0<\/pre>\n\n\n\n
<\/figure>\n\n\n\n
kubectl expose deployment hello-server --type LoadBalancer \\\n--port 80 --target-port 8080<\/pre>\n\n\n\n
kubectl get service hello-server<\/pre>\n\n\n\n
<\/figure>\n\n\n\n
<\/figure>\n\n\n\n
kubectl delete service hello-server\ngcloud container clusters delete my-cluster<\/pre>\n\n\n\n
<\/figure>\n\n\n\n
Kubernetes pe Google Cloud Platform \u2013 ob\u021bine\u021bi un voucher de 500 USD<\/h3>\n\n\n\n