Kubernetes iskustva?

Da li ste imali prilike, dodira… sa kubernetesom (u bilo kom obliku)? :slight_smile:

Ukoliko jeste, ako hocete podelite neke stvari, trikove, .yaml-ove koje smatrate zanimljivim itd itd

Ja u principu radim zadnjih godinu dana svaki dan sa njim pa ako Vas interesuje nesto posebno slobodno pitajte.

Мало сам се играо са minikube али услед недостатка времена сам одустао. Надам се да ћу наредне године имати времена да се озбиљно посветим материји.

Одакле је најбоље почети учење? Званична документација је одлична али имам утисак да није није најбоље да се крене од ње. Са доста нових идеја и термина сам се сустрео током учења, није нимало једноставан алат. То ми је био први утисак.

1 Like

Minikube je odlican za ucenje i za gotovo vecinu stvari sa kojem ces se susretati u radu sa njim, tako da slobodno mozes njega koristiti za ucenje i experimentisanje, i pored fizickih klastera na kojima mogu da se igram i dalje povremeno podignem minikube u lokalu cisto da isprobam neke stvari za koje nisam 100% siguran kako rade.

Dokumentacije ne manjka to je sigurno. Na prvu loptu ja sam imao utisak da je kubernetes vise kompleksan nego komplikovan sistem i nakon skoro godinu dana aktivnog rada u njemu sasvim sam siguran i dalje da je samo kompleksan a da je tezak, ni malo, samo mu treba uci ispod haube i dovoljno raditi sa njim i postace ti svakodnevnica.

Imas jako mnogo pravaca u radu sa K8s jer upravo on moze da se customizuje na bukvalno milion nacina. Za pocetak slobodno koju god e-knjigu uzmes a da ima veze sa K8s neces pogresiti sasvim sigurno, recimo Kubernetes in action je dobra, ne ide previse u dubinu mogucnosti a nudi lep prikaz sta se moze postici sve sa mikroservisima.

Za pocetak ti preporucujem da ne ucis toliko o ingress/egress kontrolerima i uopste o networkingu vec da krenes bas sa osnovama, sta je pod, sta je nod, sidecar, multicontainer on pod, horisontal pod autoscaling, kako se radi skaliranje, kako se radi setovanje limita za podove/nodove, koje sve vrste deploymenta postoje i koje su njihove razlike… i jos sto sta sto ces naleteti prilikom citanja i ucenja.

Kasnije kada ovladas osnovnim terminima i nekim basic stvarima mozes preci na helm, chart, yaml, pisanje manifesta i tweakovanje istih, i onda polako da se prebacujes na Istio system, kompletna mesh konfiguracija mreznog dela itd itd

Nemoj da te uplasi kolicina svega, jer k8s je bukvalno ceo ekosistem koji omogucava sve sto ti padne na pamet… pa cak i vise od toga :slight_smile: a najbolje od svega je sto se maltene svakog dana unapredjuje i community je dosta jak i uvek imas nesto novo da procitas. Mislim da mi ne prodje dan da ne saznam nesto novo/drugacije/bolje u svetu K8s.

3 Likes

Do sada mi je kombincaija docker/portainer bila dovoljna za kućne potrebe.
Probao sam i preporučujem k3s. Osakaćena verzija k8s-a, a moguće je napraviti i HA cluster sa etcd-om, za razliku od minikuba/minishifta.
Master node-ovi, u slučaju da nemaš dovoljno resursa, mogu da budu i worker node-ovi(u stvari po defaultu je tako).
Sve postaje kompleksnije i ako se nešto pokvari mislim da će sve teže biti vratiti ga u ispravno stanje.

Nisam koristio sigurno godinu dana portainer, ali znam da recimo ako si imao custom compose ili slicno da nije mogao da se implementira ne znam da li su u medjuvremenu sredili to?

Da, k3s je odlican za experimentisanje, medjutim sto ti kazes ako ides na kompleksniju pricu sa HA i varijacijama, logicno da ce biti problema narocito ako ti master node “glumi” workera :slight_smile:

BTW jel si se igrao mozda sa k3s ali na fizikcom RPI u nekoj klaster varijantici? :slight_smile:

@Commander - samo VM-ove sam koristio, ali ne bi trebalo da ima razlike

Ajde i ja da malo podelim svoja iskustva obzirom da koristim k8s nesto vise 2 i po godine u produkciji. Nije mi primarno odrzavanje k8s-a vec podizanja aplikacija na njemu, ali ako treba neka pomoc mogu pomoci :slight_smile:
Do sada sam koristio managed ACK (Azure k8s), EKS (Amazonov k8s), GKE (Googlov k8s) i DOMK (DigitalOcean k8s) kao i Kubespray za on-prem.
Sve mu dodje to na isto, imas dokumentacije koliko god pozelis kao i podrsku, samo je pitanje kome se vise veruje, cena i koliko zelis da ulazes vremena u debugovanju problema.
Obzirom da ponajvise radim na EKS-u, mogu vam reci da fenomenalno radi, nisam imao bukvlano ni jedan jedini problem sa njim dok sa AKS sam imao sa pvc-ovima, ali verujem da su to do sada sredili obzirom da je to bilo pre vise od godinu i po dana.

Ono sto bih svakom prvo predlozio jeste predznanje Networkinga (kao i DNS), Linux-a i Docker-a. Bez toga mislim ce se covek tesko snaci… mada mozda nisam upravu :slight_smile:

@Lazar Da sam na pocetku, ja bih uzeo neki online video kurs. Ne znam da li smem da postavljam te linkove ali bukvalno kucas na google “learn k8s online course” i izacice ti odmah.

Inace imam kuci podignu k8s cluster na 3x Raspberry PI 4b, instaliran je KubeSpray. Tu sam sam shvatio koliko aplikacija ne podrzava arm64 arhitekturu.

Ako ima neko neko pitanje, tu sam :slight_smile:

Za one koji su vec zasli u tu materiju predlozio bih im da izguglaju sledece stvari:

  • Grafana/Loki, Prometheus i NodeExporter za monitoring
  • Istio Service Mesh, Kiali i Jaeger za enkrpciju i pracenje saobracanja
3 Likes

Wow super sto si se javio :slight_smile:

Imam par pitanja, nikako da se upustim u pravljenje svog klastera, koliko te je izasao para ovaj setup i gde moze da se pazari ovaj mini rack :slight_smile: imacu nekog lufta pa bih da se igram.

Inace vrv i sam znas ali za one koji se mozda upustaju u pricu oko K8s i njegovih servisa, Kiali moze da se uveze sa Grafanom i Jaeger-om i da iz njega cupas sve rezultate koji te interesuju :slight_smile: Pre neki dan sam podesavao u firmi to na dev klasteru (EKS).

Slazem se za ove preporuke koje si ostavio, to je maltene postao standard, ja bih tu dodao jos recimo Sumologic ili GrayLog kao log collector, takodje su tu prisutni FluentBit i FluentD koji trce po nodovima i podovima i skupljaju logove. Ukoliko idete sa Prometheus stack-om ili sa Sumologic stack-om oni u principu urade ootb podesavanje Fluent-a tako da nema dodatnog cimanja sa exporterima, posle kroz custom-value.yaml sledi fino podesavanje u zavisnosti od potrebe devops-a.

Takodje najvise iskustva imam upravo sa Istiom ali vredi pomenuti jos dva jako ozbiljna igraca na polju service mesh-a to su Traefik i NGINX.

Cena ovog setup-a je kostao oko 370$, a tu je ukljuceno:

  • 3x Raspberry Pi 4B
  • 3x USB 3.0 SD Memory card reader (sluzi mi kao externi/mountovani storage)
  • 3x U3 Micro SD kartice po 128GB
  • Kuciste, tj ovaj skelet
  • DHL dostava (ona je 20$)

Kupio sam na ebay-u prosle godine, ako trebaju linkovi do tih prozivoda mogu ih okaciti ovde ili ti ih poslati u DM :slight_smile:

FluentD, Traefik i NGINX su takodje ozbiljna stvar i svakako ih treba pomenuti, nego nije moguce bas u 2-3 posta staviti sve :smile:
Meni je ovo dosta pomoglo obzirom da sam ga obarao bukvalno preko 100x i naucio sam sta smem da radim na produkcionom cluster-u a sta ne :smiley:

Sto se tice dizanja k8s cluster-a od pocetka onda tu preporucujem kao easily way Kubespray a za hard way kubeadm. Instalacija Kubespray-om je zasnivana na Ansible-u, a onaj ko je upucen u ansible zna da to znaci da je ta instalacija jednostavna tj sve je automatizovano.
Ako neko zeli da nauci kako k8s funckionise i da zadje u samu srz, onda je tu kubeadm :raised_hands:

Mislim da kad razradimo ovu temu, sledeca je OpenShift :dizzy_face: :gun:

2 Likes

Hvala za informacije, uzimao bih u Srbiji tako da cu naci alternative ovde.

EDIT: uf da li je moguce da je u srbiji tacno duplo skuplji ovaj model nego kod nas? Sranje

Samo info sa tehnicke strane, osim slabe podrske na arm64 polju, da li si u realnom radu primetio nesto drasticno losije/problematicno, tipa da ti isti konfig prolazi na nekom cloud resenju a ovde “on-prem” pravi problem?

Inace ako si vec radio sa EKS-om onda je ovo za tebe :wink:

1 Like

O da, to nista nije novo, zbog toga sam se i opredelio da kupim na ebay-u. kad sam u mikroprinc-u hteo da kupim senzor, zaprepastio sam se da je bio oko 4x skuplji.

Ni na cloud-u ni on-prem nisam dizao k8s na arm procesorima pa nisam bas dobra osoba za diskusiju o tome… Jedino ovaj moj cluster je arm, ali na njemu nisam dizao nista nalik onome sto dizem na poslu osim baza i ponekih custom servisa.

Ono sto mogu da navedem kao prednost baza i custome service/api-a (python i golang) na arm procesoru jeste brzina :grin: A po statistici arm procesori bi oni trebali da trose mnogo manje struje.

Ovaj Aws eks anywhere je 100% super, samo sto nasi klijenti to ne zele/ne smeju da koriste pa nemam gde da isprobam, a imam veliku zelju :grin::hugs:
Jel si ti negde koristio? Imas li neka iskustva u tome?

Ma nisam, svrbi me da ga probam ali nemam fizickih uslova a sada zadnjih mesec dana uletelo vise posla od planiranog pa nikako da se posvetim tome.

Pa da ARM je i AWS uveo neke instance koje trce na njemu, navodno trose bas malo struje, ali kako to u realnom radu izgleda nisam imao prilike ni potrebe da vidim do sada.

E, imaju i kod Orakla neki free tier Arm-ovi, da možeš da se zanimaš dok ti ne stignu RPi-jevi. Nisam mogao da odolim tome što su džabe, pa sam ih i sam uzeo prije neki dan :smiley: Baš im dosta paketa fali, nisu ni postfix imali u ponudi, to je ono što prvo zapada za oči

4 x Arm-based Ampere A1 cores and 24 GB of memory usable as one VM or up to 4 VMs

Ајд кад сте већ отворили тему, једно кратко и потенцијално глупо питање.

Прчкам основне ствари са minikube-ом. Оно што ме занима је: која је поента прављења подова? Тачније, кад већ постоји deployment који описује саме подове које треба да садржи, са бројем реплика, updateStrategy итд… Шта је сврха урадити kubectl create -f myPod, где myPod.yaml садржи:

version: v1
kind: Pod
...

Шта ће ми pod сам по себи, поред deployment-a?

ПС
Чик преведите deployment :melting_face:

Pa pazi, pod je neka osnova a svi ostali objekti se nadogradjuju na njega. Tako da bi bilo glupo da ne mozes da kreiras pod samostalno :sweat_smile:

E sad, cemu moze da sluzi… On je dobar za neke adhoc stvari. Npr imas deployovan postgres i hoces da izvrsis neke skripte pisane u pythonu, bash-u ili nekom drugom jeziku za bekapovanje ili sredjivanje te baze.
E sad, imas prvu opciju da instaliras kod sebe python i psql, port-forwardujes postgres i onda okines lokalno skriptu i molis boga da ne pukne konekcija.
Druga opcija je mnogo bolja i sigurnija.
Kreiras pod na kome je vec instaliran python i psql, kopiras skriptu i pokrenes je u background-u i time si 100% siguran da ti skriptu nece prekinuti losa konekcija ka k8s-u. I onda samo obrises pod i to je to :slight_smile:

1 Like

Хвала. Има смисла, само лично до сад нисам долазио у такве ситуације.

Ognjen ti je vec napisao neki edge case… u mom slucaju na projektu ne koristimo cini mi se nigde kind: POD

Uglavnom ako koristis samo POD… ako pod umre iz bilo kog slucaja to je to, on je umro i nece se podizati, moraces ga rucno startovati. Dok Deplyoment to radi automatski, tj podize replike po potrebi.

Konkretno mi koristimo u 99% slucajeva na mikroservisima sledece kind-ove:

  • kind: Service
  • kind: VirtualService
  • kind: Deployment
  • kind: HorizontalPodAutoscaler
  • kind: Secret
1 Like