It-twaħħil ta 'toqob fil-cluster Kubernetes. Rapport u traskrizzjoni minn DevOpsConf

Pavel Selivanov, perit tas-soluzzjonijiet Southbridge u għalliem Slurm, ta preżentazzjoni f'DevOpsConf 2019. Din it-taħdita hija parti minn waħda mis-suġġetti tal-kors fil-fond dwar Kubernetes "Slurm Mega".

Slurm Basic: Introduzzjoni għal Kubernetes iseħħ f'Moska fit-18-20 ta' Novembru.
Slurm Mega: tfittex taħt il-barnuża ta 'Kubernetes — Moska, 22-24 ta’ Novembru.
Slurm Online: iż-żewġ korsijiet ta' Kubernetes dejjem disponibbli.

Taħt il-qatgħa hemm traskrizzjoni tar-rapport.

Wara nofsinhar it-tajjeb, kollegi u dawk li jissimpatizzaw magħhom. Illum se nitkellem dwar is-sigurtà.

Nara li llum hemm ħafna gwardjani tas-sigurtà fis-sala. Niskużalek bil-quddiem jekk nuża termini mid-dinja tas-sigurtà mhux eżattament kif inhi d-drawwa għalik.

Ġara li madwar sitt xhur ilu ltqajt ma' cluster wieħed pubbliku ta' Kubernetes. Pubbliku ifisser li hemm numru nth ta' namespaces; f'dawn l-ispazji tal-isem hemm utenti iżolati fl-ispazji tal-isem tagħhom. Dawn l-utenti kollha jappartjenu għal kumpaniji differenti. Ukoll, kien preżunt li dan il-cluster għandu jintuża bħala CDN. Jiġifieri, jagħtuk cluster, jagħtuk utent hemmhekk, tmur hemm fl-ispazju tal-isem tiegħek, tiskjera l-fronti tiegħek.

Il-kumpanija preċedenti tiegħi ppruvat tbigħ servizz bħal dan. U ġejt mistoqsi nagħmel il-cluster biex nara jekk din is-soluzzjoni kinitx adattata jew le.

Wasalt għal dan il-cluster. Jien ingħatajt drittijiet limitati, spazju għall-isem limitat. Il-ġuvini hemmhekk fehmu x'kienet is-sigurtà. Huma jaqraw dwar il-kontroll tal-aċċess ibbażat fuq ir-rwol (RBAC) f'Kubernetes - u mdawwarha sabiex ma stajtx inniedi pods separatament mill-iskjeramenti. Ma niftakarx il-problema li kont qed nipprova nsolvi billi nniedi pod mingħajr skjerament, imma ridt verament inniedi pod biss. Għax-xorti tajba, iddeċidejt li nara x'drittijiet għandi fil-cluster, x'nista' nagħmel, x'ma nistax nagħmel, u x'ħawdu hemmhekk. Fl-istess ħin, jien ngħidlek dak li kkonfiguraw ħażin f'RBAC.

Ġara li f'żewġ minuti rċevejt admin għall-cluster tagħhom, ħares lejn l-ispazji tal-isem ġirien kollha, rajt hemm il-fronti tal-produzzjoni li qed jaħdmu ta 'kumpaniji li kienu diġà xtraw is-servizz u skjerati. Bilkemm stajt inwaqqaf lili nnifsi milli mmur quddiem xi ħadd u npoġġi xi ġurali fuq il-paġna prinċipali.

Ngħidlek b'eżempji kif għamilt dan u kif tipproteġi lilek innifsek minn dan.

Imma l-ewwel, ħalluni nintroduċi ruħi. Jisimni Pavel Selivanov. Jien perit f'Southbridge. Nifhem lil Kubernetes, DevOps u kull xorta ta 'affarijiet fantastiċi. L-inġiniera ta' Southbridge u jien qed nibnu dan kollu, u qed nikkonsulta.

Minbarra l-attivitajiet ewlenin tagħna, dan l-aħħar nedejna proġetti msejħa Slurms. Qed nippruvaw inġibu l-kapaċità tagħna li naħdmu ma 'Kubernetes ftit lill-mases, biex ngħallmu nies oħra jaħdmu wkoll ma' K8s.

X’se nitkellem illum? Is-suġġett tar-rapport huwa ovvju - dwar is-sigurtà tal-cluster Kubernetes. Imma rrid ngħid mill-ewwel li dan is-suġġett huwa kbir ħafna - u għalhekk irrid niċċara minnufih dak li żgur mhux se nitkellem dwaru. Mhux se nitkellem dwar termini hackneyed li diġà ntużaw mitt darba fuq l-Internet. Kull xorta ta 'RBAC u ċertifikati.

Se nitkellem dwar dak li jolqot lili u lill-kollegi tiegħi dwar is-sigurtà fi cluster Kubernetes. Aħna naraw dawn il-problemi kemm fost il-fornituri li jipprovdu raggruppamenti Kubernetes kif ukoll fost il-klijenti li jiġu għandna. U anke minn klijenti li jiġu għandna minn kumpaniji oħra ta 'konsulenza admin. Jiġifieri, l-iskala tat-traġedja hija fil-fatt kbira ħafna.

Hemm litteralment tliet punti li se nitkellem dwarhom illum:

  1. Drittijiet tal-utent vs drittijiet pod. Id-drittijiet tal-utent u d-drittijiet tal-pods mhumiex l-istess ħaġa.
  2. Ġbir ta 'informazzjoni dwar il-cluster. Ser nuri li tista' tiġbor l-informazzjoni kollha li għandek bżonn minn cluster mingħajr ma jkollok drittijiet speċjali f'dan il-cluster.
  3. Attakk DoS fuq il-cluster. Jekk ma nistgħux niġbru informazzjoni, inkunu nistgħu npoġġu cluster fi kwalunkwe każ. Se nitkellem dwar attakki DoS fuq elementi ta 'kontroll ta' cluster.

Ħaġa ġenerali oħra li se nsemmi hija fuq dak li ttestjajt dan kollu, li fuqha żgur nista' ngħid li kollox jaħdem.

Nieħdu bħala bażi l-installazzjoni ta 'cluster Kubernetes bl-użu ta' Kubespray. Jekk xi ħadd ma jafx, dan huwa fil-fatt sett ta 'rwoli għal Ansible. Aħna nużawha kontinwament fix-xogħol tagħna. Il-ħaġa tajba hija li tista 'tirromblaha kullimkien - tista' tirromblaha fuq biċċiet tal-ħadid jew fi sħaba x'imkien. Metodu ta 'installazzjoni wieħed jaħdem fil-prinċipju għal kollox.

F'dan il-cluster ser ikolli Kubernetes v1.14.5. Il-cluster Cube kollu, li se nikkunsidraw, huwa maqsum fi namespaces, kull namespace jappartjeni għal tim separat, u l-membri ta 'dan it-tim għandhom aċċess għal kull namespace. Ma jistgħux imorru għal namespaces differenti, biss għal tagħhom stess. Iżda hemm ċertu kont amministratur li għandu drittijiet għall-cluster kollu.

It-twaħħil ta 'toqob fil-cluster Kubernetes. Rapport u traskrizzjoni minn DevOpsConf

Wegħdt li l-ewwel ħaġa li se nagħmlu hija li niksbu drittijiet ta’ amministrazzjoni għall-cluster. Għandna bżonn pod ippreparat apposta li jkisser il-cluster Kubernetes. Kulma rridu nagħmlu hu li napplikawha għall-cluster Kubernetes.

kubectl apply -f pod.yaml

Dan il-pod se jasal għand wieħed mill-kaptani tal-cluster Kubernetes. U wara dan il-cluster se heureusement jirritorna lilna fajl imsejjaħ admin.conf. F'Cube, dan il-fajl jaħżen iċ-ċertifikati kollha tal-amministratur, u fl-istess ħin jikkonfigura l-API tal-cluster. Dan huwa kemm huwa faċli li tikseb aċċess amministratur għal, naħseb, 98% tal-clusters ta 'Kubernetes.

Nirrepeti, dan il-pod kien magħmul minn żviluppatur wieħed fil-cluster tiegħek li għandu aċċess biex juża l-proposti tiegħu fi spazju tal-isem żgħir wieħed, huwa kollu kklampjat mill-RBAC. Ma kellu l-ebda drittijiet. Iżda madankollu ċ-ċertifikat ġie rritornat.

U issa dwar pod ippreparat apposta. Aħna imexxuha fuq kwalunkwe immaġini. Ejja nieħdu debian:jessie bħala eżempju.

Għandna din il-ħaġa:

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

X'inhi t-tolleranza? Il-kaptani fi cluster Kubernetes huma ġeneralment immarkati b'xi ħaġa msejħa taint. U l-essenza ta 'din l-"infezzjoni" hija li tgħid li l-imżiewed ma jistgħux jiġu assenjati lil nodi prinċipali. Imma ħadd ma jiddejjaq jindika fi kwalunkwe pod li huwa tolleranti għall-"infezzjoni". It-taqsima tat-Tollerazzjoni tgħid biss li jekk xi node għandu NoSchedule, allura n-nodu tagħna huwa tolleranti għal infezzjoni bħal din - u m'hemm l-ebda problemi.

Barra minn hekk, ngħidu li taħt tagħna mhux biss huwa tolleranti, iżda jrid ukoll jimmira speċifikament lill-kaptan. Minħabba li l-kaptani għandhom l-aktar ħaġa delizzjuża li għandna bżonn - iċ-ċertifikati kollha. Għalhekk, ngħidu nodeSelector - u għandna tikketta standard fuq il-kaptani, li tippermettilek tagħżel min-nodi kollha fil-cluster eżattament dawk in-nodi li huma kaptani.

B’dawn iż-żewġ taqsimiet żgur li se jasal għand il-kaptan. U se jitħalla jgħix hemm.

Imma li niġu għand il-kaptan mhux biżżejjed għalina. Dan mhu se jagħtina xejn. Allura jmiss għandna dawn iż-żewġ affarijiet:

hostNetwork: true 
hostPID: true 

Aħna nispeċifikaw li l-pod tagħna, li nniedu, se jgħix fl-ispazju tal-isem tal-kernel, fl-ispazju tal-isem tan-netwerk, u fl-ispazju tal-isem PID. Ladarba l-pod jiġi mniedi fuq il-kaptan, ikun jista 'jara l-interfaces reali u ħajjin kollha ta' dan in-node, jisma 't-traffiku kollu u jara l-PID tal-proċessi kollha.

Imbagħad hija kwistjoni ta 'affarijiet żgħar. Ħu etcd u aqra dak li trid.

L-iktar ħaġa interessanti hija din il-karatteristika Kubernetes, li hija preżenti hemmhekk awtomatikament.

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

U l-essenza tagħha hija li nistgħu ngħidu fil-pod li nniedu, anke mingħajr drittijiet għal dan il-cluster, li rridu noħolqu volum ta 'tip hostPath. Dan ifisser li nieħdu t-triq mill-ospitant li fuqu se nniedu - u nieħduha bħala volum. U allura nsejħulha isem: ospitanti. Aħna mmuntaw dan hostPath kollu ġewwa l-pod. F'dan l-eżempju, għad-direttorju /host.

Ser nirrepetiha mill-ġdid. Aħna għidna lill-pod biex jasal għand il-kaptan, iġib l-hostNetwork u l-hostPID hemmhekk - u mmunta l-għerq kollu tal-kaptan ġewwa dan il-pod.

Tifhem li f'Debian għandna bash running, u dan bash jaħdem taħt l-għeruq. Jiġifieri, għadna kemm irċevejna l-għeruq fuq il-kaptan, mingħajr ma jkollna l-ebda drittijiet fil-cluster Kubernetes.

Imbagħad il-kompitu kollu huwa li tmur fis-subdirettorju /host /etc/kubernetes/pki, jekk ma nkunx żbaljat, aqbad iċ-ċertifikati prinċipali kollha tal-cluster hemmhekk u, għaldaqstant, issir l-amministratur tal-cluster.

Jekk tħares lejha b'dan il-mod, dawn huma wħud mill-aktar drittijiet perikolużi fil-miżwed - irrispettivament minn liema drittijiet għandu l-utent:
It-twaħħil ta 'toqob fil-cluster Kubernetes. Rapport u traskrizzjoni minn DevOpsConf

Jekk għandi d-drittijiet biex inmexxi pod f'xi spazju tal-isem tal-cluster, allura dan il-pod għandu dawn id-drittijiet awtomatikament. Kapaċi nmexxi l-imżiewed privileġġjati, u dawn huma ġeneralment id-drittijiet kollha, prattikament għerq fuq in-node.

Il-favorit tiegħi huwa l-utent Root. U Kubernetes għandu din l-għażla Run As Non-Root. Dan huwa tip ta 'protezzjoni minn hacker. Taf x'inhu l-"virus tal-Moldova"? Jekk f'daqqa waħda tkun hacker u tasal għand il-cluster tiegħi tal-Kubernetes, allura aħna, amministraturi foqra, nistaqsu: "Jekk jogħġbok indika fil-miżwed tiegħek li bihom se tħassar il-cluster tiegħi, mexxi bħala mhux root. Inkella, jiġri li inti tmexxi l-proċess fil-pod tiegħek taħt l-għeruq, u se jkun faċli ħafna għalik li Hack me. Jekk jogħġbok ipproteġi lilek innifsek minnek innifsek."

Il-volum tal-passaġġ ospitanti huwa, fl-opinjoni tiegħi, l-iktar mod mgħaġġel biex tikseb ir-riżultat mixtieq minn cluster Kubernetes.

Imma x'għandek tagħmel b'dan kollu?

Il-ħsieb li għandu jasal għal kull amministratur normali li jiltaqa' ma' Kubernetes huwa: "Iva, għedtlek, Kubernetes ma jaħdimx. Hemm toqob fiha. U l-Kubu kollu huwa ħelu.” Fil-fatt, hemm xi ħaġa bħal dokumentazzjoni, u jekk tħares hemm, hemm sezzjoni Politika tas-Sigurtà tal-Pods.

Dan huwa oġġett yaml - nistgħu noħolquh fil-cluster Kubernetes - li jikkontrolla l-aspetti tas-sigurtà speċifikament fid-deskrizzjoni tal-imżiewed. Jiġifieri, fil-fatt, tikkontrolla d-drittijiet biex tuża kwalunkwe hostNetwork, hostPID, ċerti tipi ta 'volum li huma fil-miżwed fl-istartjar. Bl-għajnuna ta 'Pod Security Policy, dan kollu jista' jiġi deskritt.

L-iktar ħaġa interessanti dwar il-Politika tas-Sigurtà tal-Pods hija li fil-cluster Kubernetes, l-installaturi kollha tal-PSP mhumiex biss deskritti bl-ebda mod, huma sempliċement diżattivati ​​awtomatikament. Il-Politika tas-Sigurtà tal-Pod hija attivata bl-użu tal-plugin tad-dħul.

Tajjeb, ejja niskjeraw il-Politika tas-Sigurtà tal-Pods fil-cluster, ejja ngħidu li għandna xi pods tas-servizz fl-ispazju tal-isem, li l-amministraturi biss għandhom aċċess għalihom. Ejja ngħidu, fil-każijiet l-oħra kollha, il-miżwed għandhom drittijiet limitati. Minħabba li l-iżviluppaturi x'aktarx m'għandhomx għalfejn imexxu pods privileġġjati fil-cluster tiegħek.

U kollox jidher li hu tajjeb magħna. U l-cluster Kubernetes tagħna ma jistax jiġi hacked f'żewġ minuti.

Hemm problema. X'aktarx, jekk għandek cluster Kubernetes, allura l-monitoraġġ huwa installat fuq il-cluster tiegħek. Jien saħansitra mmur biex inbassar li jekk il-cluster tiegħek ikollu monitoraġġ, se jissejjaħ Prometheus.

Dak li ser ngħidlek se jkun validu kemm għall-operatur Prometheus kif ukoll għall-Prometheus ikkunsinnat fil-forma pura tiegħu. Il-mistoqsija hija li jekk ma nistax indaħħal admin fil-cluster daqshekk malajr, allura dan ifisser li għandi bżonn infittex aktar. U nista' nfittex bl-għajnuna tal-monitoraġġ tiegħek.

Probabbilment kulħadd jaqra l-istess artikli fuq Habré, u l-monitoraġġ jinsab fl-ispazju tal-isem tal-monitoraġġ. Iċ-ċart tat-tmun jissejjaħ bejn wieħed u ieħor l-istess għal kulħadd. I'm guessing li jekk inti tagħmel helm install stable/prometheus, inti ser tispiċċa bejn wieħed u ieħor l-istess ismijiet. U x'aktarx lanqas se jkolli naħseb l-isem tad-DNS fil-cluster tiegħek. Minħabba li huwa standard.

It-twaħħil ta 'toqob fil-cluster Kubernetes. Rapport u traskrizzjoni minn DevOpsConf

Sussegwentement għandna ċertu dev ns, li fihom tista 'taħdem ċertu pod. U mbagħad minn dan il-pod huwa faċli ħafna li tagħmel xi ħaġa bħal din:

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

prometheus-kube-state-metrics huwa wieħed mill-esportaturi Prometheus li jiġbor metriċi mill-API Kubernetes innifsu. Hemm ħafna dejta hemmhekk, x'inhu għaddej fil-cluster tiegħek, x'inhu, x'problemi għandek magħha.

Bħala eżempju sempliċi:

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

Billi tagħmel talba sempliċi curl minn pod mhux privileġġjat, tista 'tikseb l-informazzjoni li ġejja. Jekk ma tafx liema verżjoni ta' Kubernetes qed tħaddem, faċilment jgħidlek.

U l-iktar ħaġa interessanti hija li minbarra li taċċessa l-kube-state-metrics, tista' daqstant faċli taċċessa Prometheus innifsu direttament. Tista 'tiġbor metriċi minn hemm. Tista 'anki tibni metriċi minn hemm. Anke teoretikament, tista 'tibni tali mistoqsija minn raggruppament fi Prometheus, li sempliċement itfiha. U l-monitoraġġ tiegħek se jieqaf jaħdem mill-cluster għal kollox.

U hawn tqum il-mistoqsija jekk xi monitoraġġ estern jimmonitorjax il-monitoraġġ tiegħek. Għadni kemm sibt l-opportunità li nopera fi cluster Kubernetes mingħajr ebda konsegwenzi għalija nnifsi. Lanqas se tkun taf li qed nopera hemm, peress li m'għadx hemm monitoraġġ.

L-istess bħall-PSP, tħoss li l-problema hija li dawn it-teknoloġiji kollha fancy - Kubernetes, Prometheus - sempliċement ma jaħdmux u huma mimlija toqob. Mhux ezatt.

Hemm ħaġa bħal din - Politika tan-Netwerk.

Jekk inti admin normali, allura x'aktarx li taf dwar il-Politika tan-Netwerk li dan huwa biss yaml ieħor, li diġà hemm ħafna minnhom fil-cluster. U xi Politiki tan-Netwerk żgur mhumiex meħtieġa. U anki jekk taqra x'inhi l-Politika tan-Netwerk, li hija yaml firewall ta 'Kubernetes, tippermettilek tillimita d-drittijiet ta' aċċess bejn namespaces, bejn il-miżwed, allura ċertament iddeċidejt li l-firewall f'format yaml f'Kubernetes huwa bbażat fuq l-astrazzjonijiet li jmiss. ... Le, le. Dan żgur mhux meħtieġ.

Anke jekk ma għidtx lill-ispeċjalisti tas-sigurtà tiegħek li billi tuża l-Kubernetes tiegħek tista 'tibni firewall faċli ħafna u sempliċi, u wieħed granulari ħafna. Jekk għadhom ma jafux dan u ma jdejqukx: “Well, agħtini, agħtini...” Imbagħad fi kwalunkwe każ, għandek bżonn Network Policy biex timblokka l-aċċess għal xi postijiet tas-servizz li jistgħu jinġibdu mill-cluster tiegħek mingħajr ebda awtorizzazzjoni.

Bħal fl-eżempju li tajt, tista 'tiġbed il-metriċi tal-istat kube minn kwalunkwe spazju tal-isem fil-cluster Kubernetes mingħajr ma jkollok ebda drittijiet biex tagħmel dan. Il-politiki tan-netwerk għalqu aċċess mill-ispazji tal-isem l-oħra kollha għall-ispazju tal-isem tal-monitoraġġ u dak hu: l-ebda aċċess, l-ebda problemi. Fil-mapep kollha li jeżistu, kemm il-Prometheus standard kif ukoll il-Prometheus li jinsab fl-operatur, hemm sempliċement għażla fil-valuri tat-tmun biex sempliċement tippermettilhom politiki tan-netwerk. Għandek bżonn biss li tixgħel u dawn se jaħdmu.

Hemm verament problema waħda hawn. Peress li hija admin normali tad-daqna, inti x'aktarx iddeċidejt li l-politiki tan-netwerk mhumiex meħtieġa. U wara li qrajt kull xorta ta 'artikoli dwar riżorsi bħal Habr, iddeċidejt li l-flanella, speċjalment bil-modalità host-gateway, hija l-aħjar ħaġa li tista' tagħżel.

X'għandek tagħmel?

Tista' tipprova tiskjera mill-ġdid is-soluzzjoni tan-netwerk li għandek fil-cluster Kubernetes tiegħek, ipprova tibdilha b'xi ħaġa aktar funzjonali. Għall-istess Calico, pereżempju. Imma rrid ngħid mill-ewwel li l-kompitu li tinbidel is-soluzzjoni tan-netwerk f'grupp ta 'ħidma Kubernetes huwa pjuttost mhux trivjali. Sollejtha darbtejn (iż-żewġ drabi, madankollu, teoretikament), imma anke wrejna kif nagħmluha fi Slurms. Għall-istudenti tagħna, urejna kif nibdlu s-soluzzjoni tan-netwerk fi cluster Kubernetes. Fil-prinċipju, tista 'tipprova tiżgura li ma jkunx hemm ħin ta' waqfien fuq il-grupp tal-produzzjoni. Imma inti probabilment mhux se tirnexxi.

U l-problema hija attwalment solvuta b'mod sempliċi ħafna. Hemm ċertifikati fil-cluster, u taf li ċ-ċertifikati tiegħek jiskadu f'sena. Ukoll, ġeneralment soluzzjoni normali b'ċertifikati f'raggruppament - għaliex qed ninkwetaw, aħna ngħollu raggruppament ġdid fil-qrib, inħallu l-qadim immuffat, u nerġgħu niskjeraw kollox. Veru, meta jmur immuffat, ikollna noqogħdu għal ġurnata, iżda hawn raggruppament ġdid.

Meta tgħolli grupp ġdid, fl-istess ħin daħħal Calico minflok flanella.

X'għandek tagħmel jekk iċ-ċertifikati tiegħek jinħarġu għal mitt sena u m'intix se terġa' tiskja l-cluster? Hemm ħaġa bħal Kube-RBAC-Proxy. Dan huwa żvilupp jibred ħafna, jippermettilek li tiddaħħal ruħha bħala kontenitur sidecar għal kwalunkwe pod fil-cluster Kubernetes. U fil-fatt iżid awtorizzazzjoni għal dan il-pod permezz ta 'RBAC ta' Kubernetes innifsu.

Hemm problema waħda. Preċedentement, din is-soluzzjoni Kube-RBAC-Proxy kienet mibnija fil-Prometheus tal-operatur. Imma mbagħad kien telaq. Issa verżjonijiet moderni jiddependu fuq il-fatt li għandek politika tan-netwerk u tagħlaqha tużahom. U għalhekk ikollna nerġgħu niktbu l-grafika ftit. Fil-fatt, jekk tmur dan ir-repożitorju, hemm eżempji ta 'kif tuża dan bħala sidecars, u l-mapep se jkollhom jiġu miktuba mill-ġdid minimament.

Hemm problema żgħira oħra. Prometheus mhuwiex l-uniku wieħed li jqassam il-metriċi tiegħu lil kulħadd. Il-komponenti kollha tal-cluster Kubernetes tagħna huma wkoll kapaċi jirritornaw il-metriċi tagħhom stess.

Imma kif diġà għedt, jekk ma tistax taċċessa l-cluster u tiġbor informazzjoni, allura tista 'mill-inqas tagħmel xi ħsara.

Allura ser nuri malajr żewġ modi kif cluster Kubernetes jista 'jiġi mħassar.

Tidħaq meta ngħidlek dan, dawn huma żewġ każi tal-ħajja reali.

Metodu wieħed. Tnaqqis tar-riżorsi.

Ejja nniedu pod speċjali ieħor. Ikollha sezzjoni bħal din.

resources: 
    requests: 
        cpu: 4 
        memory: 4Gi 

Kif tafu, it-talbiet huwa l-ammont ta 'CPU u memorja li huwa riżervat fuq l-ospitant għal imżiewed speċifiċi b'talbiet. Jekk ikollna host b'erba 'qalba f'raggruppament ta' Kubernetes, u erba 'miżwed tas-CPU jaslu hemm b'talbiet, dan ifisser li mhux aktar imżiewed b'talbiet ma jkunu jistgħu jaslu għand dan l-ospitant.

Jekk inmexxi pod bħal dan, allura nmexxi l-kmand:

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

Imbagħad ħadd ieħor ma jkun jista 'jiskjera fil-cluster Kubernetes. Minħabba li n-nodi kollha se jispiċċaw mit-talbiet. U għalhekk se nwaqqaf il-grupp Kubernetes tiegħek. Jekk nagħmel dan filgħaxija, nista' nwaqqaf l-iskjeramenti għal żmien pjuttost twil.

Jekk nerġgħu nħarsu lejn id-dokumentazzjoni ta 'Kubernetes, se naraw din il-ħaġa msejħa Limit Range. Hija tistabbilixxi riżorsi għall-oġġetti cluster. Tista' tikteb oġġett Limit Range f'yaml, tapplikah għal ċerti namespaces - u mbagħad f'dan namespace tista' tgħid li għandek riżorsi default, massimi u minimi għall-imżiewed.

Bl-għajnuna ta 'tali ħaġa, nistgħu nillimitaw l-utenti fi spazji tal-isem tal-prodotti speċifiċi ta' timijiet fil-kapaċità li jindikaw kull xorta ta 'affarijiet diżgustanti fuq il-miżwed tagħhom. Iżda sfortunatament, anki jekk tgħid lill-utent li ma jistgħux iniedu pods b'talbiet għal aktar minn CPU wieħed, hemm kmand ta 'skala meraviljuż bħal dan, jew jistgħu jagħmlu skala permezz tad-dashboard.

U dan huwa minn fejn ġej il-metodu numru tnejn. Inniedu 11 imżiewed. Dak hu ħdax-il biljun. Dan mhux għax ħriġt b’tali numru, imma għax rajtu jien.

Storja vera. Tard filgħaxija kont se nitlaq mill-uffiċċju. Nara grupp ta 'żviluppaturi bilqiegħda fil-kantuniera, frantically jagħmlu xi ħaġa bil-laptops tagħhom. Immur għand il-ġuvinti u nistaqsi: “X’ġaralek?”

Ftit qabel, għall-ħabta tad-disgħa ta’ filgħaxija, wieħed mill-iżviluppaturi kien qed iħejji biex imur id-dar. U ddeċidejt: "Issa nnaqqas l-applikazzjoni tiegħi għal waħda." I ippressat waħda, iżda l-Internet naqas ftit. Huwa ppressa l-waħda mill-ġdid, huwa ppressat l-waħda, u kklikkja Daħħal. I poked fuq dak kollu li stajt. Imbagħad l-Internet ħa l-ħajja - u kollox beda jonqos għal dan in-numru.

Veru, din l-istorja ma seħħitx fuq Kubernetes; dak iż-żmien kienet Nomad. Intemmet bil-fatt li wara siegħa ta’ attentati tagħna biex inwaqqfu lil Nomad minn tentattivi persistenti ta’ skala, Nomad wieġeb li ma kienx se jieqaf jiskala u ma kien se jagħmel xejn aktar. "Jien għajjien, se nitlaq." U hu indivja.

Naturalment, ippruvajt nagħmel l-istess fuq Kubernetes. Kubernetes ma kienx kuntent bi ħdax-il biljun imżiewed, huwa qal: "Ma nistax. Jeċċedi l-gwardji tal-ħalq interni." Iżda 1 miżwed jistgħu.

Bi tweġiba għal biljun, il-Kubu ma rtirax fih innifsu. Huwa verament beda jiskala. Iktar ma kompla l-proċess, aktar ħadu żmien biex joħloq imżiewed ġodda. Iżda xorta waħda l-proċess kompla. L-unika problema hija li jekk nista 'nniedi l-imżiewed illimitat fl-ispazju tal-isem tiegħi, allura anke mingħajr talbiet u limiti nista' nniedi tant pods b'xi kompiti li bl-għajnuna ta 'dawn il-kompiti n-nodi jibdew jammontaw fil-memorja, fis-CPU. Meta nniedi tant imżiewed, l-informazzjoni minnhom għandha tidħol fil-ħażna, jiġifieri, eċċd. U meta tasal wisq informazzjoni hemm, il-ħażna tibda terġa 'lura bil-mod wisq - u Kubernetes jibda jsir matt.

U problema oħra... Kif tafu, l-elementi ta 'kontroll Kubernetes mhumiex ħaġa ċentrali waħda, iżda diversi komponenti. B'mod partikolari, hemm maniġer kontrollur, scheduler, eċċ. Dawn il-ġuvini kollha se jibdew jagħmlu xogħol mhux meħtieġ u stupid fl-istess ħin, li maż-żmien se jibda jieħu aktar u aktar ħin. Il-maniġer tal-kontrollur se joħloq imżiewed ġodda. Scheduler se jipprova jsib node ġdid għalihom. X'aktarx se jispiċċaw mingħajr nodi ġodda fil-cluster tiegħek dalwaqt. Il-cluster Kubernetes se jibda jaħdem dejjem aktar bil-mod.

Imma ddeċidejt li mmur saħansitra aktar. Kif tafu, f'Kubernetes hemm ħaġa bħal din imsejħa servizz. Ukoll, b'mod awtomatiku fil-clusters tiegħek, x'aktarx, is-servizz jaħdem bl-użu ta 'tabelli IP.

Jekk tmexxi biljun pods, pereżempju, u mbagħad tuża skript biex iġiegħel lil Kubernetis joħloq servizzi ġodda:

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

Fuq in-nodi kollha tal-cluster, se jiġu ġġenerati aktar u aktar regoli iptables ġodda bejn wieħed u ieħor simultanjament. Barra minn hekk, se jiġu ġġenerati biljun regola iptables għal kull servizz.

Iċċekkja din il-ħaġa sħiħa fuq diversi eluf, sa għaxra. U l-problema hija li diġà f'dan il-limitu huwa pjuttost problematiku li tagħmel ssh man-node. Għax il-pakketti, għaddejjin minn tant ktajjen, jibdew iħossuhom mhux tajbin ħafna.

U dan, ukoll, huwa kollu solvut bl-għajnuna ta 'Kubernetes. Hemm tali oġġett tal-kwota tar-Riżorsi. Issettja n-numru ta' riżorsi u oġġetti disponibbli għall-ispazju tal-isem fil-cluster. Nistgħu noħolqu oġġett yaml f'kull namespace tal-cluster Kubernetes. Bl-użu ta 'dan l-oġġett, nistgħu ngħidu li għandna ċertu numru ta' talbiet u limiti allokati għal dan l-ispazju tal-isem, u allura nistgħu ngħidu li f'dan l-ispazju tal-isem huwa possibbli li jinħolqu 10 servizzi u 10 pods. U żviluppatur wieħed jista 'mill-inqas jifga lilu nnifsu filgħaxija. Kubernetes jgħidlu: "Ma tistax tiskala l-imżiewed tiegħek għal dak l-ammont, għax ir-riżors taqbeż il-kwota." Dak hu, problema solvuta. Dokumentazzjoni hawn.

F'dan ir-rigward iqum punt wieħed problematiku. Tħoss kemm qed isir diffiċli li toħloq namespace f'Kubernetes. Biex noħolqu, jeħtieġ li nqisu ħafna affarijiet.

Kwota tar-riżorsi + Limitu Medda + RBAC
• Oħloq namespace
• Oħloq limitrange ġewwa
• Oħloq ġewwa kwota tar-riżorsi
• Oħloq serviceaccount għal CI
• Oħloq rabta ta' rwoli għal CI u utenti
• B'għażla tniedi l-imżiewed tas-servizz meħtieġa

Għalhekk, nixtieq nieħu din l-opportunità biex naqsam l-iżviluppi tiegħi. Hemm ħaġa bħal din imsejħa l-operatur SDK. Dan huwa mod kif cluster Kubernetes jikteb operaturi għalih. Tista' tikteb stqarrijiet billi tuża Ansible.

Għall-ewwel kien miktub f'Ansible, u mbagħad rajt li kien hemm operatur SDK u ktibt mill-ġdid ir-rwol Ansible f'operatur. Din id-dikjarazzjoni tippermettilek toħloq oġġett fil-cluster Kubernetes imsejjaħ kmand. Ġewwa kmand, jippermettilek tiddeskrivi l-ambjent għal dan il-kmand f'yaml. U fi ħdan l-ambjent tat-tim, jippermettilna niddeskrivu li qed nallokaw tant riżorsi.

Ftit jagħmlu dan il-proċess kumpless kollu aktar faċli.

U bħala konklużjoni. X'għandek tagħmel b'dan kollu?
L-ewwel. Il-Politika tas-Sigurtà tal-Pod hija tajba. U minkejja l-fatt li ħadd mill-installaturi ta 'Kubernetes ma jużahom sal-lum, xorta trid tużahom fil-clusters tiegħek.

Il-Politika tan-Netwerk mhix biss fattur ieħor mhux meħtieġ. Dan huwa dak li huwa verament meħtieġ fi cluster.

LimitRange/ResourceQuota - wasal iż-żmien li tużah. Bdejna nużaw dan żmien twil ilu, u għal żmien twil kont ċert li kulħadd kien qed jużah. Irriżulta li dan huwa rari.

Minbarra dak li semmejt waqt ir-rapport, hemm karatteristiċi mhux dokumentati li jippermettulek tattakka l-cluster. Maħruġa reċentement analiżi estensiva tal-vulnerabbiltajiet Kubernetes.

Xi affarijiet huma tant imdejjaq u jweġġgħu. Pereżempju, taħt ċerti kundizzjonijiet, cubelets fi cluster Kubernetes jistgħu jagħtu l-kontenut tad-direttorju tal-warlocks lil utent mhux awtorizzat.

Hawnhekk Hemm struzzjonijiet dwar kif tirriproduċi dak kollu li għedtilkom. Hemm fajls b'eżempji ta' produzzjoni ta' kif jidhru ResourceQuota u Pod Security Policy. U tista’ tmiss dan kollu.

Grazzi lil kulhadd.

Sors: www.habr.com

Żid kumment