Titunṣe awọn ihò ninu iṣupọ Kubernetes. Iroyin ati iwe afọwọkọ lati DevOpsConf

Pavel Selivanov, Southbridge awọn solusan ayaworan ati olukọ Slurm, funni ni igbejade ni DevOpsConf 2019. Ọrọ yii jẹ apakan ti ọkan ninu awọn koko-ọrọ ti ẹkọ-jinlẹ lori Kubernetes “Slurm Mega”.

Ipilẹ Slurm: Ifihan si Kubernetes waye ni Moscow ni Oṣu kọkanla ọjọ 18-20.
Slurm Mega: nwa labẹ awọn Hood ti Kubernetes - Moscow, Kọkànlá Oṣù 22-24.
Slurm Online: mejeeji Kubernetes courses nigbagbogbo wa.

Ni isalẹ gige jẹ igbasilẹ ti ijabọ naa.

Ti o dara Friday, awọn ẹlẹgbẹ ati awọn ti o kẹdùn pẹlu wọn. Loni Emi yoo sọrọ nipa ailewu.

Mo rii pe ọpọlọpọ awọn oluso aabo wa ni gbongan loni. Mo tọrọ gafara fun ọ ni ilosiwaju ti MO ba lo awọn ofin lati agbaye aabo kii ṣe gẹgẹ bi aṣa fun ọ.

Ó ṣẹlẹ̀ pé ní nǹkan bí oṣù mẹ́fà sẹ́yìn ni mo bá ìdìpọ̀ Kubernetes ti gbogbogbòò kan. Gbogbo eniyan tumọ si pe nọmba nth kan wa ti awọn aaye orukọ; ninu awọn aaye orukọ wọnyi awọn olumulo wa ti ya sọtọ ni aaye orukọ wọn. Gbogbo awọn olumulo wọnyi jẹ ti awọn ile-iṣẹ oriṣiriṣi. O dara, a ro pe iṣupọ yii yẹ ki o lo bi CDN kan. Iyẹn ni, wọn fun ọ ni iṣupọ kan, wọn fun ọ ni olumulo kan nibẹ, o lọ si ibi orukọ rẹ, gbe awọn iwaju rẹ lọ.

Ile-iṣẹ iṣaaju mi ​​gbiyanju lati ta iru iṣẹ bẹẹ. Ati pe a beere lọwọ mi lati poki iṣupọ naa lati rii boya ojutu yii dara tabi rara.

Mo wa si iṣupọ yii. A fun mi ni awọn ẹtọ to lopin, aaye orukọ lopin. Awọn eniyan ti o wa nibẹ loye kini aabo jẹ. Wọn ka nipa iṣakoso iraye si orisun ipa (RBAC) ni Kubernetes - wọn yi pada ki Emi ko le ṣe ifilọlẹ awọn adarọ-ese lọtọ lati awọn imuṣiṣẹ. Emi ko ranti iṣoro ti Mo n gbiyanju lati yanju nipa ifilọlẹ podu laisi imuṣiṣẹ, ṣugbọn Mo fẹ gaan lati ṣe ifilọlẹ adarọ-ese kan. Fun orire ti o dara, Mo pinnu lati rii awọn ẹtọ ti Mo ni ninu iṣupọ, kini MO le ṣe, kini Emi ko le ṣe, ati kini wọn ti dabaru nibẹ. Ni akoko kanna, Emi yoo sọ fun ọ ohun ti wọn ti tunto ni aṣiṣe ni RBAC.

O ṣẹlẹ pe ni iṣẹju meji Mo gba abojuto kan si iṣupọ wọn, wo gbogbo awọn aaye orukọ adugbo, rii nibẹ ni awọn iwaju iṣelọpọ ti nṣiṣẹ ti awọn ile-iṣẹ ti o ti ra iṣẹ tẹlẹ ati gbe lọ. Emi ko le da ara mi duro lati lọ si iwaju ẹnikan ati fifi ọrọ ibura diẹ si oju-iwe akọkọ.

Emi yoo sọ fun ọ pẹlu awọn apẹẹrẹ bi MO ṣe ṣe eyi ati bii o ṣe le daabobo ararẹ kuro ninu eyi.

Ṣugbọn ni akọkọ, jẹ ki n ṣafihan ara mi. Orukọ mi ni Pavel Selivanov. Mo jẹ ayaworan ni Southbridge. Mo loye Kubernetes, DevOps ati gbogbo iru awọn nkan ti o wuyi. Emi ati awọn onimọ-ẹrọ Southbridge n kọ gbogbo eyi, ati pe Mo n ṣe igbimọran.

Ni afikun si awọn iṣẹ akọkọ wa, a ti ṣe ifilọlẹ awọn iṣẹ akanṣe laipẹ ti a pe ni Slurms. A n gbiyanju lati mu agbara wa lati ṣiṣẹ pẹlu Kubernetes diẹ si awọn ọpọ eniyan, lati kọ awọn eniyan miiran lati tun ṣiṣẹ pẹlu awọn K8.

Kini MO yoo sọrọ nipa loni? Koko-ọrọ ti ijabọ jẹ kedere - nipa aabo ti iṣupọ Kubernetes. Ṣugbọn Mo fẹ sọ lẹsẹkẹsẹ pe koko yii tobi pupọ - ati nitorinaa Mo fẹ lati ṣalaye lẹsẹkẹsẹ kini Emi kii yoo sọrọ nipa. Emi kii yoo sọrọ nipa awọn ofin hackneyed ti a ti lo tẹlẹ ni igba ọgọrun lori Intanẹẹti. Gbogbo iru RBAC ati awọn iwe-ẹri.

Emi yoo sọrọ nipa kini irora mi ati awọn ẹlẹgbẹ mi nipa aabo ni iṣupọ Kubernetes kan. A rii awọn iṣoro wọnyi mejeeji laarin awọn olupese ti o pese awọn iṣupọ Kubernetes ati laarin awọn alabara ti o wa si wa. Ati paapaa lati ọdọ awọn alabara ti o wa si wa lati awọn ile-iṣẹ abojuto alamọran miiran. Ìyẹn ni pé, ìwọ̀n ìṣẹ̀lẹ̀ náà tóbi gan-an.

Awọn aaye mẹta gangan wa ti Emi yoo sọrọ nipa loni:

  1. Awọn ẹtọ olumulo vs awọn ẹtọ podu. Awọn ẹtọ olumulo ati awọn ẹtọ podu kii ṣe ohun kanna.
  2. Gbigba alaye nipa iṣupọ. Emi yoo fihan pe o le gba gbogbo alaye ti o nilo lati inu iṣupọ kan laisi nini awọn ẹtọ pataki ninu iṣupọ yii.
  3. DoS kolu lori iṣupọ. Ti a ko ba le gba alaye, a yoo ni anfani lati fi iṣupọ ni eyikeyi ọran. Emi yoo sọrọ nipa awọn ikọlu DoS lori awọn eroja iṣakoso iṣupọ.

Ohun gbogboogbo miiran ti Emi yoo mẹnuba ni ohun ti Mo ṣe idanwo gbogbo eyi, lori eyiti MO le sọ dajudaju pe gbogbo rẹ ṣiṣẹ.

A mu bi ipilẹ fifi sori ẹrọ iṣupọ Kubernetes nipa lilo Kubespray. Ti ẹnikẹni ko ba mọ, eyi jẹ eto awọn ipa fun Ansible. A lo nigbagbogbo ninu iṣẹ wa. Ohun ti o dara ni pe o le yi lọ nibikibi - o le yi lọ si awọn ege irin tabi sinu awọsanma ni ibikan. Ọna fifi sori ẹrọ kan ṣiṣẹ ni ipilẹ fun ohun gbogbo.

Ninu iṣupọ yii Emi yoo ni Kubernetes v1.14.5. Gbogbo iṣupọ Cube, eyiti a yoo gbero, ti pin si awọn aaye orukọ, aaye orukọ kọọkan jẹ ti ẹgbẹ ọtọtọ, ati awọn ọmọ ẹgbẹ ti ẹgbẹ yii ni aye si aaye orukọ kọọkan. Wọn ko le lọ si oriṣiriṣi awọn aaye orukọ, si awọn tiwọn nikan. Ṣugbọn akọọlẹ abojuto kan wa ti o ni awọn ẹtọ si gbogbo iṣupọ.

Titunṣe awọn ihò ninu iṣupọ Kubernetes. Iroyin ati iwe afọwọkọ lati DevOpsConf

Mo ṣe ileri pe ohun akọkọ ti a yoo ṣe ni gbigba awọn ẹtọ abojuto si iṣupọ naa. A nilo podu ti a pese silẹ ni pataki ti yoo fọ iṣupọ Kubernetes. Gbogbo ohun ti a nilo lati ṣe ni lo si iṣupọ Kubernetes.

kubectl apply -f pod.yaml

Podu yii yoo de ọdọ ọkan ninu awọn ọga ti iṣupọ Kubernetes. Ati lẹhin eyi iṣupọ yoo fi ayọ pada si wa faili kan ti a pe ni admin.conf. Ni Cube, faili yii tọju gbogbo awọn iwe-ẹri alabojuto, ati ni akoko kanna tunto iṣupọ API. Eyi ni bii o ṣe rọrun lati ni iraye si abojuto, Mo ro pe, 98% ti awọn iṣupọ Kubernetes.

Mo tun ṣe, adarọ-ese yii ni o ṣe nipasẹ idagbasoke ọkan ninu iṣupọ rẹ ti o ni aye lati fi awọn igbero rẹ ranṣẹ si aaye orukọ kekere kan, gbogbo rẹ jẹ clamped nipasẹ RBAC. Ko ni ẹtọ. Ṣugbọn sibẹsibẹ iwe-ẹri ti pada.

Ati nisisiyi nipa kan Pataki ti pese sile podu. A nṣiṣẹ lori eyikeyi aworan. Jẹ ki a mu debian:jessie gẹgẹbi apẹẹrẹ.

A ni nkan yii:

tolerations:
-   effect: NoSchedule 
    operator: Exists 
nodeSelector: 
    node-role.kubernetes.io/master: "" 

Kini ifarada? Awọn oluwa ninu iṣupọ Kubernetes nigbagbogbo ni samisi pẹlu nkan ti a pe ni taint. Ati pe pataki ti “ikolu” yii ni pe o sọ pe awọn podu ko le ṣe sọtọ si awọn apa titunto si. Ṣugbọn ko si ẹnikan ti o ni wahala lati fihan ni eyikeyi podu pe o jẹ ọlọdun si "ikolu". Apakan Ifarada kan sọ pe ti apa kan ba ni NoSchedule, lẹhinna ipade wa jẹ ọlọdun si iru ikolu - ati pe ko si awọn iṣoro.

Pẹlupẹlu, a sọ pe labẹ wa kii ṣe ifarada nikan, ṣugbọn tun fẹ lati fojusi pataki oluwa. Nitori awọn oluwa ni ohun ti o dun julọ ti a nilo - gbogbo awọn iwe-ẹri. Nitorinaa, a sọ nodeSelector - ati pe a ni aami boṣewa lori awọn ọga, eyiti o fun ọ laaye lati yan lati gbogbo awọn apa inu iṣupọ gangan awọn apa ti o jẹ ọga.

Pẹlu awọn apakan meji wọnyi yoo dajudaju wa si oluwa. Ati pe yoo gba laaye lati gbe nibẹ.

Ṣugbọn wiwa sọdọ oluwa ko to fun wa. Eyi kii yoo fun wa ni ohunkohun. Nitorina nigbamii ti a ni awọn nkan meji wọnyi:

hostNetwork: true 
hostPID: true 

A pato pe podu wa, eyiti a ṣe ifilọlẹ, yoo gbe ni aaye orukọ ekuro, ni aaye orukọ netiwọki, ati ni aaye orukọ PID. Ni kete ti a ti ṣe ifilọlẹ podu naa lori oluwa, yoo ni anfani lati rii gbogbo gidi, awọn atọkun laaye ti oju ipade yii, tẹtisi gbogbo ijabọ ati wo PID ti gbogbo awọn ilana.

Lẹhinna o jẹ ọrọ ti awọn nkan kekere. Mu etcd ki o ka ohun ti o fẹ.

Ohun ti o nifẹ julọ ni ẹya Kubernetes yii, eyiti o wa nibẹ nipasẹ aiyipada.

volumeMounts:
- mountPath: /host 
  name: host 
volumes:
- hostPath: 
    path: / 
    type: Directory 
  name: host 

Ati pe pataki rẹ ni pe a le sọ ninu podu ti a ṣe ifilọlẹ, paapaa laisi awọn ẹtọ si iṣupọ yii, pe a fẹ ṣẹda iwọn didun ti iru hostPath. Eyi tumọ si gbigbe ọna lati ọdọ agbalejo eyiti a yoo ṣe ifilọlẹ - ati mu bi iwọn didun. Ati lẹhinna a pe orukọ rẹ: agbalejo. A gbe gbogbo Path hostPath yii si inu podu naa. Ni apẹẹrẹ yii, si itọsọna / gbalejo.

Emi yoo tun ṣe lẹẹkansi. A sọ fun podu lati wa si ọdọ oluwa, gba hostNetwork ati hostPID nibẹ - ki o si gbe gbogbo gbongbo oluwa naa sinu podu yii.

O ye pe ni Debian a ni bash nṣiṣẹ, ati pe bash yii n ṣiṣẹ labẹ gbongbo. Iyẹn ni, a kan gba gbongbo lori oluwa, laisi nini awọn ẹtọ eyikeyi ninu iṣupọ Kubernetes.

Lẹhinna gbogbo iṣẹ-ṣiṣe ni lati lọ si iwe-iṣakoso ipin / ogun /etc/kubernetes/pki, ti Emi ko ba ṣe aṣiṣe, gbe gbogbo awọn iwe-ẹri titunto si ti iṣupọ nibẹ ati, ni ibamu, di olutọju iṣupọ.

Ti o ba wo ni ọna yii, iwọnyi jẹ diẹ ninu awọn ẹtọ ti o lewu julọ ni awọn adarọ-ese - laibikita iru awọn ẹtọ ti olumulo ni:
Titunṣe awọn ihò ninu iṣupọ Kubernetes. Iroyin ati iwe afọwọkọ lati DevOpsConf

Ti Mo ba ni awọn ẹtọ lati ṣiṣe adarọ-ese ni aaye orukọ kan ti iṣupọ, lẹhinna adarọ ese yii ni awọn ẹtọ wọnyi nipasẹ aiyipada. Mo ti le ṣiṣe awọn anfani pods, ati awọn wọnyi ni gbogbo awọn ẹtọ, Oba root lori ipade.

Ayanfẹ mi ni Gbongbo olumulo. Ati Kubernetes ni aṣayan Ṣiṣe Bi Non-Root. Eyi jẹ iru aabo lati ọdọ agbonaeburuwole. Ṣe o mọ kini “ọlọjẹ Moldavian” jẹ? Ti o ba jẹ agbonaeburuwole lojiji ti o wa si iṣupọ Kubernetes mi, lẹhinna awa, awọn alabojuto talaka, beere: “Jọwọ tọka ninu awọn podu rẹ eyiti iwọ yoo fi gige iṣupọ mi, ṣiṣẹ bi kii ṣe gbongbo. Bibẹẹkọ, yoo ṣẹlẹ pe o ṣiṣe ilana naa ninu podu rẹ labẹ gbongbo, ati pe yoo rọrun pupọ fun ọ lati gige mi. Jọwọ dabobo ara rẹ lati ara rẹ."

Iwọn ọna ogun jẹ, ni ero mi, ọna ti o yara ju lati gba abajade ti o fẹ lati inu iṣupọ Kubernetes kan.

Ṣugbọn kini lati ṣe pẹlu gbogbo eyi?

Ero ti o yẹ ki o wa si eyikeyi alakoso deede ti o ba Kubernetes pade ni: “Bẹẹni, Mo sọ fun ọ, Kubernetes ko ṣiṣẹ. Awọn iho wa ninu rẹ. Ati pe gbogbo Cube jẹ akọmalu. ” Ni otitọ, iru nkan wa bi iwe-ipamọ, ati pe ti o ba wo nibẹ, apakan kan wa Podu Aabo Afihan.

Eyi jẹ nkan yaml - a le ṣẹda rẹ ni iṣupọ Kubernetes - eyiti o ṣakoso awọn aaye aabo ni pataki ni apejuwe awọn adarọ-ese. Iyẹn ni, ni otitọ, o ṣakoso awọn ẹtọ lati lo eyikeyi hostNetwork, hostPID, awọn iru iwọn didun kan ti o wa ninu awọn adarọ-ese ni ibẹrẹ. Pẹlu iranlọwọ ti Afihan Aabo Pod, gbogbo eyi le ṣe apejuwe.

Ohun ti o nifẹ julọ nipa Eto Aabo Pod ni pe ninu iṣupọ Kubernetes, gbogbo awọn fifi sori ẹrọ PSP kii ṣe apejuwe ni eyikeyi ọna, wọn jẹ alaabo lasan nipasẹ aiyipada. Ilana Aabo Pod ti ṣiṣẹ ni lilo ohun itanna gbigba.

O dara, jẹ ki a gbe Ilana Aabo Pod sinu iṣupọ, jẹ ki a sọ pe a ni diẹ ninu awọn adarọ-ese iṣẹ ni aaye orukọ, eyiti awọn admins nikan ni iwọle si. Jẹ ká sọ, ni gbogbo awọn miiran igba, pods ni lopin awọn ẹtọ. Nitoripe awọn olupilẹṣẹ ti o ṣeeṣe julọ ko nilo lati ṣiṣẹ awọn adarọ-ese ti o ni anfani ninu iṣupọ rẹ.

Ati pe ohun gbogbo dabi pe o dara pẹlu wa. Ati iṣupọ Kubernetes wa ko le gepa ni iṣẹju meji.

Iṣoro kan wa. O ṣeese julọ, ti o ba ni iṣupọ Kubernetes, lẹhinna ibojuwo ti fi sori ẹrọ iṣupọ rẹ. Emi yoo paapaa lọ jina bi lati ṣe asọtẹlẹ pe ti iṣupọ rẹ ba ni abojuto, yoo pe ni Prometheus.

Ohun ti Mo fẹ sọ fun ọ yoo wulo fun mejeeji oniṣẹ Prometheus ati Prometheus ti a firanṣẹ ni fọọmu mimọ rẹ. Ibeere naa ni pe ti Emi ko ba le gba abojuto sinu iṣupọ ni iyara, lẹhinna eyi tumọ si pe Mo nilo lati wo diẹ sii. Ati pe Mo le wa pẹlu iranlọwọ ti ibojuwo rẹ.

Boya gbogbo eniyan ka awọn nkan kanna lori Habré, ati pe ibojuwo wa ni aaye orukọ ibojuwo. Helm chart ni a npe ni aijọju kanna fun gbogbo eniyan. Mo n lafaimo pe ti o ba ṣe Helm fi sori ẹrọ idurosinsin / prometheus, iwọ yoo pari pẹlu aijọju awọn orukọ kanna. Ati pe o ṣeese Emi kii yoo paapaa ni lati gboju le orukọ DNS ninu iṣupọ rẹ. Nitori pe o jẹ boṣewa.

Titunṣe awọn ihò ninu iṣupọ Kubernetes. Iroyin ati iwe afọwọkọ lati DevOpsConf

Nigbamii ti a ni kan awọn dev ns, ninu eyi ti o le ṣiṣe kan awọn podu. Ati lẹhinna lati inu podu yii o rọrun pupọ lati ṣe nkan bii eyi:

$ curl http://prometheus-kube-state-metrics.monitoring 

prometheus-kube-state-metrics jẹ ọkan ninu awọn olutaja Prometheus ti o gba awọn metiriki lati Kubernetes API funrararẹ. Ọpọlọpọ data wa nibẹ, kini nṣiṣẹ ninu iṣupọ rẹ, kini o jẹ, awọn iṣoro wo ni o ni pẹlu rẹ.

Bi apẹẹrẹ ti o rọrun:

kube_pod_container_info{namespace=“kube-system”,pod=”kube-apiserver-k8s- 1″,container=”kube-apiserver”,image=

"gcr.io/google-containers/kube-apiserver:v1.14.5"

,image_id=»docker-pullable://gcr.io/google-containers/kube- apiserver@sha256:e29561119a52adad9edc72bfe0e7fcab308501313b09bf99df4a96 38ee634989″,container_id=»docker://7cbe7b1fea33f811fdd8f7e0e079191110268f2 853397d7daf08e72c22d3cf8b»} 1

Nipa ṣiṣe ibeere curl ti o rọrun lati inu adarọ-ese ti ko ni anfani, o le gba alaye atẹle. Ti o ko ba mọ iru ẹya Kubernetes ti o nṣiṣẹ, yoo sọ fun ọ ni rọọrun.

Ati ohun ti o nifẹ julọ ni pe ni afikun si iraye si awọn metiriki kube-state-metiriki, o le ni irọrun wọle si Prometheus funrararẹ taara. O le gba awọn metiriki lati ibẹ. O le paapaa kọ awọn metiriki lati ibẹ. Paapaa ni imọ-jinlẹ, o le kọ iru ibeere bẹ lati inu iṣupọ kan ni Prometheus, eyiti yoo kan pa a. Ati pe ibojuwo rẹ yoo dẹkun ṣiṣẹ lati iṣupọ lapapọ.

Ati pe nibi ibeere naa waye boya eyikeyi ibojuwo ita n ṣe abojuto ibojuwo rẹ. Mo ṣẹṣẹ ni aye lati ṣiṣẹ ni iṣupọ Kubernetes laisi eyikeyi abajade fun ara mi. Iwọ kii yoo paapaa mọ pe MO n ṣiṣẹ nibẹ, nitori ko si ibojuwo eyikeyi mọ.

Gẹgẹ bi pẹlu PSP, o kan lara bi iṣoro naa ni pe gbogbo awọn imọ-ẹrọ alafẹfẹ wọnyi - Kubernetes, Prometheus - wọn kan ko ṣiṣẹ ati pe wọn kun fun awọn iho. Be ko.

Iru nkan bẹẹ wa - Ilana nẹtiwọki.

Ti o ba jẹ alabojuto deede, lẹhinna o ṣeeṣe julọ o mọ nipa Ilana Nẹtiwọọki pe eyi jẹ yaml miiran, eyiti eyiti ọpọlọpọ wọn ti wa tẹlẹ ninu iṣupọ naa. Ati pe diẹ ninu Awọn ilana Nẹtiwọọki ni pato ko nilo. Ati paapaa ti o ba ka kini Afihan Nẹtiwọọki jẹ, pe o jẹ ogiriina yaml ti Kubernetes, o fun ọ laaye lati ṣe idinwo awọn ẹtọ iwọle laarin awọn aaye orukọ, laarin awọn pods, lẹhinna o dajudaju pinnu pe ogiriina ni ọna kika yaml ni Kubernetes da lori awọn abstractions atẹle. ... Rara rara . Eleyi jẹ pato ko wulo.

Paapaa ti o ko ba sọ fun awọn alamọja aabo rẹ pe lilo Kubernetes rẹ o le kọ ogiriina ti o rọrun pupọ ati ti o rọrun, ati ọkan granular pupọ ni iyẹn. Ti wọn ko ba mọ eyi sibẹsibẹ ati pe wọn ko yọ ọ lẹnu: “Daradara, fun mi, fun mi...” Lẹhinna ni eyikeyi ọran, o nilo Ilana Nẹtiwọọki lati dènà iraye si awọn aaye iṣẹ diẹ ti o le fa lati inu iṣupọ rẹ laisi eyikeyi aṣẹ.

Gẹgẹbi apẹẹrẹ ti Mo fun, o le fa awọn metiriki ipinlẹ kube soke lati aaye orukọ eyikeyi ninu iṣupọ Kubernetes laisi nini eyikeyi awọn ẹtọ lati ṣe bẹ. Awọn eto imulo nẹtiwọọki ni iraye si pipade lati gbogbo awọn aaye orukọ miiran si aaye orukọ ibojuwo ati pe iyẹn: ko si iwọle, ko si awọn iṣoro. Ninu gbogbo awọn shatti ti o wa, mejeeji boṣewa Prometheus ati Prometheus ti o wa ninu oniṣẹ, aṣayan kan wa ni awọn iye helm lati mu awọn ilana nẹtiwọọki ṣiṣẹ ni irọrun fun wọn. O kan nilo lati tan-an ati pe wọn yoo ṣiṣẹ.

Looto ni isoro kan wa nibi. Jije alabojuto irungbọn deede, o ṣee ṣe julọ pinnu pe awọn ilana nẹtiwọọki ko nilo. Ati lẹhin kika gbogbo iru awọn nkan lori awọn orisun bii Habr, o pinnu pe flannel, paapaa pẹlu ipo-ọna-ọna ogun, jẹ ohun ti o dara julọ ti o le yan.

Kini o yẹ ki n ṣe?

O le gbiyanju lati tun ṣe atunṣe ojutu nẹtiwọọki ti o ni ninu iṣupọ Kubernetes rẹ, gbiyanju lati paarọ rẹ pẹlu nkan ti o ṣiṣẹ diẹ sii. Fun Calico kanna, fun apẹẹrẹ. Ṣugbọn Mo fẹ sọ lẹsẹkẹsẹ pe iṣẹ-ṣiṣe ti yiyipada ojutu nẹtiwọọki ni iṣupọ ṣiṣẹ Kubernetes jẹ ohun ti kii ṣe bintin. Mo yanju rẹ lẹmeji (mejeeji, sibẹsibẹ, o tumq si), sugbon a ani fihan bi o lati se ni Slurms. Fun awọn ọmọ ile-iwe wa, a fihan bi a ṣe le yi ojutu nẹtiwọọki pada ninu iṣupọ Kubernetes kan. Ni opo, o le gbiyanju lati rii daju wipe ko si downtime lori isejade iṣupọ. Ṣugbọn o ṣee ṣe iwọ kii yoo ṣaṣeyọri.

Ati awọn isoro ti wa ni kosi re gan nìkan. Awọn iwe-ẹri wa ninu iṣupọ, ati pe o mọ pe awọn iwe-ẹri rẹ yoo pari ni ọdun kan. O dara, ati nigbagbogbo ojutu deede pẹlu awọn iwe-ẹri ninu iṣupọ - kilode ti a fi n ṣe aibalẹ, a yoo gbe iṣupọ tuntun kan wa nitosi, jẹ ki ogbologbo ki o bajẹ, ki o tun ṣe ohun gbogbo. Lootọ, nigba ti o ba bajẹ, a ni lati joko fun ọjọ kan, ṣugbọn eyi ni iṣupọ tuntun kan.

Nigbati o ba gbe iṣupọ tuntun soke, ni akoko kanna fi Calico sii dipo flannel.

Kini lati ṣe ti awọn iwe-ẹri rẹ ba fun ni ọgọrun ọdun ati pe iwọ kii yoo tun gbe iṣupọ naa ṣiṣẹ? Iru nkan bẹẹ wa bi Kube-RBAC-Aṣoju. Eyi jẹ idagbasoke ti o tutu pupọ, o fun ọ laaye lati fi ararẹ si ararẹ bi apoti ẹgbe si eyikeyi podu ninu iṣupọ Kubernetes. Ati pe o ṣe afikun aṣẹ nitootọ si podu yii nipasẹ RBAC ti Kubernetes funrararẹ.

Iṣoro kan wa. Ni iṣaaju, ojutu Kube-RBAC-Proxy yii ni a ṣe sinu Prometheus oniṣẹ. Ṣugbọn lẹhinna o ti lọ. Bayi awọn ẹya ode oni gbarale otitọ pe o ni eto imulo nẹtiwọọki kan ati pa a ni lilo wọn. Ati nitorinaa a yoo ni lati tun chart naa kọ diẹ. Ni otitọ, ti o ba lọ si ibi ipamọ yii, awọn apẹẹrẹ wa ti bii o ṣe le lo eyi bi awọn ọkọ ayọkẹlẹ ẹgbẹ, ati pe awọn shatti naa yoo ni lati tun kọ diẹ.

Iṣoro kekere kan wa. Prometheus kii ṣe ọkan nikan ni fifun awọn metiriki rẹ si ẹnikẹni. Gbogbo awọn paati iṣupọ Kubernetes wa tun ni anfani lati da awọn metiriki tiwọn pada.

Ṣugbọn bi mo ti sọ tẹlẹ, ti o ko ba le wọle si iṣupọ ati gba alaye, lẹhinna o le ni o kere ju ṣe ipalara.

Nitorinaa Emi yoo yara ṣafihan awọn ọna meji bi iṣupọ Kubernetes ṣe le bajẹ.

Iwọ yoo rẹrin nigbati MO sọ fun ọ eyi, awọn ọran meji ni igbesi aye gidi.

Ọna ọkan. Idinku awọn orisun.

Jẹ ki a ṣe ifilọlẹ podu pataki miiran. O yoo ni apakan bi eleyi.

resources: 
    requests: 
        cpu: 4 
        memory: 4Gi 

Bi o ṣe mọ, awọn ibeere ni iye Sipiyu ati iranti ti o wa ni ipamọ lori agbalejo fun awọn adarọ-ese kan pato pẹlu awọn ibeere. Ti a ba ni agbalejo mẹrin-mojuto ni iṣupọ Kubernetes kan, ati awọn adarọ-ese Sipiyu mẹrin de ibẹ pẹlu awọn ibeere, o tumọ si pe ko si awọn adarọ-ese pẹlu awọn ibeere yoo ni anfani lati wa si agbalejo yii.

Ti MO ba ṣiṣẹ iru podu kan, lẹhinna Emi yoo ṣiṣẹ aṣẹ naa:

$ kubectl scale special-pod --replicas=...

Lẹhinna ko si ẹlomiran ti yoo ni anfani lati ran lọ si iṣupọ Kubernetes. Nitori gbogbo awọn apa yoo pari awọn ibeere. Ati nitorinaa Emi yoo da iṣupọ Kubernetes duro. Ti MO ba ṣe eyi ni irọlẹ, Mo le da awọn imuṣiṣẹ duro fun igba pipẹ.

Ti a ba tun wo iwe Kubernetes, a yoo rii nkan yii ti a pe ni Range Limit. O ṣeto awọn orisun fun awọn nkan iṣupọ. O le kọ ohun elo Range kan ni yaml, lo si awọn aaye orukọ kan - ati lẹhinna ni aaye orukọ yii o le sọ pe o ni aiyipada, o pọju ati awọn orisun to kere julọ fun awọn adarọ-ese.

Pẹlu iranlọwọ ti iru nkan bẹẹ, a le ṣe idinwo awọn olumulo ni awọn aaye orukọ ọja kan pato ti awọn ẹgbẹ ni agbara lati tọka gbogbo iru awọn ohun ẹgbin lori awọn adarọ-ese wọn. Ṣugbọn laanu, paapaa ti o ba sọ fun olumulo pe wọn ko le ṣe ifilọlẹ awọn adarọ-ese pẹlu awọn ibeere fun Sipiyu diẹ sii ju ọkan lọ, iru aṣẹ iwọn iyanu kan wa, tabi wọn le ṣe iwọn nipasẹ dasibodu naa.

Ati pe eyi ni ibiti ọna nọmba meji ti wa. A ṣe ifilọlẹ 11 pods. Ti o jẹ bilionu mọkanla. Eyi kii ṣe nitori pe Mo wa pẹlu iru nọmba bẹ, ṣugbọn nitori Mo rii funrararẹ.

Itan gidi. Ni aṣalẹ Mo ti fẹrẹ lọ kuro ni ọfiisi. Mo ri ẹgbẹ kan ti Difelopa joko ni igun, frantically ṣe nkankan pẹlu wọn kọǹpútà alágbèéká. Mo lọ si ọdọ awọn ọmọkunrin naa ki o beere: "Kini o ṣẹlẹ si ọ?"

Ni diẹ sẹyin, ni ayika mẹsan aṣalẹ, ọkan ninu awọn olupilẹṣẹ n murasilẹ lati lọ si ile. Ati pe Mo pinnu: “Emi yoo ṣe iwọn ohun elo mi ni bayi si ọkan.” Mo tẹ ọkan, ṣugbọn Intanẹẹti fa fifalẹ diẹ. Ó tẹ̀ síwájú, ó tẹ ọ̀kan, ó sì tẹ̀ wọ́n. Mo gbo ohun gbogbo ti mo le. Lẹhinna Intanẹẹti wa si igbesi aye - ati pe ohun gbogbo bẹrẹ si iwọn si isalẹ si nọmba yii.

Lootọ, itan yii ko waye lori Kubernetes; ni akoko yẹn o jẹ Nomad. O pari pẹlu otitọ pe lẹhin wakati kan ti awọn igbiyanju wa lati da Nomad duro lati awọn igbiyanju ti o tẹsiwaju lati ṣe iwọn, Nomad dahun pe oun ko ni dawọ duro ati pe ko ni ṣe ohunkohun miiran. "O rẹ mi, mo nlọ." Ati ki o curled soke.

Nipa ti, Mo gbiyanju lati ṣe kanna lori Kubernetes. Kubernetes ko ni idunnu pẹlu awọn podu bilionu mọkanla, o sọ pe: “Emi ko le. O tayọ awọn oluso ẹnu inu." Ṣugbọn 1 podu le.

Ni idahun si bilionu kan, Cube ko yọkuro sinu ararẹ. O bẹrẹ ni iwọn gaan. Bi ilana naa ti lọ siwaju, akoko diẹ sii ti o gba lati ṣẹda awọn adarọ-ese tuntun. Ṣugbọn sibẹ ilana naa tẹsiwaju. Iṣoro kan nikan ni pe ti MO ba le ṣe ifilọlẹ awọn pods lainidi ni aaye orukọ mi, lẹhinna paapaa laisi awọn ibeere ati awọn opin Mo le ṣe ifilọlẹ ọpọlọpọ awọn adarọ-ese pẹlu diẹ ninu awọn iṣẹ ṣiṣe pe pẹlu iranlọwọ ti awọn iṣẹ ṣiṣe wọnyi awọn apa yoo bẹrẹ lati ṣafikun ni iranti, ni Sipiyu. Nigbati Mo ṣe ifilọlẹ ọpọlọpọ awọn adarọ-ese, alaye lati ọdọ wọn yẹ ki o lọ sinu ibi ipamọ, iyẹn ni, ati bẹbẹ lọ. Ati nigbati alaye pupọ ba de sibẹ, ibi ipamọ naa bẹrẹ lati pada laiyara - ati Kubernetes bẹrẹ lati di ṣigọgọ.

Ati iṣoro diẹ sii ... Bi o ṣe mọ, awọn eroja iṣakoso Kubernetes kii ṣe nkan aringbungbun kan, ṣugbọn awọn paati pupọ. Ni pato, oluṣakoso oludari wa, oluṣeto, ati bẹbẹ lọ. Gbogbo awọn eniyan wọnyi yoo bẹrẹ lati ṣe aibojumu, iṣẹ aṣiwere ni akoko kanna, eyiti lori akoko yoo bẹrẹ lati gba akoko diẹ sii ati siwaju sii. Oluṣakoso oludari yoo ṣẹda awọn adarọ-ese tuntun. Oluṣeto yoo gbiyanju lati wa ipade tuntun fun wọn. O ṣeese julọ pe iwọ yoo pari ni awọn apa titun ninu iṣupọ rẹ laipẹ. Awọn iṣupọ Kubernetes yoo bẹrẹ lati ṣiṣẹ losokepupo ati losokepupo.

Ṣugbọn Mo pinnu lati lọ paapaa siwaju sii. Bi o ṣe mọ, ni Kubernetes iru nkan kan wa ti a pe ni iṣẹ kan. O dara, nipasẹ aiyipada ninu awọn iṣupọ rẹ, o ṣeese, iṣẹ naa n ṣiṣẹ nipa lilo awọn tabili IP.

Ti o ba ṣiṣẹ awọn podu bilionu kan, fun apẹẹrẹ, ati lẹhinna lo iwe afọwọkọ kan lati fi ipa mu Kubernetis lati ṣẹda awọn iṣẹ tuntun:

for i in {1..1111111}; do
    kubectl expose deployment test --port 80  
        --overrides="{"apiVersion": "v1", 
           "metadata": {"name": "nginx$i"}}"; 
done 

Lori gbogbo awọn apa ti iṣupọ, siwaju ati siwaju sii awọn ofin iptables tuntun yoo jẹ ipilẹṣẹ ni akoko kanna. Pẹlupẹlu, awọn ofin iptables bilionu kan yoo ṣe ipilẹṣẹ fun iṣẹ kọọkan.

Mo ṣayẹwo gbogbo nkan yii lori ọpọlọpọ ẹgbẹrun, to mẹwa. Ati pe iṣoro naa ni pe tẹlẹ ni iloro yii o jẹ iṣoro pupọ lati ṣe ssh si ipade naa. Nitori awọn apo-iwe, ti o lọ nipasẹ ọpọlọpọ awọn ẹwọn, bẹrẹ lati lero ko dara julọ.

Ati pe eyi, paapaa, gbogbo rẹ ni ipinnu pẹlu iranlọwọ ti Kubernetes. Iru nkan ipin ipin orisun kan wa. Ṣeto nọmba awọn orisun to wa ati awọn nkan fun aaye orukọ ninu iṣupọ. A le ṣẹda ohun yaml ni aaye orukọ kọọkan ti iṣupọ Kubernetes. Lilo nkan yii, a le sọ pe a ni nọmba kan ti awọn ibeere ati awọn opin ti a sọtọ fun aaye orukọ yii, lẹhinna a le sọ pe ni aaye orukọ yii o ṣee ṣe lati ṣẹda awọn iṣẹ 10 ati awọn adarọ-ese 10. Ati ki o kan nikan Olùgbéejáde le ni o kere choke ara rẹ ni aṣalẹ. Kubernetes yoo sọ fun u pe: “O ko le ṣe iwọn awọn adarọ-ese rẹ si iye yẹn, nitori awọn orisun ti kọja ipin.” Iyẹn ni, iṣoro ti yanju. Iwe aṣẹ nibi.

Ojuami iṣoro kan dide ni ọran yii. O lero bawo ni o ṣe nira lati ṣẹda aaye orukọ ni Kubernetes. Lati ṣẹda rẹ, a nilo lati ṣe akiyesi ọpọlọpọ awọn nkan.

Awọn oluşewadi ipin + iye to + RBAC
Ṣẹda aaye orukọ
Ṣẹda aropin inu
Ṣẹda inu ohun elo
Ṣẹda akọọlẹ iṣẹ kan fun CI
• Ṣẹda rolebinding fun CI ati awọn olumulo
Iyan ṣe ifilọlẹ awọn podu iṣẹ pataki

Nitorina, Emi yoo fẹ lati lo anfani yii lati pin awọn idagbasoke mi. Iru nkan bẹẹ wa ti a npe ni oniṣẹ SDK. Eyi jẹ ọna fun iṣupọ Kubernetes lati kọ awọn oniṣẹ fun rẹ. O le kọ awọn alaye nipa lilo Ansible.

Ni akọkọ o ti kọ ni Ansible, ati lẹhinna Mo rii pe oniṣẹ SDK kan wa ati tun ṣe ipa Ansible sinu oniṣẹ. Gbólóhùn yii gba ọ laaye lati ṣẹda ohun kan ninu iṣupọ Kubernetes ti a pe ni aṣẹ. Ninu aṣẹ kan, o gba ọ laaye lati ṣe apejuwe agbegbe fun aṣẹ yii ni yaml. Ati laarin agbegbe ẹgbẹ, o gba wa laaye lati ṣe apejuwe pe a n pin awọn ohun elo lọpọlọpọ.

Kekere ṣiṣe yi gbogbo eka ilana rọrun.

Ati ni ipari. Kini lati ṣe pẹlu gbogbo eyi?
Akoko. Pod Aabo Afihan dara. Ati botilẹjẹpe otitọ pe ko si ọkan ninu awọn fifi sori ẹrọ Kubernetes ti o lo wọn titi di oni, o tun nilo lati lo wọn ninu awọn iṣupọ rẹ.

Ilana Nẹtiwọọki kii ṣe ẹya miiran ti ko wulo. Eyi ni ohun ti a nilo gaan ninu iṣupọ kan.

LimitRange/ResourceQuota - o to akoko lati lo. A bẹrẹ lilo eyi ni igba pipẹ sẹhin, ati fun igba pipẹ Mo ni idaniloju pe gbogbo eniyan lo. O wa ni jade wipe yi jẹ toje.

Ni afikun si ohun ti Mo mẹnuba lakoko ijabọ naa, awọn ẹya ti ko ni iwe-aṣẹ wa ti o gba ọ laaye lati kọlu iṣupọ naa. Ti tu silẹ laipẹ sanlalu igbekale ti Kubernetes vulnerabilities.

Diẹ ninu awọn ohun jẹ ibanujẹ ati ipalara. Fun apẹẹrẹ, labẹ awọn ipo kan, awọn cubelets ninu iṣupọ Kubernetes le fun awọn akoonu inu itọsọna warlocks si olumulo laigba aṣẹ.

nibi Awọn itọnisọna wa lori bi o ṣe le ṣe ẹda ohun gbogbo ti mo sọ fun ọ. Awọn faili wa pẹlu awọn apẹẹrẹ iṣelọpọ ti kini ResourceQuota ati Ilana Aabo Pod dabi. Ati pe o le fi ọwọ kan gbogbo eyi.

O ṣeun si gbogbo.

orisun: www.habr.com

Fi ọrọìwòye kun