Kubernetes

Kubernetes Početak rada

Kubernetes Početak rada

Kubernetes je platforma otvorenog koda za upravljanje kontejneriranim aplikacijama kroz klaster fizičkih ili virtualnih strojeva. Izvorna inspiracija za Kubernetes bio je Googleov sustav Borg. Borg je sustav upravljanja klasterima koji obrađuje stotine tisuća poslova i aplikacija u masivnim Googleovim podatkovnim centrima. Kubernetes je trebao biti prijateljskija verzija sustava upravljanja klasterima koju bi svi mogli koristiti.

Popularnost spremnika u procesu razvoja softvera čini i Kubernetes popularnim. U starom procesu razvoja softvera aplikacije su se raspoređivale na fizičkim host računalima. Programeri koji rade na različitim komponentama aplikacije potrebne za održavanje kohezivnog okruženja. Operacijsko i informatičko osoblje potrebno za pažljivo upravljanje izvršnim datotekama, konfiguracijama i knjižnicama. Različite komponente aplikacije mogle bi naići na sukob tijekom procesa integracije. Također, postupak je bio podložan ljudskim pogreškama i pogrešnim komunikacijama.

Virtualni strojevi (VM) pomogli su u postizanju određene razine pouzdanosti procesa. Ali i dalje je bilo teško upravljati aplikacijama. Također, VM-ovi su skupi za održavanje. Kontejneri su promijenili krajolik. S kontejnerima je programerima koji rade na različitim komponentama istog softvera bilo moguće održavati odvojena okruženja. Spremnici su lagani, jeftini i brzi. Te su prednosti rodile ideju o razvoju softvera koji koristi mikroservise, pri čemu svaki spremnik služi određenom zadatku za aplikaciju.

S porastom upotrebe spremnika, Kubernetes je postao učinkovit alat za planiranje i pokretanje aplikacija na klasterima. Kao platforma, ona može osloboditi programere tereta opterećenja bilo kojom vrstom strojeva. Umjesto dizajniranja za infrastrukturu usmjerenu na hosta s obzirom na fizičke ili virtualne strojeve, programeri mogu početi dizajnirati infrastrukturu usmjerenu na kontejnere. Kubernetes pruža potreban sloj apstrakcije.

1. dio: Pojmovi

Glavne komponente

Glavne komponente su kontrolne usluge za klaster. Te komponente obrađuju globalne odluke i događaje. Može ih pokrenuti bilo koji čvor u klasteru. Međutim, dodjeljivanje određenih čvorova tim komponentama smatra se dobrom praksom.

kube-apiserver

Kube-apiserver služi Kubernetes API. Kubernetes API implementira RESTful sučelje. Djeluje kao most između različitih Kubernetes komponenata poput pods, usluga, kontrolera replikacije i drugih. Odgovorna je za dosljednost komunikacije između trgovine etcd i postavljenih spremnika.

itdd

Etcd je odgovoran za pohranu svih podataka klastera Kubernetes. Projekt etcd razvio je CoreOS tim. To je lagana, distribuirana trgovina ključ / vrijednost koja koristi HTTP / JSON API. Čvorovi u klasteru mogu koristiti konfiguracijske podatke iz etcd za otkrivanje usluga i oporavak od neuspjelih stanja. Zbog važnosti podataka, etcd treba pravilno izrađivati ​​sigurnosne kopije.

kube-kontrolor-menadžer

Upravitelj kube-kontrolera pokreće razne kontrolere za pružanje različitih usluga. Na primjer, kontroleri čvorova oporavljaju neuspjele čvorove, a kontrolori replikacije održavaju točan broj pods. Svaki kontroler radi kao zasebna nit i ovisi o podacima etcd za izvršavanje svojih zadataka.

oblak-kontrolor-upravitelj

Upravitelj-kontroler oblaka pruža kontrolere specifične za oblak. Može se onemogućiti u upravitelju kube-kontrolera. Upravitelj oblak-kontrolora odvojen je od jezgre kako bi se jezgra Kubernetes mogla razvijati neovisno o specifičnom kodu davatelja usluge oblaka. U prošlosti su ovisnosti stvarale probleme.

kube-planer

Kube-planer odgovoran je za raspodjelu radnog opterećenja. Prati zahtjeve za resursima i dodjeljuje čvorove za novostvorene mahune. Također se brine o zahtjevima kvalitete usluge.

dodaci

Dodaci su mahune i usluge koje se koriste za implementaciju značajki klastera. Korisnici mogu koristiti upravitelj dodataka za stvaranje i održavanje dodataka. Neki važni i korisni dodaci su DNS, web korisničko sučelje (nadzorna ploča), nadzor resursa spremnika i zapisivanje na razini klastera.

Komponente čvora

Radnički stroj u Kubernetesu naziva se čvor. Komponente čvora prisutne su u svakom čvoru i obrađuju različite aspekte radnog opterećenja.

kubelet

Usluga kubelet na svakom čvoru primarni je agent. Prati podslove dodijeljene njegovom čvoru putem apiservera ili lokalne konfiguracijske datoteke. Komunicira s glavnim komponentama kako bi saznao radne zahtjeve i prijavio status svog čvora.

kube-proxy

Kube-proxy je mala proxy usluga na svakom čvoru koja se bavi pojedinačnim podmrežama hosta. Može izvršiti osnovno uravnoteženje opterećenja za TCP i UDP.

lučki radnik

Kubernetes prvenstveno ovise o pristaništu za pokretanje spremnika. Sposoban je graditi aplikacije na docker slikama.

rkt

Kubernetes također podržava rkt spremnike. Podrška je trenutno eksperimentalna.

nadzornik

Supervisord se može koristiti za nadgledanje i kontrolu kubeleta i docker kontejnera.

tečno

Fluentd je deamon za osiguravanje bilježenja na razini odbacivača.

Opterećenja

Kubernetesova opterećenja mogu se definirati kako slijedi:

Mahune

Mahuna je temeljna jedinica u Kubernetesovom opterećenju. Kontejneri nisu pojedinačno dodijeljeni domaćinima. Grupe spremnika, koji obično pripadaju aplikaciji, predstavljene su kao mahuna, a mahuna se zatim raspoređuje na hostu kao jedna jedinica. Naravno, mahuna može sadržavati samo jedan spremnik. To je općenito češće u Kubernetesa. Međutim, spremnici se grupiraju na temelju potreba resursa i aplikacija. Grupiranje je namijenjeno optimizaciji dijeljenja resursa.

Kontroleri

Kontroleri kao što su skupovi replika, kontroler replikacije, postavljanja, skupovi stanja, prikupljanje smeća i cron poslovi pomažu u upravljanju Kubernetesovim radnim opterećenjima. Kontrolori replikacije upravljaju brojem mahuna. Pokreće i završava mahune kako bi održao točan broj pokrova koji rade. Kontroler postavljanja pomaže u promjeni mahuna i objekata implementacije kako bi se postiglo željeno stanje implementacije.

Ostale važne ideje

Usluge

Mahune kuberneta stvaraju se i redovito uništavaju. Stoga ih je teško pratiti putem IP adresa. Dinamična priroda mahuna otežava im međusobnu komunikaciju. Usluga djeluje kao apstrakcija. Pruža politiku za dosezanje logičnog skupa mahuna. U Kubernetesu je usluga OSTALI objekt. Usluge pojednostavljuju dizajn spremnika.

Oznake

Oznake su moćan način za praćenje i upravljanje skupinama radnih komponenata. Oznake su parovi ključ / vrijednost koji djeluju kao proizvoljne oznake kako bi stekli finiju kontrolu nad različitim funkcijama sustava.

Dio 2: Praktični projekt

Pokretanje projekta Minikube

Minikube je binarni sustav koji postavlja jedan Kubernetesov klaster na lokalnom stroju. U ovom projektu, čvor.js aplikacija pretvorit će se u sliku spremnika dockera, a slika će se pokretati na Minikubeu.

Instaliranje Minikube, kubectl, Hypervisor, NodeJS i Docker

Možete instalirati Minikube i Kubernetes alat naredbenog retka kubectl na Mac OS X, Linux i Windows s raznim hipervizorima. Upute za različite operativne sustave dostupne su ovdje. Također, trebat će vam NodeJS instaliran na vašem računalu za pokretanje primjera HelloWorld aplikacije. Ovdje možete instalirati docker.

Pokretanje klastera

Upotrijebite sljedeću naredbu za pokretanje klastera:

$ minikube start Pokretanje lokalnog Kubernetesa v1.7.5 klastera ... Pokretanje VM-a ... Preuzimanje Minikube ISO 106.36 MB / 106.36 MB [==============================================] 100.00% 0s Dobivanje VM IP adrese ... Premještanje datoteka u klaster ... Postavljanje certifikata ... Povezivanje s klasterom ... Postavljanje kubeconfig ... Pokretanje komponenti klastera ... Kubectl je sada konfiguriran za upotrebu klastera. 

Upotrijebite donju naredbu da biste provjerili radi li klaster ispravno:

$ kubectl cluster-info Kubernetes master radi na https: // 192.168.99.100: 8443

Stvorite sliku aplikacije

Stvorimo poslužitelj.js datoteka sljedećeg sadržaja:

var http = require ('http'); var handleRequest = funkcija (zahtjev, odgovor) konzola.log ('Primljeni zahtjev za URL:' + zahtjev.url); odgovor.writeHead (200); odgovor.kraj ('Pozdrav svijetu!'); ; var www = http.createServer (handleRequest); www.slušati (8080); 

Možete pokrenuti sljedeću naredbu:

$ čvor poslužitelj.js

I provjerite radi li poslužitelj na http: // localhost: 8080. Trebali biste vidjeti “Hello World!”Tekst na web stranici.

Pretvori u Docker spremnik

U istom direktoriju kao i poslužitelj.js stvoriti datoteku Dockerfile sa sljedećim tekstom:

OD čvora: 6.9.2 EXPOSE 8080 COPY poslužitelj.js . CMD poslužitelj čvora.js 

Dockerfile će stvoriti sliku koja će započeti od čvora: 6.9.2 slika na Docker Hub-u.
Želimo pokretati slike dockera lokalno. Dakle, sljedeća naredba će reći dockeru da koristi Minikube deamon za pohranu slika na dockeru:

$ eval $ (minikube docker-env)

Možete koristiti eval $ (minikube docker-env -u) da biste ga vratili na zadani.
Izgradimo sada sliku dockera:

$ docker gradi -t moj-čvor: v1 . Slanje konteksta gradnje u Docker demon 3.072kB 1. korak: IZ čvora: 6.9.2 6.9.2: Izvlačenje iz biblioteke / čvor 75a822cd7888: Pull završena 57de64c72267: Pull završena 4306be1e8943: Pull završena 871436ab7225: Pull završena 0110c26a367a: povući potpunu 1f04fe713f1b: Pull završena ac7c0b5fb553: pull cjelokupnu Digest: SHA256: 2e95be60faf429d6c97d928c762cb36f1940f4456ce4bd33fbdc34de94a5e043 Status: preuzeto noviju sliku za čvor: 6.9.2 ---> faaadb4aaf9b Korak 2: EXPOSE 8080 ---> Pokretanje u da7d251b3fd5 ---> 881f9fb69b2c Uklanjanje srednjeg spremnika da7d251b3fd5 Korak 3: COPY poslužitelj.js . ---> 0acf61d9e75e Uklanjanje srednjeg spremnika 3a4025539cf6 Korak 4: CMD poslužitelj čvora.js ---> Pokretanje u 8aa9a4cbd723 ---> 41445e5c48fe Uklanjanje međukontejnera 8aa9a4cbd723 Uspješno izgrađeno 41445e5c48fe 

Rasporedite se u klaster
Da biste postavili my-node: v1, pokrenite sljedeću naredbu:

$ kubectl izvodi my-node --image = my-node: v1 --port = 8080 postavljanje "my-node" stvoreno

Stvorit će mahuna na klasteru. Stanje mahuna možemo provjeriti sljedećim naredbama:

$ kubectl dobiti implementacije IME ŽELJENO SADAŠNJE DOSTUPNO DOSTUPNO DOBA my-node 1 1 1 1 34s 
$ kubectl dobiti mahune IME SPREMNI STATUS PONOVNO POČINJA STAROST my-node-276881918-qth5s 1/1 Trčanje 0 1m 
$ kubectl dobiti događaje LASTSEEN PRVI PRIKAZANI IME VRSTA TIP PREDMETA RAZLOG IZVOR PORUKA 32m 32m 1 minikube Čvor Uobičajeno Početak kube-proxy, minikube Početak kube-proxy. 32m 32m 1 minikube Čvor Normalno Startni kubelet, minikube Startni kubelet. 32m 32m 2 minikube Node Normal NodeHasSufficientDisk kubelet, minikube Node status minikube je sada: NodeHasSufficientDisk 32m 2 minikube NodeHasSufficientMemory kubelet, minikube Node status minikube NubeHasSufficientMemory NbeHodeSufficientMemory NbeHodeSufficientMiskory NbeHodeSufficientDemode NumeHubSumeSecurityMode NodeHasNoDiskPressure 32m 32m 1 minikube Node Normal NodeAllocatableEnforced kubelet, minikube Ažurirano Node Dozvoljeno ograničenje preko mahuna 32m 32m 1 minikube Node Normal RegisteredNode controllermanager Node minikube događaj: Registrirani Node minikube u NodeControku 32m 32 Nube Node Nbe Node Nbe Node Nbe Node Nbe Node Nbe Node Nbe Node Nbe Node Node Nbe Node Nbe NodeReady 6m 6m 1 minikube Node Normal RegisteredNode controllermanager Node minikube događaj: Registrirani Node minikube u NodeController 5m 5m 1 minikube Node Normal Starting kubelet, minikube Početak kubeleta. 5m 5m 1 minikube Node Normal NodeAllocatableEnforced kubelet, minikube Ažurirano Node Dozvoljeno ograničenje preko mahuna 5m 5m 1 Minikube Node Normal NodeHasSufficientDisk kubelet, minikube Node Status minikube NodeHasSufficientDisk 5m 5m 1 Nku MiniMode Node Nbe Normal Node Nbe NM, Minus Node Nbe Nome Nub Num Normalno Node Nbe Nume, Normal Node Nbe 5m 5m 1 minikube Node Normal NodeHasNoDiskPressure kubelet, minikube Node status minikube je sada: NodeHasNoDiskPressure 5m 5m 1 Minikube Node Normal NodeNotReady kubelet, minikube Node status minikube NodeNotReady 5m 5m 1m Minibe, Start Minibebe, Minbe mini kube. 5m 5m 1 minikube Node Normal NodeReady kubelet, minikube Node status minikubea je sada: NodeReady 2m 2m 1 my-node-276881918-qth5s Pod Normal Planirani zadani planer Uspješno dodijeljen my-node-276881918-qth5s minikube 2m 2m 1m 2m 2m 1 my 2 -276881918-qth5s Pod Normal SuccessfulMountVolume kubelet, minikube MountVolume.Postavljanje je uspjelo za volumen "default-token-r5pl1" 2m 2m 1 my-node-276881918-qth5s Pod spec.spremnici my-node Normalno izvučeni kubelet, minikube Slika spremnika "my-node: v1" već je prisutna na stroju 2m 2m 1 my-node-276881918-qth5s Pod spec.spremnici my-node Normalno stvoreni kubelet, minikube Stvoren spremnik 2m 2m 1 my-node-276881918-qth5s Pod spec.kontejneri my-node Normal Started kubelet, minikube Started container 2m 2m 1 my-node-276881918 ReplicaSet Norm SuccessfulCreate replicaset-controller Created pod: my-node-276881918-qth5s 2m 2m 1 my-node Deployment Normal ScalingReplicaSet deployment-ScaleReplicaled Set gore replika set my-node-276881918 

Stvorite uslugu
Mahuna je nepristupačna. Morate stvoriti uslugu kako bi mahuna postala dostupna svijetu. Sljedeća naredba trebala bi stvoriti potrebnu uslugu:

$ kubectl izloži postavljanje my-node --type = LoadBalancer usluga "my-node" izložena

Status usluge možete provjeriti ovako:

$ kubectl dobiti usluge IME KLUSTER-IP EKSTERNI-IP LUKA (A) STAROST kubernetes 10.0.0.1  443 / TCP 34m moj čvor 10.0.0.213  8080: 31460 / TCP 31s 

Ako upotrijebite sljedeću naredbu, otvorit će uslugu u web pregledniku:

$ minikube usluga my-node Otvaranje zadane / my-node usluge kubernetes u zadanom pregledniku .. 

Možete provjeriti što se događa u vašem mahuni pomoću naredbe "logs" - kubectl logs [nameOfThePod].

$ kubectl zapisuje my-node-276881918-qth5s Primljeni zahtjev za URL: / Primljeni zahtjev za URL: / favicon.ico 

Gornji zapisnici prikazuju zahtjeve upućene poslužitelju.js aplikacija koja se izvodi na klasteru.

Čišćenje
Uslugu i mahunu možete izbrisati pomoću sljedećih naredbi:

$ kubectl delete usluga my-node usluga "my-node" izbrisana $ kubectl delete deployment my-node [/ code] implementacija "my-node" izbrisana

Možete zaustaviti minikube:

$ minikube stop Zaustavljanje lokalnog klastera Kubernetes ... Stroj zaustavljen. 

Zaključak

Kubernetes je golem sustav s velikim mogućnostima. Dokumentacija Kubernetesa najbolje je mjesto za učenje o ovoj moćnoj tehnologiji.

Daljni studiji:
Kubernetesova dokumentacija: https: // kubernetes.io / dokumenti

Kontrolirajte i upravljajte kretanjem miša između više monitora u sustavu Windows 10
Dvostruki zaslon upravitelja miša omogućuje vam kontrolu i konfiguriranje kretanja miša između više monitora, usporavajući njegovo kretanje blizu gran...
WinMouse vam omogućuje prilagodbu i poboljšanje kretanja pokazivača miša na Windows računalu
Ako želite poboljšati zadane funkcije pokazivača miša, upotrijebite besplatni program WinMouse. Dodaje više značajki koje će vam pomoći da na najbolji...
Lijevi gumb miša ne radi u sustavu Windows 10
Ako s prijenosnim računalom ili stolnim računalom koristite namjenski miš, ali lijevi gumb miša ne radi u sustavu Windows 10/8/7 iz nekog razloga evo ...