Preduvjeti
Prvo što bi vam trebao bit će pristup Kubernetesovom klasteru. Možete ga stvoriti pomoću Minikubea ili koristiti Docker za Windows ili Docker za Mac, a oba se sada isporučuju s jednim čvorom Kubernetesove distribucije koju možete omogućiti u Dockerovim postavkama.
Morali biste imati i neko apriorno znanje o Kubernetesu. Ovdje je stvarno dobro polazište.
Stvaranje mahuna
Tipično stvaramo mahune pomoću yaml datoteke koja određuje koju sliku spremnika koristiti, koje portove izložiti itd. Evo jednostavne datoteke za stvaranje nginx mahune.
apiVersion: v1vrsta: Pod
metapodaci:
naziv: nginx-1
označiti:
aplikacija: web poslužitelj
specifikacija:
spremnici:
- naziv: nginx
slika: nginx: 1.7.9
luke:
- containerPort: 80
Spremite ga pod imenom nginx-pod.yaml u direktoriju, a zatim iz istog direktorija pokrenite naredbu:
$ kubectl stvori -f ./ nginx-pod.yaml## Potvrdite da je mahuna kreirana izvođenjem:
$ kubectl dobiti mahune
Primijetit ćete da je jedna mahuna nazvana "Nginx-1" je pokrenut i pokrenut. Ali ne možete skalirati ovu jednu mahunu. Trčanje kubectl stvoriti opet će vam dati pogrešku od naziva nginx-1 ne može se ponovno upotrijebiti.
Kubernetes je dao mogućnost stvaranja mahuna višim apstrakcijama poput Raspoređivanja i ReplicaSets. Koji stvaraju mahune iz datog predloška mahune, navodeći koje slike koristiti, koje portove izlagati u svakom od novih mahuna, itd., Ali ništa previše specifično o jednom grahu. ReplicaSet (i implementacije, također) kreću u stvaranje novih mahuna, dajući svakom novom mahuni jedinstveno ime, kao i nejedinstvenu naljepnicu koja pomaže ReplicaSetu da prati mahune stvorene iz zadanog predloška.
ReplicaSet osigurava da u bilo kojem trenutku određeni broj mahuna određene naljepnice uvijek radi i radi. Ako se, na primjer, čvor sruši, posao je ReplicaSet-a stvoriti više mahuna na drugim čvorovima kako bi nadoknadio gubitak. Da bismo napisali replicaset yaml datoteku, slijedili bismo obrazac sličan pisanju mahune. Imat će api verziju (apps / v1), tip (ReplicaSet) i ime u metapodacima. Na samom replikasetu mogu biti naljepnice, ali zasad ćemo pojednostaviti i dati mu jedinstveno ime moj-replikaset.
Tada trebamo premjestiti iz metapodaci odjeljak na meso materije spec. Ovdje pružamo broj replikacija koji želimo u odjeljku replike. Tada ovom ReplicaSetu dajemo a selektor koji bi se koristio za podudaranje s etiketom, recimo, app na vrijednost, recimo, web poslužitelj, među trenutno pokrenutim mahunama. Ako je tih mahuna manje, stvorit će mahune prema zadanom predlošku i dodati istu oznaku tim novim mahunama. Ako ima više mahuna nego što je potrebno, tada ih se briše.
Najčešći korak je određivanje predloška koji će služiti kao osnova za stvaranje novih mahuna. Ovaj predložak neće imati ime, jer će replicaset stvoriti novo ime za svaki novi stvoreni mahuna. Međutim, na oznaci će biti naljepnice i primijetit ćete da je na istoj naljepnici app = web poslužitelj koji je predložak odabran putem selektor parametar u specifikaciji replikata.
apiVersion: apps / v1vrsta: ReplicaSet
metapodaci:
ime: moj-replikaset
specifikacija:
replike: 3
selektor:
matchLabels:
aplikacija: web poslužitelj
predložak:
metapodaci:
oznake:
aplikacija: web poslužitelj
specifikacija:
spremnici:
- naziv: nginx
slika: nginx: 1.7.9
luke:
- containerPort: 80
Spremite ovu datoteku kao nginx-replicaset.yaml i stvorite replikaset pomoću naredbe:
$ kubectl create -f nginx-replicaset.yamlBudući da smo prethodno stvorili mahunu s istom oznakom app = web poslužitelj, replikaset bi samo stvorio još dvije mahune. Pomoću naredbe možete navesti sve mahune:
$ kubectl dobiti mahuneIME SPREMNI STATUS VRAĆA DOBU
my-replicaset-nmvt9 1/1 Trčanje 0 9s
my-replicaset-xf9mx 1/1 Trčanje 0 9s
nginx-1 1/1 Trčanje 0 28s
Svaka mahuna imat će svoje jedinstveno ime. Kao i prva mahuna koju smo stvorili imala je ime nginx-1. Možete pokušati izbrisati ovaj pomoću naredbe:
$ kubectl izbriši pod nginx-1$ kubectl dobiti mahune
IME SPREMNI STATUS VRAĆA DOBU
my-replicaset-nmvt9 1/1 Trčanje 0 1m
my-replicaset-pkn4q 1/1 Trčanje 0 22s
my-replicaset-xf9mx 1/1 Trčanje 0 1m
Primijetit ćete da je gotovo trenutno kontroler ReplicaSet stvorio novu mahunu koja zamjenjuje onu koju smo izbrisali. Na taj način osiguravajući da se broj izvodi mahuna s naljepnicom app = web poslužitelj je uvijek 3, kako je navedeno u našem manifestu replicaseta, gore.
Dobivate veliku kontrolu zahvaljujući naljepnicama i selektorima. Dijelove možete dalje širiti na više čvorova pomoću nodeSelectors, koji se koriste za dodjelu određenog broja mahuna na određenim čvorovima.
Ono što replikaseti ne dopuštaju su ažuriranja. Ako je novija verzija vaše aplikacije, recimo, nginx: 1.8 dođe, morat ćete izbrisati ovaj replikaset i stvoriti novi s tom slikom spomenutom u yaml manifestu replikaseta. Tu dobro dolazi koncept implementacije. Uključuje ideju replikacija i proširuje pružanjem dodatne podrške za ažuriranje vaših aplikacija. Sad kad vam se sviđaju replike, možda bi bilo dobro pogledati Kubernetesove implementacije.
Reference
- Stvaranje mahuna
- Izrada ReplicaSetova