10 Liphoso Tse Tloaelehileng Ha U Sebelisa Kubernetes

Hlokomela. fetolela.: Bangoli ba sehlooho sena ke baenjiniere ba k'hamphani e nyenyane ea Czech, pipetail. Ba khonne ho bokella lethathamo le letle la [ka linako tse ling banal, empa ho ntse ho le joalo] mathata a hatellang haholo le menahano e fosahetseng e amanang le ts'ebetso ea lihlopha tsa Kubernetes.

10 Liphoso Tse Tloaelehileng Ha U Sebelisa Kubernetes

Ho theosa le lilemo tsa ho sebelisa Kubernetes, re sebelitse le palo e kholo ea lihlopha (ka bobeli li laoloa ebile li sa laoloe - ho GCP, AWS le Azure). Ha nako e ntse e ea, re ile ra qala ho hlokomela hore liphoso tse ling li ne li lula li phetoa. Leha ho le joalo, ha ho na lihlong ho sena: re entse boholo ba bona ka borona!

Sengoliloeng se na le liphoso tse atileng haholo mme se boetse se bua ka mokhoa oa ho li lokisa.

1. Lisebelisoa: likopo le meeli

Ntho ena e hlile e lokeloa ke tlhokomelo e haufi-ufi le sebaka sa pele lethathamong.

Hangata kopo ea CPU ebang e sa hlalosoa ho hang kapa e na le boleng bo tlase haholo (ho beha li-pods tse ngata sebakeng se seng le se seng kamoo ho ka khonehang). Ka hona, li-node li tlala haholo. Nakong ea mojaro o phahameng, matla a ho sebetsa a node a sebelisoa ka botlalo mme mosebetsi o itseng o fumana feela seo o se "kopileng" ka CPU throttling. Sena se lebisa ho latency e eketsehileng ea ts'ebeliso, nako ea nako, le litlamorao tse ling tse sa thabiseng. (Bala haholoanyane ka sena phetolelong ea rona ea morao tjena: “Meeli ea CPU le ho tsubella ho matla ho Kubernetes"- hoo e ka bang. fetolela.)

Molemo ka ho Fetisisa (haholo-holo ha kgothaletswa):

resources: {}

Kopo ea CPU e tlase haholo (haholo ha kgothaletswa):

   resources:
      Requests:
        cpu: "1m"

Ka lehlakoreng le leng, ho ba teng ha moeli oa CPU ho ka lebisa ho tlōleng ho sa utloahaleng ha nako ea lioache ka li-pods, le haeba processor ea node e sa laeloe ka botlalo. Hape, sena se ka lebisa tieho e eketsehileng. Khang e ntse e tsoela pele ho potoloha parameter Karolo ea CPU CFS ho Linux kernel le CPU throttling ho itšetlehile ka meeli e behiloeng, hammoho le ho thibela palo ea CFS ... Oho, meeli ea CPU e ka baka mathata a mangata ho feta ao a ka a rarollang. Lintlha tse ling mabapi le sena li ka fumanoa ho sehokelo se ka tlase.

Khetho e feteletseng (ho feta tekano) mathata a ho hopola a ka baka mathata a maholoanyane. Ho fihla moeling oa CPU ho kenyelletsa ho tlola lipotoloho tsa oache, ha ho fihla moeling oa memori ho kenyelletsa ho bolaea pod. Na u kile ua hlokomela OOMkill? E, ke hantle seo re buang ka sona.

Na u batla ho fokotsa monyetla oa hore see se etsahale? Se ke oa fana ka memori ho feta tekano 'me u sebelise Guaranteed QoS (Boleng ba Tšebeletso) ka ho beha kopo ea memori ho fihlela moeli (joalo ka mohlala o ka tlase). Bala haholoanyane ka sena ho Henning Jacobs linehelano (Moenjineri ea ka sehloohong ho Zalando).

Burstable (monyetla o moholo oa ho fumana OOMkilled):

   resources:
      requests:
        memory: "128Mi"
        cpu: "500m"
      limits:
        memory: "256Mi"
        cpu: 2

E tiisitsoe:

   resources:
      requests:
        memory: "128Mi"
        cpu: 2
      limits:
        memory: "128Mi"
        cpu: 2

Ke eng e ka thusang ha ho etsoa lisebelisoa?

Ka thuso ea metrics-server o ka bona ts'ebeliso ea lisebelisoa tsa CPU tsa hajoale le ts'ebeliso ea memori ka li-pods (le lijana tse ka hare ho tsona). Ho ka etsahala hore ebe u se u ntse u e sebelisa. Etsa feela litaelo tse latelang:

kubectl top pods
kubectl top pods --containers
kubectl top nodes

Leha ho le joalo, li bontša feela tšebeliso ea hona joale. E ka u fa mohopolo o thata oa tatellano ea boholo, empa qetellong u tla e hloka histori ea liphetoho tsa metrics ka nako (ho araba lipotso tse kang: "Moroalo o moholo oa CPU e ne e le ofe?", "Moroalo e ne e le ofe maobane hoseng?", joalo-joalo). Bakeng sa sena u ka sebelisa Prometheus, DataDog le lisebelisoa tse ling. Ba mpa ba fumana metrics ho metrics-server ebe ba e boloka, mme mosebelisi a ka e botsa le ho e rera ka nepo.

VerticalPodAutoscaler e lumella iketsetse mokhoa ona. E latela CPU le nalane ea ts'ebeliso ea memori mme e theha likopo tse ncha le meeli ho latela tlhaiso-leseling ena.

Ho sebelisa matla a komporo hantle ha se mosebetsi o bonolo. Ho tšoana le ho bapala Tetris ka linako tsohle. Haeba o lefa haholo bakeng sa matla a khomphutha ka tšebeliso e tlase ea karolelano (e re ~ 10%), re khothaletsa ho sheba lihlahisoa tse thehiloeng ho AWS Fargate kapa Virtual Kubelet. Li hahiloe holim'a mofuta oa tefiso o se nang seva / o lefang ka tšebeliso, o ka fetohang o theko e tlase maemong a joalo.

2. Boikemisetso le boitokisetso bo etsa lipatlisiso

Ka nako e sa lekanyetsoang, ho lekola bophelo le ho ikemisetsa ha hoa lumelloa ho Kubernetes. Mme ka nako tse ding ba lebala ho di bulela...

Empa u ka qala ts'ebeletso joang hape ha ho ka ba le phoso e mpe? Hona motho ea lekanyang meroalo o tseba joang hore pola e se e loketse ho amohela sephethephethe? Kapa hore e ka sebetsana le sephethephethe se eketsehileng?

Hangata liteko tsena li ferekanngoa le tse ling:

  • Ho phela - "Svivability" hlahloba, e tsosolosang pod haeba e hlōleha;
  • Ho ikemisetsa - tlhahlobo ea ho itokisa, haeba e hloleha, e hakolla pod ho tsoa ts'ebeletso ea Kubernetes (sena se ka hlahlojoa ho sebelisoa kubectl get endpoints) 'me sephethephethe ha se fihle ho eona ho fihlela cheke e latelang e phethoa ka katleho.

Licheke tsena ka bobeli E ETSANG NAKONG EA BOPHELO BOHLE BA POD. E bohlokoa haholo.

Maikutlo a tloaelehileng a fosahetseng ke hore li-probe tsa ho itokisetsa li tsamaisoa feela qalong e le hore motho ea leka-lekaneng a tsebe hore pod e se e loketse (Ready) mme e ka qala ho sebetsa sephethephethe. Leha ho le joalo, ena ke e 'ngoe feela ea likhetho bakeng sa tšebeliso ea bona.

E 'ngoe ke monyetla oa ho fumana hore sephethephethe holim'a pod se feteletseng le e e jarisa (kapa pod e etsa lipalo tse matla haholo). Tabeng ena, tlhahlobo ea ho itokisetsa e thusa fokotsa moroalo holim'a pod 'me u e "pholile".. Ho phethela ka katleho tlhahlobo ea ho itokisa nakong e tlang ho lumella eketsa moroalo poteng hape. Tabeng ena (haeba tlhahlobo ea ho itokisa e hloleha), ho hloleha ha tlhahlobo ea liveness ho ka ba kotsi haholo. Ke hobane'ng ha u qala pod e phetseng hantle 'me e sebetsa ka thata?

Ka hona, maemong a mang, ha ho licheke ho hang tse molemo ho feta ho li nolofalletsa ka li-parameter tse sa hlophisitsoeng hantle. Joalokaha ho boletsoe ka holimo, haeba liveness hlahloba likopi ho itokisetsa ho hlahloba, joale u bothateng bo boholo. Khetho e ka khonehang ke ho e lokisa teko ea ho itokisa feelale bophelo bo kotsi tlohela ka thoko.

Mefuta ka bobeli ea licheke ha ea lokela ho hloleha ha litšepe tse tloaelehileng li hloleha, ho seng joalo sena se tla lebisa ho hloleheng ha li-pods tsohle. Ka mantsoe a mang, u se ke ua intša kotsi.

3. LoadBalancer bakeng sa tšebeletso ka 'ngoe ea HTTP

Mohlomong u na le lits'ebeletso tsa HTTP sehlopheng sa hau seo u ka ratang ho se fetisetsa lefatšeng le kantle.

Haeba u bula tšebeletso e le type: LoadBalancer, molaoli oa eona (ho itšetlehile ka mofani oa litšebeletso) o tla fana ka le ho buisana le LoadBalancer ea ka ntle (eseng hore e sebetsa ho L7, empa ho e-na le ho L4), 'me sena se ka ama litšenyehelo (aterese ea IPv4 ea ka ntle, matla a k'homphieutha, tefiso ea motsotsoana. ) ka lebaka la tlhokahalo ea ho theha palo e kholo ea lisebelisoa tse joalo.

Tabeng ena, hoa utloahala haholo ho sebelisa tekanyo e le 'ngoe ea mojaro oa kantle, ho bula lits'ebeletso joalo ka type: NodePort. Kapa ho feta moo, eketsa ntho e kang ena molaoli oa nginx-ingress (kapa Metsoako), eo e tla ba eena feela NodePort endpoint amanang le kantle mojaro balancer 'me e tla tsamaisa sephethephethe ka sehlopha sebelisa ingress- Lisebelisoa tsa Kubernetes.

Litšebeletso tse ling tsa intra-cluster (micro) tse sebelisanang li ka "buisana" li sebelisa litšebeletso tse kang ClusterIP le mokhoa o hahelletsoeng oa ho sibolla litšebeletso ka DNS. Feela u se ke ua sebelisa DNS/IP ea bona ea sechaba, kaha sena se ka ama latency le ho eketsa litšenyehelo tsa lits'ebeletso tsa maru.

4. Autoscaling sehlopha ntle le ho ela hloko likarolo tsa eona

Ha o kenya li-node le ho li tlosa sehlopheng, ha oa lokela ho itšetleha ka metrics e meng ea mantlha joalo ka ts'ebeliso ea CPU ho li-node tseo. Thero ea Pod e tlameha ho nahanela ba bangata lithibelo, joalo ka kamano ea pod / node, litšila le mamello, likopo tsa lisebelisoa, QoS, joalo-joalo. Ho sebelisa autoscaler ea kantle e sa nkeng lintlha tsena ho ka baka mathata.

Ak'u nahane hore pod e itseng e lokela ho hlophisoa, empa matla ohle a teng a CPU a kopuoa / a qhaqhoa 'me pod e qaoa boemong Pending. Autoscaler ea kantle e bona palo e tloaelehileng ea mojaro oa CPU (eseng o kopiloeng) mme ha e qale katoloso. (ho fokotsa) - ha e kenye node e 'ngoe. Ka lebaka leo, pod ena e ke ke ea hlophisoa.

Tabeng ena, reverse scaling (karolelano) - ho tlosa node ho tsoa sehlopheng ho lula ho le thata ho e sebelisa. Ak'u nahane hore u na le pod ea boemo bo botle (e nang le polokelo e tsitsitseng e hokahaneng). Meqolo e phehellang hangata ke tsa sebaka se itseng sa ho fumaneha 'me ha li kopitsoe sebakeng seo. Kahoo, haeba "autoscaler" ea kantle e hlakola node e nang le pod ena, mohlophisi a ke ke a khona ho hlophisa pod ena sebakeng se seng, kaha sena se ka etsoa feela sebakeng sa ho fumaneha moo polokelo e tsitsitseng e leng teng. The pod e tla khomarela naheng Pending.

E tumme haholo sechabeng sa Kubernetes sehlopha-autoscaler. E tsamaisana le sehlopha, e tšehetsa li-API ho tsoa ho bafani ba maru ba ka sehloohong, e nahanela lithibelo tsohle 'me e ka eketseha maemong a ka holimo. E boetse e khona ho kenella ha e ntse e boloka meeli eohle e behiloeng, ka hona e boloka chelete (e neng e tla sebelisoa holima bokhoni bo sa sebelisoeng).

5. Ho hlokomoloha bokhoni ba IAM/RBAC

Hlokomela ho sebelisa basebelisi ba IAM ka liphiri tse phehellang bakeng sa mechine le lisebelisoa. Hlophisa phihlello ea nakoana u sebelisa likarolo le liakhaonto tsa litšebeletso (liak'haonte tsa tšebeletso).

Hangata re kopana le taba ea hore linotlolo tsa phihlello (le liphiri) li na le hardcode ho tlhophiso ea ts'ebeliso, hammoho le ho hlokomoloha ho potoloha ha liphiri ho sa tsotellehe ho fihlella Cloud IAM. Sebelisa likarolo tsa IAM le liakhaonto tsa lits'ebeletso ho fapana le basebelisi moo ho loketseng.

10 Liphoso Tse Tloaelehileng Ha U Sebelisa Kubernetes

Lebala ka kube2iam 'me u ee ka kotloloho ho likarolo tsa IAM bakeng sa li-account tsa lits'ebeletso (joalo ka ha ho hlalositsoe ho noto ya lebitso le tshoanang Štěpán Vraný):

apiVersion: v1
kind: ServiceAccount
metadata:
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/my-app-role
  name: my-serviceaccount
  namespace: default

Tlhaloso e le 'ngoe. Ha ho thata hakaalo, na?

Hape, u se ke oa fana ka liakhaonto tsa litšebeletso le litokelo tsa profil ea mohlala admin и cluster-adminha ba sa e hloke. Sena se thata haholoanyane ho se kenya tšebetsong, haholo ho li-RBAC K8s, empa ho bohlokoa ho etsa boiteko.

6. U se ke ua itšetleha ka ho iketsa anti-affinity bakeng sa li-pods

Ak'u nahane u na le likopi tse tharo tsa lisebelisoa tse ling sebakeng sa node. Node e oa, 'me hammoho le eona likopi tsohle. Boemo bo sa thabiseng, na? Empa ke hobane'ng ha likopi tsohle li ne li le sebakeng se le seng? Na Kubernetes ha ea lokela ho fana ka phihlello e phahameng (HA)?!

Ka bomalimabe, kemiso ea Kubernetes, ka boithatelo ba eona, ha e lumellane le melao ea bophelo bo arohaneng (anti-affinity) bakeng sa li-pods. Li tlameha ho boleloa ka ho hlaka:

// опущено для краткости
      labels:
        app: zk
// опущено для краткости
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - key: "app"
                    operator: In
                    values:
                    - zk
              topologyKey: "kubernetes.io/hostname"

Ke phetho. Joale li-pods li tla hlophisoa ho li-node tse fapaneng (boemo bona bo hlahlojoa feela nakong ea kemiso, empa eseng nakong ea ts'ebetso ea bona - ka hona requiredDuringSchedulingIgnoredDuringExecution).

Mona re bua ka podAntiAffinity ka li-node tse fapaneng: topologyKey: "kubernetes.io/hostname", - mme eseng ka libaka tse fapaneng tse fumanehang. Ho kenya tšebetsong HA e felletseng, o tla tlameha ho cheka ka botebo sehloohong sena.

7. Ho iphapanyetsa PodDisruptionBudgets

Ak'u nahane u na le mojaro oa tlhahiso sehlopheng sa Kubernetes. Nako le nako, li-node le sehlopha ka boeona li tlameha ho nchafatsoa (kapa ho hlakoloa). PodDisruptionBudget (PDB) ke ntho e kang tumellano ea tiiso ea tšebeletso pakeng tsa batsamaisi ba lihlopha le basebelisi.

PDB e u lumella ho qoba litšitiso tsa lits'ebeletso tse bakoang ke khaello ea li-node:

apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: zk-pdb
spec:
  minAvailable: 2
  selector:
    matchLabels:
      app: zookeeper

Mohlaleng ona, uena, joalo ka mosebelisi oa sehlopha, u re ho batsamaisi: "Lumela, ke na le ts'ebeletso ea polokelo ea liphoofolo, 'me ho sa tsotelehe hore na u etsa eng, ke lakatsa ho ba le bonyane likopi tse 2 tsa ts'ebeletso ena kamehla."

U ka bala haholoanyane ka sena mona.

8. Basebedisi ba bangata kapa ditikoloho sehlopheng se le seng

Kubernetes libaka tsa mabitso (libaka tsa mabitso) u se ke ua fana ka insulation e matla.

Maikutlo a fosahetseng a tloaelehileng ke hore haeba u kenya mojaro o seng oa prod sebakeng se le seng sa mabitso le mojaro oa prod ho o mong, joale ba e ke ke ea susumetsana ka tsela leha e le efe... Leha ho le joalo, boemo bo itseng ba ho itšehla thajana bo ka finyelloa ka ho sebelisa likopo/mefokolo ea lisebelisoa, ho beha li-quotas, le ho beha lintho tse tlang pele. Ho itšehla thajana ho itseng "'meleng" sefofaneng sa data ho fanoa ke likamano, mamello, litšila (kapa li-nodeelectors), empa karohano e joalo e ntle haholo. thata kenya tshebetsong.

Ba hlokang ho kopanya mefuta e 'meli ea mesebetsi e mengata sehlopheng se le seng ba tla tlameha ho sebetsana le ho rarahana. Haeba ho se na tlhokahalo e joalo, 'me u ka khona ho ba le eona sehlopha se seng hape (e re, ka leru la sechaba), joale ho molemo ho etsa joalo. Sena se tla finyella boemo bo phahameng haholo ba ho pata.

9. outsideTrafficPolicy: Cluster

Hangata re bona hore sephethephethe sohle ka har'a sehlopha se tla ka ts'ebeletso e kang NodePort, eo leano la kamehla le behiloeng. externalTrafficPolicy: Cluster... Ho bolela hore NodePort e bulehile sebakeng se seng le se seng sa sehlopha, 'me u ka sebelisa leha e le efe ea tsona ho sebelisana le tšebeletso e lakatsehang (sete sa li-pods).

10 Liphoso Tse Tloaelehileng Ha U Sebelisa Kubernetes

Ka nako e ts'oanang, li-pods tsa 'nete tse amanang le ts'ebeletso e boletsoeng ka holimo ea NodePort hangata li fumaneha feela ho tse itseng karoloana ea li-node tsena. Ka mantsoe a mang, haeba ke hokela node e se nang pod e hlokahalang, e tla fetisetsa sephethephethe ho node e 'ngoe, ho eketsa hop le latency e ntseng e eketseha (haeba li-node li fumaneha libakeng tse fapaneng tsa ho fumaneha / litsi tsa data, latency e ka ba e phahameng haholo; ho phaella moo, litšenyehelo tsa sephethephethe sa egress li tla eketseha).

Ka lehlakoreng le leng, haeba tšebeletso e itseng ea Kubernetes e na le leano le behiloeng externalTrafficPolicy: Local, ebe NodePort e bula feela libakeng tseo li-pods tse hlokahalang li hlileng li sebetsang ho tsona. Ha u sebelisa sekala sa ka ntle sa mojaro se hlahlobang naha (ho hlahloba bophelo bo botle) endpoints (e etsa joang AWS ELB), Eena e tla romela sephethephethe feela libakeng tse hlokahalang, e tla ba le phello e molemo ka ho lieha, litlhoko tsa k'homphieutha, likoloto tsa egress ('me kelello e tloaelehileng e laela se tšoanang).

Ho na le monyetla o moholo oa hore u se u ntse u sebelisa ntho e joalo Metsoako kapa molaoli oa nginx-ingress joalo ka NodePort endpoint (kapa LoadBalancer, e sebelisang NodePort) ho tsamaisa sephethephethe sa HTTP, mme ho beha khetho ena ho ka fokotsa haholo latency bakeng sa likopo tse joalo.

В phatlalatso ena U ka ithuta ho eketsehileng ka externalTrafficPolicy, melemo le mathata a eona.

10. U se ke ua tlamelloa ho lihlopha 'me u se ke ua sebelisa hampe sefofane sa taolo

Pejana, e ne e le tloaelo ho bitsa li-server ka mabitso a nepahetseng: Anton, HAL9000 le Colossus... Kajeno li nketsoe sebaka ke li-identifiers tse entsoeng ka mokhoa o sa reroang. Leha ho le joalo, tloaelo e ile ea sala, 'me hona joale mabitso a nepahetseng a ea lihlopha.

Pale e tloaelehileng (e thehiloeng liketsahalong tsa sebele): tsohle li qalile ka bopaki ba khopolo, kahoo sehlopha se ne se e-na le lebitso la boikhohomoso. ho etsa diteko… Lilemo li fetile 'me e ntse e sebelisoa tlhahiso,' me bohle ba tšaba ho e ama.

Ha ho letho le monate ka lihlopha tse fetohang liphoofolo tse ruuoang lapeng, kahoo re khothaletsa ho li tlosa nako le nako ha u ntse u ikoetlisa ho hlaphoheloa ha likoluoa (sena se tla thusa boenjiniere ba moferefere - hoo e ka bang. fetolela.). Ho phaella moo, ho ke ke ha e-ba kotsi ho sebetsa lera la taolo (sefofane sa taolo). Ho tšaba ho mo tšoara hase pontšo e ntle. jj. ba shoeleng? Banna, le tsietsing ruri!

Ka lehlakoreng le leng, ha ua lokela ho khelosoa ke ho e laola. Ka nako lera la taolo le ka 'na la lieha. Ho ka etsahala hore ebe sena se bakoa ke palo e kholo ea lintho tse bōpiloeng ntle le ho potoloha ha tsona (boemo bo tloaelehileng ha u sebelisa Helm e nang le litlhophiso tsa kamehla, ke ka lebaka leo boemo ba eona ho configmaps / liphiri bo sa ntlafatsoang - ka lebaka leo, lintho tse likete li bokella lera la taolo) kapa ka ho hlophisoa ho sa feleng ha lintho tsa kube-api (bakeng sa ho lekanya ka mokhoa o itekanetseng, bakeng sa CI/CD, bakeng sa ho beha leihlo, lintlha tsa liketsahalo, balaoli, joalo-joalo).

Ntle le moo, re khothaletsa ho hlahloba litumellano tsa SLA / SLO le mofani oa taolo oa Kubernetes le ho ela hloko litiiso. Morekisi a ka tiisa ho fumaneha ha lera la taolo (kapa likaroloana tsa eona), empa eseng tieho ea p99 ea likopo tseo u li romellang ho eona. Ka mantsoe a mang, u ka kena kubectl get nodes, 'me u fumane karabo feela ka mor'a metsotso e 10,' me sena e ke ke ea e-ba tlōlo ea lipehelo tsa tumellano ea tšebeletso.

11. Bonase: ho sebelisa tag ea morao-rao

Empa ena e se e ntse e le ea khale. Morao tjena re fumane mokhoa ona hangata, kaha ba bangata, ba ithutile ho tsoa phihlelong e bohloko, ba khaolitse ho sebelisa tag. :latest 'me a qala ho hatisa liphetolelo. Hooray!

ECR e boloka ho se fetohe ha li-tag tsa setšoantšo; Re u khothalletsa hore u tloaelane le tšobotsi ena e babatsehang.

Kakaretso

Se ke oa lebella hore tsohle li tla sebetsa ka bosiu bo le bong: Kubernetes ha se panacea. Sesebelisoa se sebe e tla lula e le joalo le ho Kubernetes (mme mohlomong e tla mpefala). Ho hloka tlhokomelo ho tla lebisa ho rarahaneng ho feteletseng, mosebetsi o liehang le o sithabetsang oa lera la taolo. Ho phaella moo, u ipeha kotsing ea ho sala u se na leano la ho khutlisa likoluoa. Se ke oa lebella hore Kubernetes a fane ka ho itšehla thajana le ho fumaneha ho hoholo ka ntle ho lebokose. Qeta nako e itseng ho etsa hore kopo ea hau e be leru la tlhaho.

U ka tloaelana le liphihlelo tse sa atleheng tsa lihlopha tse fapaneng ho pokello ena ea lipale ka Henning Jacobs.

Ba lakatsang ho kenyelletsa lethathamong la liphoso tse fanoeng sehloohong sena ba ka ikopanya le rona ho Twitter (@MarekBartik, @MstrsObserver).

PS ho tsoa ho mofetoleli

Bala hape ho blog ea rona:

Source: www.habr.com

Eketsa ka tlhaloso