Ovaj vodič će vas voditi kroz postavljanje Kubernetes klastera ispočetka koristeći Ansible i Kubeadm te daljnju implementaciju kontejnerizirane Nginx aplikacije pomoću njega.
Uvod
Kubernetes (također poznat kao k8s ili “kube”) je platforma otvorenog koda za orkestraciju kontejnera koja automatizira mnoge ručne procese uključene u implementaciju, upravljanje i skaliranje kontejneriziranih aplikacija. Kubernetes ima brzorastuću zajednicu otvorenog koda koja aktivno doprinosi projektu. Pogledajte našu objavu na blogu koja će vas upoznati sa svime što trebate znati o osnovama Kubernetes platforme.
Kubeadm je alat koji konfigurira nekoliko integriranih elemenata, dijelova i komponenti kao što su API poslužitelj, Controller Manager i Kube DNS. Također pomaže u automatizaciji instalacije. Međutim, on ne kreira korisnike niti upravlja instalacijom ovisnosti na razini operacijskog sustava i njihovom konfiguracijom te ne može pripremiti vašu infrastrukturu.
Ansible je alat otvorenog koda za pripremu softvera i implementaciju aplikacija. Saltstack je softver otvorenog koda za automatizaciju informacijske tehnologije vođenu događajima. To su dva alata koji stvaranje dodatnih klastera ili ponovno stvaranje postojećih klastera čine manje podložnim pogreškama i mogu se koristiti za ove preliminarne zadatke.
Ciljevi:
Vaš će klaster uključivati sljedeće fizičke resurse:
1. Jedan master čvor:
Master čvor je čvor koji kontrolira i upravlja skupom radnih čvorova (vrijeme izvršavanja radnih opterećenja) i predstavlja klaster u Kubernetesu. Također sadrži plan resursa čvora kako bi odredio ispravnu akciju za pokrenuti događaj. Pokreće etcd, distribuiranu bazu podataka ključ-vrijednost otvorenog koda koja se koristi za pohranu i upravljanje podacima klastera među komponentama koje raspoređuju radna opterećenja na radne čvorove.
Na primjer, planer bi odredio koji će radni čvor ugostiti novo zakazani POD.
2. Dva radna čvora:
Radni čvorovi su čvorovi koji nastavljaju sa svojim dodijeljenim radom čak i ako master čvor prestane raditi nakon što je raspoređivanje završeno. Radni čvorovi su poslužitelji na kojima će se izvoditi vaša radna opterećenja (tj. kontejnerizirane aplikacije i usluge). Također možete povećati kapacitet klastera dodavanjem radnih čvorova.
Nakon što završite ovaj vodič, imat ćete potpuno funkcionalan klaster spreman za pokretanje radnih opterećenja (tj. kontejneriziranih aplikacija i usluga) pod pretpostavkom da poslužitelji u klasteru imaju dovoljno CPU i RAM resursa za rad vaših aplikacija. Nakon što uspješno postavite klaster, možete pokrenuti gotovo bilo koju tradicionalnu UNIX aplikaciju. Ona se može kontejnerizirati na vašem klasteru, uključujući web aplikacije, baze podataka, demone i alate naredbenog retka.
Sam klaster će trošiti oko 300-500MB memorije i 10% CPU-a na svakom čvoru.
Preduvjeti:
- Morate imati SSH par ključeva na svom lokalnom Linux računalu i znati kako koristiti SSH ključeve. Međutim, ako prije niste koristili SSH ključeve, možete pogledati ovaj vodič koji će vam pomoći da postavite SSH ključeve na svom lokalnom računalu.
- Tri poslužitelja s operacijskim sustavom Ubuntu 18.04 s najmanje 4GB RAM-a i 4 vCPU-a svaki. Trebali biste se moći spojiti putem SSH-a na svaki poslužitelj kao root korisnik sa svojim SSH parom ključeva. Slijedite ovaj vodič za instalaciju vašeg Ubuntu poslužitelja.
- Ansible instaliran na vašem lokalnom računalu.
- Također morate biti upoznati s Ansible playbookovima.
- Također ćete morati znati kako pokrenuti kontejner iz Docker slike. Pogledajte “Korak 5 — Rad s Docker slikama u Ubuntuu” u Kako instalirati i koristiti Docker na Ubuntu 18.04 ako vam je potrebno ponavljanje.
Korak 1 — Postavljanje direktorija radnog prostora i Ansible inventarne datoteke
Prvo morate postaviti Ansible na svom lokalnom računalu. To će vam pomoći u izvršavanju naredbi na vašem udaljenom poslužitelju. Također olakšava ručni napor implementacije automatizacijom. Za to ćete morati stvoriti direktorij na svom lokalnom računalu koji će služiti kao vaše privremeno digitalno područje za pohranu (radni prostor).
Nakon što stvorite direktorij, stvorit ćete hosts datoteka za pohranu svih informacija o IP adresama i grupi svakog poslužitelja. Pomoći će vam da u nju pohranite informacije o inventaru. Kao što je ranije navedeno, postojat će tri poslužitelja, jedan master i dva radnika. Master poslužitelj bit će master s IP adresom prikazanom kao master_ip. Druga dva poslužitelja bit će radnici i imat će IP adrese worker_1_ip i worker_2_ip.
Morate stvoriti direktorij pod nazivom ~/kube-cluster u početnom direktoriju vašeg lokalnog računala i ući u taj direktorij pomoću naredbe cd:
|
1 2 |
mkdir ~/kube-cluster cd ~/kube-cluster |
Direktorij ~/kube-cluster sada će služiti kao privremeno digitalno područje za pohranu (radni prostor) unutar kojeg ćete pokretati sve lokalne naredbe za stvaranje Kubernetes klastera pomoću kubeadm-a. Direktorij će sadržavati sve vaše Ansible priručnike i koristit će se u ostatku ovog vodiča.
Stvaranje datoteke Hosts
Stvorite datoteku pod nazivom ~/kube-cluster/hosts pomoću nano ili vašeg omiljenog uređivača teksta:
|
1 |
nano ~/kube-cluster/hosts |
Sada ćete morati dodati sljedeći tekst, koji će specificirati informacije o logičkoj strukturi vašeg klastera:
|
1 2 3 4 5 6 7 8 9 |
[masters] master ansible_host=master_ip ansible_user=root [workers] worker1 ansible_host=worker_1_ip ansible_user=root worker2 ansible_host=worker_2_ip ansible_user=root [all:vars] ansible_python_interpreter=/usr/bin/python3 |
Kao što je spomenuto, ta će vam datoteka inventara pomoći da pohranite sve informacije o IP adresama vaših poslužitelja i grupama kojima pojedini poslužitelj pripada. ~/kube-cluster/hosts bit će vaša datoteka inventara, a (masters i workers) bit će dvije Ansible grupe koje ste joj dodali, specificirajući logičku strukturu vašeg klastera.
Grupa Master je grupa koja specificira da bi Ansible trebao pokretati udaljene naredbe kao root korisnik. Također navodi IP adresu master čvora (master_ip) koja se može izlistati unosom poslužitelja pod nazivom “master”. Slično tome, grupa Workers ima dva unosa za radne poslužitelje (worker_1_ip i worker_2_ip) koji također specificiraju ansible_user kao root.
Zadnji redak datoteke govori Ansibleu da koristi interpretatore Python 3 na udaljenim poslužiteljima za svoje upravljačke operacije. Na kraju, trebate spremiti i zatvoriti datoteku nakon što dodate tekst. Nakon postavljanja direktorija radnog prostora i Ansible datoteke inventara, prijeđimo na sljedeći korak instaliranja ovisnosti na razini operacijskog sustava i stvaranja konfiguracijskih postavki.
Korak 2 — Stvaranje ne-root korisnika na svim udaljenim poslužiteljima
U ovom koraku naučit ćete kako stvoriti ne-root korisnika sa sudo privilegijama na svim poslužiteljima kako biste se mogli ručno prijaviti na njih putem SSH-a kao nepovlašteni korisnik.
To može biti korisno za često izvođene operacije radi očuvanja klastera. Štoviše, ovaj korak pomoći će vam da zadatak izvršite točnije i s manje pogrešaka, smanjujući šanse za nenamjerno mijenjanje ili brisanje važnih datoteka. Ako želite promijeniti postavke datoteka u vlasništvu roota ili vidjeti informacije o sustavu pomoću naredbi kao što su top/htop i pregledati popis pokrenutih spremnika, sljedeći korak pomoći će vam u izvršavanju svih zadataka.
Stvaranje priručnika (Playbooka)
Stvorite datoteku pod nazivom ~/kube-cluster/initial.yml u radnom prostoru:
|
1 |
nano ~/kube-cluster/initial.yml |
Zatim trebate dodati sljedeću igru (play). Igra u Ansibleu je zbirka koraka koje treba izvršiti, a koji ciljaju određene poslužitelje i grupe. U priručniku može biti jedna ili više igara.
Sljedeća igra stvorit će ne-root sudo korisnika:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
- hosts: all become: yes tasks: - name: kreiraj the 'ubuntu' korisnika user: name=ubuntu append=yes state=present createhome=yes shell=/bin/bash - name: omogući 'ubuntu' da ima sudo bez lozinkesudo lineinfile: dest: /etc/sudoers line: 'ubuntu ALL=(ALL) NOPASSWD: ALL' validate: 'visudo -cf %s' - name: postavi up autorizirane ključeve za the ubuntu korisnika authorized_key: user=ubuntu key="{{item}}" with_file: - ~/.ssh/id_rsa.pub |
U nastavku je pregled onoga što naš playbook radi:
- Ovaj playbook će kreirati ne-root korisnika
ubuntu. - Budući da trebate pokretati
sudonaredbe bez unosa lozinke, ovaj play će konfiguriratisudoersdatoteku kako bi se omogućilo korisnikuubuntuda to učini. - Glavna svrha gornjeg zadatka bila je omogućiti vam SSH pristup svakom poslužitelju kao
ubuntukorisnik. Ovaj playbook dodaje javni ključ vašeg lokalnog računala (obično~/.ssh/id_rsa.pub) u popis autoriziranih ključeva udaljenogubuntukorisnika.
Sada, nakon dodavanja teksta, trebate spremiti i zatvoriti datoteku.
Pokretanje playbooka
Nakon toga moramo izvršiti naš playbook koji će kreirati ne-root korisnika ubuntu jednostavnim pokretanjem na lokalnim računalima:
|
1 |
ansible-playbook -i hosts ~/kube-cluster/initial.yml |
Izvršavanje ove naredbe će potrajati neko vrijeme, nakon čega ćete vidjeti sljedeći izlaz:

Nakon što je ovaj korak dovršen, možete prijeći na instalaciju ovisnosti specifičnih za Kubernetes u sljedećem koraku.
Korak 3 — Instalacija ovisnosti za Kubernetes
U ovom koraku naučit ćete kako instalirati pakete na razini operacijskog sustava koje zahtijeva Kubernetes pomoću Ubuntuovog upravitelja paketima.
Ovi paketi su:
- Docker: Docker je platforma i alat za izgradnju, distribuciju i pokretanje Docker spremnika. Docker možete jednostavno postaviti prateći naš vodič o kako instalirati & upravljati Dockerom na Ubuntuu u javnom oblaku. Međutim, podrška za druga okruženja izvršavanja kao što je rkt je u aktivnom razvoju u Kubernetesu.
Kubeadm: kubeadm je CLI alat koji izvodi radnje potrebne za pokretanje minimalno održivog klastera. To će vam pomoći da instalirate i izgradite različite komponente klastera na standardan način.kubelet: kubelet je primarni “agent čvora” koji se izvodi na svakom čvoru i upravlja operacijama na razini čvora.kubectl: kubectl je također CLI alat koji komunicira s vašim klasterom i izdaje naredbe putem njegovog API poslužitelja.
Kreiranje playbooka
Kreirajte datoteku pod nazivom ~/kube-cluster/kube-dependencies.yml u radnom prostoru:
|
1 |
nano ~/kube-cluster/kube-dependencies.yml |
Sada trebate dodati sljedeće playeve u datoteku kako biste instalirali ove pakete na svoje poslužitelje:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
- hosts: all become: yes tasks: - name: instaliraj Docker apt: name: docker.io state: present update_cache: true - name: instaliraj APT Transport HTTPS apt: name: apt-transport-https state: present - name: dodaj Kubernetes apt-ključ apt_key: url: https://packages.cloud.google.com/apt/doc/apt-key.gpg validate_certs: false state: present - name: dodaj Kubernetesov APT repozitorij apt_repository: repo: deb http://apt.kubernetes.io/ kubernetes-xenial main state: present filename: 'kubernetes' - name: instaliraj kubelet apt: name: kubelet=1.16.0-00 state: present update_cache: true - name: instaliraj kubeadm apt: name: kubeadm=1.16.0-00 state: present - hosts: master become: yes tasks: - name: instaliraj kubectl apt: name: kubectl=1.16.0-00 state: present force: yes |
Prvi play u playbooku radi sljedeće:
- Ovaj play pomoći će vam da instalirate pakete na razini operacijskog sustava, Docker – runtime za kontejnere.
- Instalira
apt-transport-https, što vam omogućuje dodavanje vanjskih HTTPS izvora na vaš popis APT izvora. - Dodaje apt-ključ Kubernetesovog APT repozitorija za provjeru ključeva.
- Dodaje Kubernetesov APT repozitorij na popis APT izvora vaših udaljenih poslužitelja.
- Instalira
kubeletikubeadm.
Drugi play izvodi važan i samostalan zadatak koji uključuje instalaciju kubectl na vašem master čvoru. Sada, nakon dodavanja teksta, trebate spremiti i zatvoriti datoteku.
Pokretanje playbooka
Nakon toga moramo izvršiti naš playbook jednostavnim pokretanjem na lokalnim računalima:
|
1 |
ansible-playbook -i hosts ~/kube-cluster/kube-dependencies.yml |
Izvršavanje ove naredbe potrajat će neko vrijeme, nakon čega ćete vidjeti sljedeći izlaz:

Nakon izvršavanja, Docker, kubeadm i kubelet bit će instalirani na svim udaljenim poslužiteljima. Kubectl nije obavezna komponenta i potreban je samo za izvršavanje naredbi klastera. Instaliranje samo na master čvoru ima smisla u ovom kontekstu jer ćete pokretati kubectl naredbe samo s mastera. Imajte na umu, međutim, da kubectl naredbe se mogu pokretati s bilo kojeg od radnih čvorova ili s bilo kojeg stroja na kojem se mogu instalirati i konfigurirati da pokazuju na klaster.
Sve ovisnosti sustava sada su instalirane. Postavimo glavni čvor i inicijalizirajmo klaster.
Korak 4 — Postavljanje glavnog čvora
U ovom koraku naučit ćete nekoliko koncepata kao što su Podovi i Dodaci za mrežu podova budući da će vaš klaster uključivati oboje nakon što postavite svoj glavni čvor.
Podovi su najmanji, najosnovniji objekti koje je moguće implementirati u Kubernetesu. Podovi sadrže jedan ili više spremnika, kao što su Docker spremnici. Kada Pod pokreće više spremnika, spremnicima se upravlja kao jedinstvenom cjelinom i oni dijele resurse Pod’a.
Svaki pod ima svoju IP adresu, a pod na jednom čvoru trebao bi moći pristupiti podu na drugom čvoru koristeći IP adresu tog pod’a. Međutim, komunikacija između podova je složenija. Potrebna joj je zasebna komponenta koja može transparentno usmjeravati promet s poda na jednom čvoru do poda na drugom. Dodaci za mrežu podova koriste se za ovu funkcionalnost. Dostupni su mnogi dodaci za mrežu podova, ali mi ćemo koristiti Flannel jer je to stabilna i učinkovita opcija.
Stvaranje Playbooka
Stvorite Ansible playbook pod nazivom master.yml na svom lokalnom računalu:
|
1 |
nano ~/kube-cluster/master.yml |
Nadalje, trebate dodati sljedeći play u datoteku kako biste inicijalizirali klaster i instalirali Flannel:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
- hosts: master become: yes tasks: - name: inicijaliziraj the klaster shell: kubeadm init --pod-network-cidr=10.244.0.0/16 >> cluster_initialized.txt args: chdir: $HOME creates: cluster_initialized.txt become: yes become_user: root - name: stvori .kube direktorij become: yes become_user: ubuntu file: path: $HOME/.kube state: directory mode: 0755 - name: kopiraj admin.conf u korisničku's kube konfiguraciju copy: src: /etc/kubernetes/admin.conf dest: /home/ubuntu/.kube/config remote_src: yes owner: ubuntu - name: instaliraj mrežu podova become: yes become_user: ubuntu shell: kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml >> pod_network_setup.txt args: chdir: $HOME creates: pod_network_setup.txt |
Evo raščlambe ovog play-a:
- Prvi zadatak u ovom play-u postavit će klaster pokretanjem
kubeadm init. Za specificiranje privatne podmreže koja će biti dodijeljena IP adresama podova, prosljeđujemo argument--pod-network-cidr=10.244.0.0/16. Flannel prema zadanim postavkama koristi gore navedenu podmrežu. Ovo koristimo kako bismo reklikubeadmda koristi istu podmrežu. - Drugi zadatak koristi se za stvaranje
.kubedirektorija na/home/ubuntuKonfiguracijske informacije kao što su datoteke administratorskih ključeva, koje su potrebne za povezivanje s klasterom i API adresa klastera, bit će pohranjene u ovom direktoriju. - Treći zadatak koristi se za kopiranje
/etc/kubernetes/admin.confdatoteke koja je generirana izkubeadm initu početni direktorij vašeg ne-root korisnika. To će vam omogućiti korištenjekubectlza pristup novostvorenom klasteru. - Zadnji zadatak pokreće
kubectl applyza instalacijuFlannel.kubectl apply -f descriptor.[yml|json]je sintaksa kojom se govorikubectlda stvori objekte opisane udescriptor.[yml|json]datoteci. Datotekakube-flannel.ymlsadrži opise objekata potrebnih za postavljanjeFlannelu klasteru.
Sada, nakon dodavanja teksta, trebate spremiti i zatvoriti datoteku.
Pokretanje Playbooka
Nakon toga trebate izvršiti naš playbook jednostavnim pokretanjem na lokalnim računalima:
|
1 |
ansible-playbook -i hosts ~/kube-cluster/master.yml |
Izvršavanje ove naredbe potrajat će neko vrijeme, nakon čega ćete vidjeti sljedeći izlaz:

Sada se povežite putem SSH-a pomoću sljedeće naredbe kako biste provjerili status master čvora:
|
1 |
ssh ubuntu@master_ip |
Nakon što uđete u master čvor, izvršite:
|
1 |
kubectl get nodes |
Sada ćete vidjeti sljedeći izlaz:

Nakon što dobijete gornji izlaz, možete proglasiti da je master čvor izvršio sve zadatke postavljanja i da može početi prihvaćati radne čvorove i izvršavati zadatke čim uđe u stanje Ready. Sada možete dodati radnike sa svog lokalnog računala.
Korak 5 — Postavljanje radnih čvorova
Nakon postavljanja master čvora, sada možemo prijeći na sljedeći korak postavljanja radnih čvorova. Dodavanje radnih čvorova u klaster može se jednostavno izvršiti pokretanjem jedne naredbe na svakom radnom poslužitelju. Važne informacije kao što su IP adresa, port masterovog API poslužitelja i sigurnosni token uključeni su u ovu naredbu. Ipak, imajte na umu da se svi čvorovi neće moći pridružiti klasteru, već samo oni čvorovi koji proslijede sigurnosni token.
Stvaranje playbooka
Ova naredba pomoći će vam da se vratite u svoj radni prostor i stvorite playbook pod nazivom workers.yml:
|
1 |
nano ~/kube-cluster/workers.yml |
Dodajte sljedeći tekst u datoteku kako biste dodali radnike u klaster:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
- hosts: master become: yes gather_facts: false tasks: - name: get join command shell: kubeadm token create --print-join-command register: join_command_raw - name: set join command set_fact: join_command: "{{ join_command_raw.stdout_lines[0] }}" - hosts: workers become: yes tasks: - name: join cluster shell: "{{ hostvars['master'].join_command }} >> node_joined.txt" args: chdir: $HOME creates: node_joined.txt |
Evo što playbook radi. U gornjem kodu nalaze se dva playa:
- Prvi play koristi se za dohvaćanje naredbe za pridruživanje koju je potrebno pokrenuti na radnim čvorovima. Format naredbe bit će:
kubeadm join --token sha256:<hash><token><master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>;. Zadatak mora dohvatiti ispravne vrijednosti tokena i hasha. Nakon što dobije ispravan unos, zadatak ga postavlja kao činjenicu (fact) kako bi drugi play mogao pristupiti tim informacijama. - Drugi play napisan je samo za obavljanje jednog zadatka – kako bi se dva radna čvora pridružila klasteru jednostavnim pokretanjem naredbe za pridruživanje na svim radnim čvorovima.
Nakon dodavanja teksta, trebate spremiti i zatvoriti datoteku.
Pokretanje playbooka
Nakon toga moramo izvršiti naš playbook pokretanjem sljedeće naredbe na radnim strojevima:
|
1 |
ansible-playbook -i hosts ~/kube-cluster/workers.yml |
Izvršavanje ove naredbe potrajat će neko vrijeme, nakon čega ćete vidjeti sljedeći izlaz:

Sada je vaš Kubernetes klaster u potpunosti postavljen i funkcionalan, a radni čvorovi spremni su za pokretanje radnih opterećenja. Prije nego što prijeđemo na sljedeći korak, provjerimo radi li klaster kako je planirano.
Korak 6 — Provjera klastera
Moguće je da klaster ne uspije tijekom postavljanja. To može biti zbog mrežne pogreške između glavnog i radnog čvora ili problema s čvorom. Stoga moramo provjeriti klaster prije zakazivanja aplikacija i osigurati da ne dođe do kvara. Za to ćete morati provjeriti trenutno stanje klastera s glavnog čvora kako biste se uvjerili da su čvorovi spremni. Možete ponovno uspostaviti vezu sljedećom naredbom ako čvorovi nisu spremni ili ako se veza prekine:
|
1 |
ssh ubuntu@master_ip |
Koristite sljedeće naredbe za dohvaćanje statusa klastera:
|
1 |
kubectl get nodes |
Izvršavanje ove naredbe potrajat će neko vrijeme, nakon čega ćete vidjeti sljedeći izlaz:

Trebate provjeriti jesu li svi čvorovi koji su dio klastera u stanju spremnosti. Ako nekoliko čvorova ima Not Ready kao STATUS, to pokazuje da radni čvorovi još nisu završili svoje postavljanje. Međutim, prije ponovnog pokretanja kubectl get nodes i provjere ažuriranog izlaza trebali biste pričekati još pet do deset minuta. Ako neki od čvorova i dalje prikazuju Not Ready kao svoj status, trebali biste otići i provjeriti prethodne korake te ponovno pokrenuti naredbe. Samo ako čvorovi imaju vrijednost Ready za STATUS, oni su dio klastera i spremni za pokretanje radnih opterećenja. Nakon uspješnog izvršavanja 6. koraka, vaš je klaster sada verificiran. Sada zakazimo primjer Nginx aplikacije na klasteru.
Korak 7 — Pokretanje aplikacije na klasteru
Stvaranje deploymenta
Nakon uspješnog stvaranja klastera, možete implementirati bilo koju kontejneriziranu aplikaciju na svoj klaster. Možete koristiti sljedeće naredbe u nastavku za druge kontejnerizirane aplikacije ako se nalazite unutar glavnog čvora. Zatim izvršite sljedeću naredbu za stvaranje deploymenta pod nazivom nginx :
|
1 |
kubectl create deployment nginx --image=nginx |
Trebate promijeniti naziv Docker slike i sve relevantne zastavice (kao što su portovi i volumeni). Kako bi stvari ostale poznate, možete implementirati Nginx pomoću deploymenta i servisa kako biste vidjeli kako se aplikacije mogu implementirati na klaster.
Jedan Kubernetes deployment je resursni objekt u Kubernetesu koji pruža deklarativna ažuriranja za aplikacije. Deployment vam omogućuje da opišete životni ciklus aplikacije, kao što su slika spremnika (container image), replike i strategija ažuriranja. Deployment osigurava da željeni broj podova radi i da su dostupni u svakom trenutku. Ako se pod sruši tijekom životnog vijeka klastera, ponovno ga pokreće. Proces ažuriranja također se u potpunosti bilježi i verzira s opcijama za pauziranje, nastavak i vraćanje na prethodne verzije. Gore navedena naredba za stvaranje deploymenta pod nazivom Nginx pomoći će vam da implementirate pod s jednim spremnikom iz Nginx Docker slike iz Docker registra.
Postavljanje Node Porta
Zatim moramo stvoriti NodePort. NodePort je otvoreni port na svakom čvoru vašeg klastera. Kubernetes transparentno usmjerava dolazni promet na NodePort prema vašoj usluzi, čak i ako vaša aplikacija radi na drugom čvoru. Za to možemo koristiti ovu naredbu za stvaranje NodePort resursa pod nazivom Nginx koji će javno izložiti aplikaciju:
|
1 |
kubectl expose deploy nginx --port 80 --target-port 80 --type NodePort |
Usluga (service) je još jedan Kubernetes objekt odgovoran za izlaganje sučelja tim podovima, što omogućuje mrežni pristup unutar klastera ili između vanjskih procesa i usluge. Može se definirati kao apstrakcija na vrhu poda koja pruža jedinstvenu IP adresu i DNS naziv putem kojih se može pristupiti podovima. Uz uslugu je vrlo jednostavno upravljati konfiguracijom raspodjele opterećenja (load balancing).
Pokrenite sljedeću naredbu:
|
1 |
kubectl get services |
Ovo će ispisati tekst sličan sljedećem:

Nakon dobivanja ispisa, Kubernetes će automatski dodijeliti nasumični port koji je veći od 30000 , istovremeno osiguravajući da dodijeljeni port već nije zauzet drugom uslugom. Treći redak gornjeg ispisa pomoći će vam da saznate port na kojem Nginx radi.
Da biste provjerili radi li, posjetite http://worker_1_ip:nginx_port ili http://worker_2_ip:nginx_port putem preglednika na vašem lokalnom računalu. Vidjet ćete Nginxovu prepoznatljivu stranicu dobrodošlice.
Uklanjanje deploymenta
Ako želite ukloniti aplikaciju Nginx, najprije morate izbrisati nginx uslugu s master čvora:
|
1 |
kubectl delete service nginx |
Kako biste provjerili je li aplikacija konačno izbrisana, trebate pokrenuti ovu naredbu:
|
1 |
kubectl get services |
Dobit ćete sljedeći ispis:

Nakon toga trebate izbrisati deployment pomoću sljedeće naredbe:
|
1 |
kubectl delete deployment nginx |
Možete koristiti ovu naredbu kako biste provjerili je li deployment konačno izbrisan:
|
1 |
kubectl get deployments |
![]()
Zaključak:
Ovaj vodič pomoći će vam da ispravno postavite klaster na Ubuntu 18.04 koristeći Kubeadm i Ansible. Sada kada je vaš klaster postavljen, možete jednostavno početi implementirati vlastite aplikacije i usluge.
Evo popisa poveznica s dodatnim detaljima koji će vas voditi kroz proces:
- Dockerizacija aplikacija – Ova poveznica sadrži primjere koji vas vode kroz učitavanje aplikacija pomoću Dockera. Kao što su dockerizacija PostgreSQL-a, CouchDB usluge itd.
- Pregled podova – Ova poveznica prikazuje detalje o tome kako koristiti pod, funkcioniranje podova i kako su podovi povezani s drugim Kubernetes objektima. Podovi su važan dio Kubernetesa, pa će vam njihovo razumijevanje pomoći da uspijete u svom zadatku.
- Pregled deploymenta – Pomoći će vam da naučite o deploymentima. Deployment pruža deklarativna ažuriranja za podove (Pods) i ReplicaSetove. Naučit ćete kako ažurirati, prebaciti i vratiti deployment na prethodnu verziju.
- Pregled usluga - Ova poveznica će vas voditi kroz usluge (services) koje su još jedan često korišteni objekt u Kubernetes klasterima. Usluga u Kubernetesu je apstrakcija koja definira logički skup podova i pravilo prema kojem im možete pristupiti. Razumijevanje vrsta usluga i opcija koje nude ključno je za pokretanje aplikacija bez stanja (stateless) i s očuvanjem stanja (stateful).
Nadalje, pogledajte naše ostale vodiče usmjerene na Docker i Kubernetes koje možete pronaći na našem blogu:
- Upoznavanje s Kubernetesom
- Čišćenje Docker resursa – slike, spremnici i volumeni
- Kako pokrenuti Docker na CloudSigma (s CloudInit) Ažurirano
- Instalacija i postavljanje Dockera na CentOS 7
- Kako instalirati & upravljati Dockerom na Ubuntuu u javnom oblaku
Također postoje mnogi drugi važni koncepti kao što su Volumeni, Ingressi, i Tajne koje možete koristiti prilikom postavljanja produkcijskih aplikacija.
Sretno računanje!
Komentari
Još nema komentara. Budite prvi.