10 mBeart Coitianta agus Kubernetes á Úsáid

Nóta. aistrigh.: Is iad údair an ailt seo innealtóirí ó chuideachta bheag Seiceach, pipetail. D’éirigh leo liosta iontach a chur le chéile [uaireanta banal, ach fós] fadhbanna agus míthuiscintí an-phráinneacha a bhaineann le hoibriú braislí Kubernetes.

10 mBeart Coitianta agus Kubernetes á Úsáid

Thar na blianta a bhaineann le Kubernetes a úsáid, d'oibríomar le líon mór braislí (idir bhainistiú agus neamhbhainistithe - ar GCP, AWS agus Azure). Le himeacht ama, thosaigh muid ag tabhairt faoi deara go ndearnadh roinnt botúin i gcónaí. Mar sin féin, níl aon náire ar seo: rinneamar an chuid is mó acu féin!

Tá na hearráidí is coitianta san alt agus luann sé freisin conas iad a cheartú.

1. Acmhainní: iarratais agus teorainneacha

Is cinnte go bhfuil an aird is gaire agus an chéad áit ar an liosta tuillte ag an mír seo.

Iarratas LAP de ghnáth níl sé sonraithe ar chor ar bith nó tá luach an-íseal aige (a oiread pods agus is féidir a chur ar gach nód). Mar sin, déantar na nóid a ró-ualach. Le linn amanna ard-ualach, baintear úsáid iomlán as cumhacht próiseála an nód agus ní fhaigheann ualach oibre áirithe ach an méid a d'iarr sé LAP ag sníomh. Is é an toradh a bhíonn air seo ná go mbíonn níos mó mallachta iarratais, tréimhsí ama, agus iarmhairtí míthaitneamhacha eile. (Léigh tuilleadh faoi seo inár n-aistriúchán eile le déanaí: “Teorainneacha LAP agus throttling ionsaitheach i Kubernetes" - thart. aistrigh.)

Dícheall (thar a bheith aon molta):

resources: {}

Iarratas LAP thar a bheith íseal (thar a bheith aon molta):

   resources:
      Requests:
        cpu: "1m"

Ar an láimh eile, is féidir le láithreacht teorainn LAP a bheith ina chúis le gan bacadh le timthriallta clog go míréasúnta ag pods, fiú mura bhfuil an próiseálaí nód luchtaithe go hiomlán. Arís, féadfaidh moilleanna méadaithe a bheith mar thoradh air seo. Leanann an chonspóid thart ar an bparaiméadar Cuóta CFS LAP san eithne Linux agus sníomh LAP ag brath ar na teorainneacha socraithe, chomh maith le cuóta CFS a dhíchumasú... Faraoir, is féidir le teorainneacha LAP níos mó fadhbanna a chruthú ná mar is féidir leo a réiteach. Tá tuilleadh eolais faoi seo le fáil ag an nasc thíos.

Roghnú iomarcach (ró-gheallta) is féidir fadhbanna níos mó a bheith mar thoradh ar fhadhbanna cuimhne. Chun an teorainn LAP a bhaint amach ní mór duit scipeáil a dhéanamh ar thimthriallta cloig, agus an teorainn chuimhne a bhaint amach is gá an pod a mharú. Ar thug tú faoi deara riamh OOMkill? Sea, sin é go díreach atá á labhairt againn.

Ar mhaith leat an dóchúlacht go dtarlóidh sé seo a íoslaghdú? Ná déan ró-leithdháileadh ar chuimhne agus bain úsáid as QoS Ráthaithe (Cáilíocht Seirbhíse) tríd an iarratas cuimhne a shocrú go dtí an teorainn (mar atá sa sampla thíos). Léigh tuilleadh faoi seo i Cur i láthair Henning Jacobs saor in aisce, (Innealtóir Ceannais ag Zalando).

pléasctha (seans níos airde go bhfaighidh tú OOMkilled):

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

Ráthaithe:

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

Cad a d'fhéadfadh cabhrú agus acmhainní á mbunú?

Le méadracht-freastalaí is féidir leat tomhaltas acmhainne LAP reatha agus úsáid chuimhne ag pods (agus coimeádáin laistigh díobh) a fheiceáil. Is dócha, tá tú á úsáid cheana féin. Rith na horduithe seo a leanas:

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

Mar sin féin, ní léiríonn siad ach úsáid reatha. Is féidir leis smaoineamh garbh a thabhairt duit ar an ord méide, ach ar deireadh thiar beidh ort stair athruithe ar an méadracht le himeacht ama (chun ceisteanna a fhreagairt mar: “Cad é an buaic-ualach LAP?”, “Cad é an t-ualach a bhí ann maidin inné?”, srl.). Chun seo is féidir leat é a úsáid Prometheus, Madra Sonraí agus uirlisí eile. Ní dhéanann siad ach méadracht a fháil ó fhreastalaí méadrach agus iad a stóráil, agus is féidir leis an úsáideoir iad a cheistiú agus iad a bhreacadh dá réir.

IngearachPodAutoscalóir Ceadaíonn uathoibriú an próiseas seo. Rianaíonn sé stair úsáide LAP agus cuimhne agus socraíonn sé iarratais agus teorainneacha nua bunaithe ar an bhfaisnéis seo.

Ní tasc éasca é cumhacht ríomhaireachta a úsáid go héifeachtach. Tá sé cosúil le imirt Tetris an t-am ar fad. Má tá tú ag íoc an iomarca as cumhacht a ríomh le tomhaltas meánach íseal (abair ~10%), molaimid breathnú ar tháirgí atá bunaithe ar AWS Fargate nó Virtual Kubelet. Tá siad bunaithe ar mhúnla billeála gan fhreastalaí/íoc in aghaidh an úsáide, a d'fhéadfadh a bheith níos saoire i gcoinníollacha den sórt sin.

2. Taiscéalaithe beocht agus ullmhachta

De réir réamhshocraithe, níl seiceálacha beocht agus ullmhachta cumasaithe i Kubernetes. Agus uaireanta déanann siad dearmad iad a chasadh ar ...

Ach conas eile is féidir leat seirbhís a atosú i gcás earráid mharfach? Agus conas a bhíonn a fhios ag an gcothromóir ualaigh go bhfuil pod réidh le trácht a ghlacadh? Nó gur féidir leis níos mó tráchta a láimhseáil?

Is minic a mhearbhalltar na tástálacha seo lena chéile:

  • Beo — seiceáil “marthanacht”, a atosóidh an pod má theipeann air;
  • Ullmhacht — seiceáil ullmhachta, má theipeann air, dícheanglaíonn sé an pod ó sheirbhís Kubernetes (is féidir é seo a sheiceáil ag baint úsáide as kubectl get endpoints) agus ní thagann trácht chuige go dtí go mbeidh an chéad seiceáil eile críochnaithe go rathúil.

An dá sheiceáil seo ARNA DHÉANAMH I LEITH TIMTHriall BEATHA IOMLÁN AN POD. Tá sé an-tábhachtach.

Míthuiscint choitianta is ea nach ritear taiscéalaithe ullmhachta ach amháin ag an am tosaithe ionas go mbeidh a fhios ag an gcothromóir go bhfuil an pod réidh (Ready) agus is féidir tús a chur le trácht a phróiseáil. Mar sin féin, níl sé seo ach ceann amháin de na roghanna maidir lena n-úsáid.

Eile is ea an fhéidearthacht a fháil amach go bhfuil an trácht ar an pod iomarcach agus overloads é (nó déanann an pod ríomhaireachtaí atá dian ar acmhainní). Sa chás seo, cabhraíonn an seiceáil ullmhachta laghdaigh an t-ualach ar an pod agus "cool" é. Is féidir seiceáil ullmhachta a chríochnú go rathúil sa todhchaí méadú ar an ualach ar an pod arís. Sa chás seo (má theipeann ar an tástáil ullmhachta), bheadh ​​teip na tástála beocht an-fhriththáirgiúil. Cén fáth a atosú pod atá sláintiúil agus ag obair go dian?

Dá bhrí sin, i gcásanna áirithe, níl aon seiceálacha ar chor ar bith níos fearr ná iad a chumasú le paraiméadair atá cumraithe go mícheart. Mar a dúradh thuas, más rud é beocht seiceáil cóipeanna seiceáil ullmhachta, ansin tá tú i dtrioblóid mhór. Rogha féideartha é a chumrú tástáil ullmhachta amháinAgus beocht chontúirteach fág ar leataobh.

Níor cheart go dteipfeadh ar an dá chineál seiceála nuair a theipeann ar spleáchais choitianta, ar shlí eile beidh teip cascáideach (cosúil le maolán) de na pods mar thoradh air seo. I bhfocail eile, ná déan dochar duit féin.

3. LoadBalancer do gach seirbhís HTTP

Is dócha go bhfuil seirbhísí HTTP agat i do bhraisle ar mhaith leat a chur ar aghaidh chuig an domhan lasmuigh.

Má osclaíonn tú an tseirbhís mar type: LoadBalancer, soláthróidh agus caibidlíocht a rialtóir (ag brath ar an soláthraí seirbhíse) LoadBalancer seachtrach (ní gá ag rith ar L7, ach fiú ar L4), agus d'fhéadfadh sé seo tionchar a imirt ar an gcostas (seoladh seachtrach statach IPv4, cumhacht ríomhaireachta, billeála in aghaidh an dara. ) mar gheall ar an ngá atá le líon mór acmhainní den sórt sin a chruthú.

Sa chás seo, tá sé i bhfad níos loighciúil úsáid a bhaint as cothromóir ualach seachtrach amháin, ag oscailt seirbhísí mar type: NodePort. Nó níos fearr fós, rud éigin cosúil le leathnú nginx-iontráil-rialtóir (Nó traefik), a bheidh mar an t-aon duine NódPort críochphointe a bhaineann leis an cothromóir ualaigh sheachtraigh agus a stiúrfaidh an trácht sa bhraisle ag baint úsáide as ingress-Acmhainní Kubernetes.

Is féidir le seirbhísí eile laistigh den bhraisle (micrea) a idirghníomhaíonn lena chéile “cumarsáid a dhéanamh” ag baint úsáide as seirbhísí mar ClusterIP agus meicníocht aimsithe seirbhíse ionsuite trí DNS. Ná húsáid a DNS/IP poiblí, mar is féidir leis seo dul i bhfeidhm ar fhoighne agus costas na seirbhísí néil a mhéadú.

4. Braisle a scálú go huathoibríoch gan a ghnéithe a chur san áireamh

Agus nóid á gcur le braisle agus á mbaint astu, níor cheart duit brath ar roinnt bunmhéadracht amhail úsáid LAP ar na nóid sin. Ní mór go leor a chur san áireamh sa phleanáil pod srianta, amhail cleamhnas pod/nód, taints agus lamháltais, iarratais ar acmhainní, QoS, etc. Má úsáidtear uathscálaí seachtrach nach gcuirtear na nuances seo san áireamh is féidir fadhbanna a chruthú.

Samhlaigh gur cheart pod áirithe a sceidealú, ach iarrtar/díchóimeáil an chumhacht LAP ar fad atá ar fáil agus an pod dul i bhfostú i stát Pending. Feiceann uathscálaí seachtrach meánualach reatha an LAP (ní an ceann iarrtha) agus ní chuireann sé tús le leathnú (scála amach) - ní chuireann nód eile leis. Mar thoradh air sin, ní bheidh an pod seo sceidealta.

Sa chás seo, scálú droim ar ais (scála isteach) — bíonn sé níos deacra i gcónaí nód a bhaint as cnuasach a chur i bhfeidhm. Samhlaigh go bhfuil pod suaimhneach agat (le stóráil leanúnach ceangailte). Toirteanna marthanacha de ghnáth is leis crios infhaighteachta ar leith agus nach ndéantar iad a mhacasamhlú sa réigiún. Mar sin, má scriosann uathscálaálaí seachtrach nód leis an pod seo, ní bheidh an sceidealóir in ann an pod seo a sceidealú ar nód eile, toisc nach féidir é seo a dhéanamh ach amháin sa chrios infhaighteachta ina bhfuil an stóráil leanúnach suite. Beidh Pod bhfostú i stát Pending.

An-tóir ar an bpobal Kubernetes braisle-uathoibríoch. Ritheann sé ar bhraisle, tacaíonn sé le APIanna ó sholáthraithe scamall móra, cuireann sé san áireamh gach srian agus is féidir scála a dhéanamh sna cásanna thuas. Tá sé in ann scála a dhéanamh freisin agus na teorainneacha socraithe go léir á gcoinneáil aige, rud a shábhálann airgead (a chaithfí ar acmhainn neamhúsáidte murach sin).

5. Cumais IAM/RBAC a fhaillí

Seachain úsáid a bhaint as úsáideoirí IAM a bhfuil rúin leanúnacha acu le haghaidh meaisíní agus feidhmchláir. Eagraigh rochtain shealadach ag baint úsáide as cuntais róil agus seirbhíse (cuntais seirbhíse).

Is minic a bhíonn againn ar an bhfíric go bhfuil eochracha rochtana (agus rúin) hardcoded i gcumraíocht an fheidhmchláir, chomh maith le faillí a dhéanamh ar an uainíocht na rúin in ainneoin rochtain a bheith acu ar Cloud IAM. Úsáid róil agus cuntais seirbhíse IAM in ionad úsáideoirí nuair is cuí.

10 mBeart Coitianta agus Kubernetes á Úsáid

Déan dearmad faoi kube2iam agus téigh díreach chuig róil IAM le haghaidh cuntais seirbhíse (mar a thuairiscítear i nóta den ainm céanna Š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

Nóta amháin. Níl sé sin deacair, ceart?

Chomh maith leis sin, ná tabhair pribhléidí cuntais seirbhíse agus próifílí mar shampla admin и cluster-adminmura bhfuil sé de dhíth orthu. Tá sé seo beagán níos deacra a chur i bhfeidhm, go háirithe i RBAC K8s, ach cinnte fiú an iarracht.

6. Ná bí ag brath ar fhrithchleamhnas uathoibríoch le haghaidh pods

Samhlaigh go bhfuil trí mhacasamhail de imscaradh éigin agat ar nód. Titeann an nód, agus mar aon leis na macasamhla go léir. Staid míthaitneamhach, ceart? Ach cén fáth go raibh na macasamhla go léir ar an nód céanna? Nach bhfuil Kubernetes ceaptha chun infhaighteacht ard (HA) a sholáthar?!

Ar an drochuair, ní chomhlíonann sceidealóir Kubernetes, ar a thionscnamh féin, na rialacha a bhaineann le bheith ann ar leithligh (frithchleamhnas) le haghaidh pods. Ní mór iad a lua go soiléir:

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

Sin é an méid. Anois déanfar pods a sceidealú ar nóid éagsúla (ní dhéantar an coinníoll seo a sheiceáil ach amháin le linn sceidealaithe, ach ní le linn a n-oibriúcháin - mar sin requiredDuringSchedulingIgnoredDuringExecution).

Anseo táimid ag caint faoi podAntiAffinity ar nóid éagsúla: topologyKey: "kubernetes.io/hostname", - agus ní faoi chriosanna infhaighteachta éagsúla. Chun HA lán-chuimsitheach a chur i bhfeidhm, beidh ort tochailt níos doimhne a dhéanamh ar an ábhar seo.

7. Neamhaird a thabhairt ar Bhuiséid PodDisruption

Samhlaigh go bhfuil ualach táirgeachta agat ar bhraisle Kubernetes. Go tréimhsiúil, ní mór na nóid agus an braisle féin a nuashonrú (nó a dhíchoimisiúnú). Is ionann PodDisruptionBudget (PDB) agus comhaontú ráthaíochta seirbhíse idir riarthóirí braisle agus úsáideoirí.

Ligeann PDB duit cur isteach ar sheirbhís de bharr easpa nóid a sheachaint:

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

Sa sampla seo, deir tusa, mar úsáideoir an bhraisle, do na riarthóirí: “Hey, tá seirbhís zookeeper agam, agus is cuma cad a dhéanann tú, ba mhaith liom go mbeadh ar a laghad 2 mhacasamhail den tseirbhís seo ar fáil i gcónaí.”

Is féidir leat tuilleadh a léamh faoi seo anseo.

8. Úsáideoirí iolracha nó timpeallachtaí i gcnuasach coiteann

Spásanna ainmneacha Kubernetes (spásanna ainmneacha) ná cuir insliú láidir ar fáil.

Míthuiscint choitianta is ea má imscarann ​​tú ualach neamhtháirgí isteach in ainmspás amháin agus ualach táirgí isteach i gceann eile, ansin iad ní bheidh tionchar acu ar a chéile ar bhealach ar bith... Mar sin féin, is féidir leibhéal áirithe leithlis a bhaint amach trí úsáid a bhaint as iarratais/teorainneacha acmhainní, ag socrú cuótaí, agus ag socrú Ranganna tosaíochta. Soláthraítear leithlisiú “fisiciúil” éigin sa phlána sonraí ag cleamhnais, lamháltais, smál (nó roghnóirí nod), ach tá scaradh den sórt sin sách. deacair chur i bhfeidhm.

Iad siúd ar gá dóibh an dá chineál ualaí oibre a chomhcheangal sa bhraisle chéanna, beidh orthu déileáil le castacht. Mura bhfuil aon ghá den sórt sin, agus is féidir leat acmhainn a bheith acu braisle amháin eile (abair, i scamall poiblí), mar sin is fearr é sin a dhéanamh. Bainfidh sé seo leibhéal inslithe i bhfad níos airde amach.

9. externalTrafficPolicy: Braisle

Go minic tugaimid faoi deara go dtagann gach trácht laistigh den bhraisle trí sheirbhís cosúil le NodePort, a bhfuil an polasaí réamhshocraithe socraithe dó externalTrafficPolicy: Cluster... Ciallaíonn sé sin NódPort ar oscailt ar gach nód sa bhraisle, agus is féidir leat úsáid a bhaint as aon cheann acu chun idirghníomhú leis an tseirbhís atá ag teastáil (tacar de pods).

10 mBeart Coitianta agus Kubernetes á Úsáid

Ag an am céanna, is gnách go mbíonn pods fíor a bhaineann leis an tseirbhís NodePort thuasluaite ar fáil ar chúinsí áirithe fothacar de na nóid seo. I bhfocail eile, má cheanglaím le nód nach bhfuil an pod riachtanach aige, cuirfidh sé trácht ar aghaidh chuig nód eile, ag cur leann agus latency méadaithe (má tá nóid suite i gcriosanna infhaighteachta/ionaid sonraí éagsúla, féadfaidh an fhoighne a bheith ard go leor; ina theannta sin, méadóidh costais tráchta as bealach).

Ar an láimh eile, má tá sraith polasaí ag seirbhís áirithe Kubernetes externalTrafficPolicy: Local, ansin ní osclaíonn NodePort ach amháin ar na nóid sin ina bhfuil na pods riachtanacha ag rith i ndáiríre. Nuair a úsáidtear cothromóir ualach seachtrach a sheiceálann an stát (seiceáil sláinte) críochphointí (conas a dhéanann sé AWS ELB), sé seolfaidh an trácht ach go dtí na nóid is gá, a mbeidh éifeacht thairbheach aige ar mhoilleanna, ar riachtanais ríomhaireachta, ar bhillí éalaithe (agus ar chiall choiteann a shocraíonn an rud céanna).

Tá seans ard ann go bhfuil tú ag baint úsáide as rud éigin mar seo cheana féin traefiknginx-iontráil-rialtóir mar chríochphointe NodePort (nó LoadBalancer, a úsáideann NodePort freisin) chun trácht isteach HTTP a threorú, agus is féidir leis an rogha seo an rogha seo a laghdú go mór an mhoill atá ar iarratais den sórt sin.

В an foilseachán seo Is féidir leat níos mó a fhoghlaim faoi externalTrafficPolicy, na buntáistí agus na míbhuntáistí a bhaineann leis.

10. Ná bí ceangailte le cnuasaigh agus ná bain mí-úsáid as an eitleán rialaithe

Roimhe seo, ba nós le freastalaithe a ghlaoch le hainmneacha cearta: Anton, HAL9000 agus Colossus... Sa lá atá inniu ann cuireadh aitheantóirí randamacha ina n-ionad. Mar sin féin, d'fhan an nós, agus anois téann ainmneacha cearta chuig cnuasaigh.

Scéal tipiciúil (bunaithe ar imeachtaí fíor): thosaigh sé ar fad le cruthúnas ar choincheap, agus mar sin bhí ainm bródúil ag an gcnuasach tástáil… Tá blianta caite agus úsáidtear é FÓS i dtáirgeadh, agus tá eagla ar gach duine teagmháil a dhéanamh leis.

Níl aon rud spraoi ann maidir le braislí ag casadh i peataí, mar sin molaimid iad a bhaint go tréimhsiúil agus iad ag cleachtadh téarnamh tubaiste (cuideoidh sé seo innealtóireacht chaos - thart. aistrigh.). Ina theannta sin, ní ghortódh sé oibriú ar an gciseal rialaithe (eitleán rialaithe). Ní comhartha maith é eagla teagmháil a dhéanamh leis. Etc. marbh? Guys, tá tú i ndáiríre i dtrioblóid!

Ar an láimh eile, níor cheart duit é a ionramháil. Le himeacht ama féadfaidh an ciseal rialaithe éirí mall. Is dócha go bhfuil sé seo amhlaidh mar gheall ar líon mór réad a bheith á gcruthú gan a n-uainíocht (cor coitianta nuair a úsáidtear Helm le socruithe réamhshocraithe, agus is é sin an fáth nach bhfuil a staid i configmaps/rúin nuashonraithe - mar thoradh air sin, carnann na mílte réad i an ciseal rialaithe) nó le heagarthóireacht leanúnach ar rudaí kube-api (do scálaithe uathoibríoch, do CI/CD, le haghaidh monatóireachta, logaí imeachtaí, rialtóirí, etc.).

Ina theannta sin, molaimid na comhaontuithe CLS/SLO a sheiceáil leis an soláthraí bainistithe Kubernetes agus aird a thabhairt ar na ráthaíochtaí. Is féidir leis an díoltóir ráthaíocht a thabhairt infhaighteacht ciseal rialaithe (nó a fo-chomhpháirteanna), ach ní an mhoill p99 maidir le hiarratais a sheolann tú chuige. I bhfocail eile, is féidir leat dul isteach kubectl get nodes, agus freagra a fháil ach amháin tar éis 10 nóiméad, agus ní bheidh sé seo ina shárú ar théarmaí an chomhaontaithe seirbhíse.

11. Bónas: ag baint úsáide as an chlib is déanaí

Ach is clasaiceach é seo cheana féin. Le déanaí níor tháinig muid ar an teicníc seo chomh minic, ós rud é go bhfuil go leor, tar éis dóibh foghlaim ó thaithí searbh, stop a úsáid leis an gclib :latest agus thosaigh sé ag feannadh leaganacha. Hooray!

ECR coinníonn immutability na clibeanna íomhá; Molaimid duit eolas a chur ar an ngné shuntasach seo.

Achoimre

Ná bí ag súil go n-oibreoidh gach rud thar oíche: ní uile-íoc é Kubernetes. Droch app fanfaidh sé ar an mbealach seo fiú i Kubernetes (agus is dócha go n-éireoidh sé níos measa). Mar thoradh ar mhíchúram beidh castacht iomarcach, obair mhall agus strusach ar an gciseal rialaithe. Ina theannta sin, tá an baol ann go bhfágfar tú gan straitéis athshlánaithe tubaiste. Ná bí ag súil go gcuirfidh Kubernetes aonrú agus infhaighteacht ard as an mbosca. Caith roinnt ama ag déanamh d'iarratas scamall dúchais.

Is féidir leat eolas a fháil ar eispéiris nár éirigh leis na foirne éagsúla i an cnuasach scéalta seo le Henning Jacobs.

Is féidir leo siúd ar mian leo cur leis an liosta earráidí a thugtar san alt seo teagmháil a dhéanamh linn ar Twitter (@MarekBartik, @MstrsObserver).

PS ó aistritheoir

Léigh freisin ar ár mblag:

Foinse: will.com

Add a comment