Figens foramina in botro Kubernetes. Report et transcript ex DevOpsConf

Pavel Selivanov, architectus et Slurm magister solutionum Southbridge, praesentationem dederunt apud DevOpsConf 2019. Haec disputatio pertinet ad unum ex argumentis profundi cursus in Kubernetes "Slurm Mega".

Slurm Basic: Introductio ad Kubernetes fit Moscuae die mensis Novembris anno 18-20.
Slurm Mega: vultus sub cucullo Kubernetes — Moscoviae, 22-24 Novembris.
Slurm Online: tum cursus Kubernetes semper in promptu.

Infra incisum est transcriptum relationis.

Salve, collegae et qui cum illis compatiuntur. Hodie de salute loquar.

Video multos custodes securitatis hodie in aula esse. Vobis in antecessum veniam si utar verbis securitatis ex mundo non prorsus ut pro vobis solet.

Accidit ut abhinc sex menses circiter unum botrum Kubernetes publicum invenissem. Publicum significat numerum nominum inesse, in his spatiis utentes in nominibus eorum separatim sunt. Omnes hi utentes ad diversas societates pertinent. Hoc botrum pro CDN positum est. Hoc est, dant tibi botrum, dant tibi usorem ibi, ibis ad nomen tuum, explica frontes tuas.

Prior societas mea tali servitio vendere conatus est. Et interrogatus sum ut videam si hec solutio botrum conve- niat vel non.

Veni ad botrum hunc. Limitata iura data sunt, spatiis definitis. Guys ibi intellexerunt, quanta salus esset. Legunt de muneribus substructis in Kubernetes accessum dominii (RBAC) in Kubernetes - idque ita torquebant ut siliquas ab inceptis seorsim mittere non possem. Non memini me problema quod vasculum sine instruere moliebatur solvere, sed vere tantum folliculum mittere volui. Pro fortuna, decrevi videre quid iuris in botro habeo, quid possum, quid non possum, et quid illic adveni. Simul, dicam quod in RBAC male configurarunt.

Ita factum est ut duobus minutis admin in botrum acceptis, omnia nomina proxima intuens, vidit ibi frontem productivam societatum quae iam servitium emerat et instruit. Vix me prohibere potui quin ad aliquem iret in fronte et aliquod verbum iurare in pagina maxima.

Dicam exempla quomodo hoc fecerim et quomodo te ab hoc defendas.

Sed primum me introducam. Nomen mihi est Pavel Selivanov. Ego Southbridge me architectus est. Intelligo Kubernetes, DevOpes et omnia phantasiae genera. fabrum Southbridge et haec omnia aedifico et consulo.

Praeter principales actiones nostras, nuper incepta quae Slurms immissa sunt. Conamur facultatem nostram operam dare cum Kubernetes ad missas aliquantulum, ut alios homines doceat ut K8s etiam laboret.

Quid dicam hodie? Argumentum relationis evidens est - de securitate botri Kubernetes. Sed ilicet dicere volo hunc locum amplissimum esse - ideoque statim declarare cupio quid de certo non dicam. Nolo loqui de verbis pervulgatis quae iam centies in Interreti adhibita sunt. Omnes generis RBAC et testimoniales.

Loquar de quibus piget me et collegae meos de securitate in Kubernetes Botri. Haec problemata videmus tum inter provisores qui Kubernetes ligaturas praebent, et inter clientes qui ad nos veniunt. Et etiam ex clientibus qui ad nos veniunt ex aliis societatibus admin consulentes. Id est, scala tragoedia est actu maxima.

Tria proprie sunt puncta quae hodie loquar;

  1. Usoris iura nobis pod iura. Iura usoris et legumen idem non sunt.
  2. Notitias de botro. Ostendam quod omnia informationes quas debes ex botro colligere potes sine speciali iure in hoc botro.
  3. DoS impetum in botrum. Si informationes colligere non possumus, botrum certe ponere poterimus. Loquar de impetus DoS in botro elementorum potestate.

Aliud generale est, quod dicam, quod omnia probata sunt, in quibus omnia opera esse certo possum dicere.

Fundamentum accipimus institutionem botri Kubernetti utentis Kubespray. Si quis nescit, hoc actu munus est Ansible. Assidue utimur in opere nostro. Bonum est quod usquam volvi potes - in frusta ferrea aut in nubem alicubi volvere potes. Modus institutionis una in principio ad omnia operatur.

In hoc botro habebo Kubernetes v1.14.5. Totus botrus Cubus, quem considerabimus, in spatiis nomina divisum est, singula nomina spatii ad equos separatos pertinet, et membra huius societatis accessum habent ad unumquemque spatium nominandi. Ad nomina diversa ire non possunt, nisi ad sua. Sed ratio quaedam est quae iura in totum botrum habet.

Figens foramina in botro Kubernetes. Report et transcript ex DevOpsConf

Promisi quod prius facturi sumus admin jura botri. Opus speciale paratum nobis vasculum quod Kubernetes botrum franget. Omnes, quae facere debemus, ad botrum Kubernetes applicant.

kubectl apply -f pod.yaml

Hoc vasculum ad unum botrum dominorum Kubernetarum perveniet. Et post hoc botrus laetus ad nos redibit fasciculum vocatum admin.conf. In Cube, haec fasciculus omnes libellos administratorum reponit et simul botrum API configurat. Haec quam facilis sit aditus ad accessum ad XCVIII% of Kubernetes ligaturas puto.

Hoc vasculum, inquam, factum est ab uno elit in botro tuo, qui aditus ad suas propositiones in unum parvum spatium explicandum habet, totum per RBAC coagmentatum est. Iura nulla erat. Sed tamen testimonium redditum est.

Et nunc fere vasculum preparatum. Currimus in aliquam imaginem. Debian: jessie in exemplum sumamus.

Hanc rem habemus;

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

Quid est tolerantia? Magistri in botro Kubernetes notari solent aliqua labem dicta. Et huius essentiae infectio est quod dicit quod siliquis nodis dominis assignari non potest. Sed nemo vexat indicare in aliquo vasculo quod ad "infectio" tolerandum sit. Toleratio sectionis modo dicit quod si aliquis nodi NoSchedule habet, tunc nodi nostri talem contagionem tolerant - et nullae sunt difficultates.

Praeterea, dicitur quod subditus noster non solum patiens est, sed etiam dominus specialiter vult oppugnare. Quia dominos habent rem gratissimam nobis opus est - omnes testimoniales. Ideo "nodeSelector" dicimus - et titulum habemus in dominis signum, quod permittit ut ex omnibus nodis in botro illos nodi magistros eligas.

His duabus partibus ad magistrum certum veniet. et ibi vivere licebit.

Sed mox accedens ad dominum non sufficit nobis. Hoc nihil nobis dabit. Iam ergo haec duo;

hostNetwork: true 
hostPID: true 

Denominamus vasculum nostrum, quod immittimus, in spatio nucleo, in spatio retis, in nomine PID victurum esse. Vasculum semel in dominum immissum, omnia vera videre poteris, interfaces huius nodi vivere, omnes negotiationes audi et omnium processuum PID videre.

Tum res parvae est. Accipe etcd et lege quod vis.

Maxime interesting res haec pluma Kubernetes, quae illic defalta est.

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

Essentia eius est quod dicere possumus in vasculo quod immittimus, etiam sine iuribus ad hunc botrum, quod volumus facere volumen typus hostPath. Hoc significat iter ab hospite in quem deducemus - sumentes et in volumine accipientes. Et inde appellamus nomen: exercitum. Totam hanc hostPath intra vasculum conscendimus. In hoc exemplo ad directorium /militiae.

Iterum repetam. Diximus vasculum ut ad dominum veniret, hostNetwork et hostPID ibi habe - et totam radicem domini intra hoc vasculum conscende.

Intelligis in Debiano currentem habere, et hic vercundus sub radice currit. Hinc est, quod nos sicut radicem in domino recepimus, sine omni iure in botro Kubernetes.

Tum totum opus est sub directorio /hostis /etc/kubernetes/pki adire, ni fallor, omnes libellos magistri botri ibi collige et proinde administrator botri factus est.

Si hoc modo spectes, hae sunt quaedam iura periculosissima in siliquis - cuiuscumque iuris usor habet;
Figens foramina in botro Kubernetes. Report et transcript ex DevOpsConf

Si ius habeo ut decurrat vasculum in aliquo nomine botri, tunc hoc vasculum haec iura habet defaltam. Siliquae privilegiatae currere possum, et haec fere omnia iura, in nodo fere radicem habent.

Mea ventus est radix user. Et Kubernetes hoc habet Curre Ut optio Non Radix. Hoc genus praesidii ab piratica est. Scisne quid sit "virus Moldavianum"? Si subito es piratica et ad botrum meum Kubernetes veneritis, tunc nos, pauperes administratores, rogamus: “Indica quaeso in legumine tuo quo botrum meum lacerabis, quasi non-radice currite. Alioquin fiet ut processus in podagra tua sub radice curris, et perfacile erit tibi me concidere. Quaeso te a te defende."

Exercitum iter volumen est, ut mea fert opinio, via celerrima ad optatum exitum botri Kubernetes consequendum.

Sed quid ad haec?

Cogitatio quae debet venire ad aliquem administratorem normalem qui Kubernetes incurrit est: "Ye, dixi tibi, Kubernetes non operatur. Sunt perforata. Totus autem Cubus bullshit. Re quidem vera documenta talis est, et si ibi spectes, pars est Vasculum Securitatis.

Hoc objectum est yaml - illud creare possumus in botro Kubernetes - quod aspectus securitatis specie in descriptione siliquarum moderatur. Id est, re vera, iura moderatur ut quavis hostNetwork, hostPID, quaedam voluminis genera quae in legumine at startup sunt. Ope Podi Securitatis Policy, haec omnia describi possunt.

Maxime interesting res de politia Securitatis Pod est quod in botro Kubernetes, omnes PSP installarii non modo nullo modo descripti sunt, simpliciter per defaltam debilitati sunt. Podcus Securitatis ratio utilis est utens plugin admissione.

Bene, pangamus in botro Pod Securitatis, dicamus nos habere aliquod opusculum in spatio nominali, ad quod accessum solum admins habemus. Dicamus, in omnibus aliis casibus, leguminis iura stricta habere. Quia maxime verisimile est tincidunt non necessariam siliquam privilegiatam currere in botro tuo.

Et omnia bene nobiscum videntur. Et nostri Kubernetes botri duobus minutis detruncari non possunt.

Difficultas. Maxime, si botrum Kubernetes habes, tunc vigilantia in botro tuo inauguratus est. Ego vel eo usque praedicem, si vigilantia tua botrus habet, Prometheus vocabitur.

Quod dicturus sum tibi valebit tam operatrix Promethei et Prometheus in pura forma tradita. Quaeritur quod si tam cito admin in botrum non possum adipisci, id significat quod magis debeo quaerere. Et ope vigilantia tua investigare possum.

Probabiliter omnes eadem capitula in Habre legunt, et vigilantia in spatio pervigili ponitur. Chara Helm fere eadem apud omnes dicitur. Conicio, si gubernacula feceris stabilitatem/prometheum instituere, eadem fere nomina finem habebis. Ac verisimile est, ne nomen quidem DNS in botro tuo suspicari debeam. Quia signum est.

Figens foramina in botro Kubernetes. Report et transcript ex DevOpsConf

Deinde habemus quoddam dev ns, in quo potest vasculum quoddam currere. Et tunc ex hoc vasculo perfacile est aliquid simile hoc facere;

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

prometheus-kube-state-metricus unus est e Promethei exportatoribus qui metrice e Kubernetes ipsum API collecti sunt. Illic data multum est, quid in botro currit, quid sit, quid problemata secum habeat.

Simplex exemplum;

kube_pod_continens_info{namespace="kube-systema", pod= "kube-apiserver-k8s- 1″, continens = "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

Si Crispum simplicem rogationem de vasculo invicto faciens, sequentia notitia consequi potes. Si nescias quam versionem Kubernetes curris, facile tibi indicabit.

Maxime interesting res est quod praeter accessionem kube-state-metrics, tam facile ad ipsum Prometheum directe accedere potes. Hinc metri rationem colligere potes. Etiam metrice inde aedificare potes. Etiam speculativam quaestionem de botro in Prometheo construere potes, quod simpliciter avertet. Et vigilantia tua ab botro omnino cessabit.

Et hic quaestio oritur an quaevis vigilantia externa monitores tuos vigilantes facit. Modo occasionem nactus sum in botro Kubernetes operandi sine ullis consectariis ad meipsum. Etiam tu scies me ibi operari, cum nulla iam vigilantia sit.

Sicut cum PSP, sentit sicut problema est quod omnes hae technologiae phantasiae - Kubernetes, Prometheus - non solum operantur et pertusum sunt. Non realiter.

Tale est. Network Policy.

Si normalis admin es, maxime verisimile scis de Policy Network quod hoc est aliud yaml iustum, cuius iam multum in botro sunt. Et certa quaedam Network Politiae opus non est. Et si legas quid sit Policy Network quod sit yaml firewall Kubernetes, sinit te limitare iura accessum inter spatia inter siliquas, tunc certe decrevistis firewall in yaml forma in Kubernetes in altera abstractione niti. ... non, non . Hoc certe non est necessarium.

Etiamsi specialitas securitatis tuae non indicasti quod per Kubernetes tuos facillime ac simplici igni muro te aedificare potes et in eo valde granularem. Si hoc non sciunt tamen nec tibi molesti sunt: ​​“Age, da mihi, da mihi. sine ulla auctoritate.

Sicut in exemplo dedi, metricam rempublicam kube evellere potes ex quovis spatio spatii in botro Kubernetes, sine ullo iure ad id faciendum. Negotiationes rationes clausi ab omnibus aliis spatiis ad nomina spatii adipiscendi accessum et illud est: nullus aditus, nullae difficultates. In omnibus chartis, quae exstant, sive Promethei et Promethei vexillum, quod est in operante, optio simpliciter est in gubernaculis valoribus, ut opera retiacula simpliciter pro eis faciant. Vos iustus postulo vertere et operare.

Vere una quaestio est hic. Cum admin normale barbatus, maxime verisimile decrevit rationes retis non necessarias esse. Et cum perlectis omnibus articulis de facultatibus sicut Habr, decrevistis ut flannel, praesertim cum modus portae hospitis, optimum esse eligere possis.

Quid faciam?

Conare solutionem retis reddere potes quam in botro Kubernetes tuo habes, eam reponere conare cum aliquo magis functionis. Ad eundem Calico, ut. Sed statim dicere volo negotium solutionis retis mutandae in Kubernetes botri laboranti satis non-trivil. Solvi enim bis (utroque autem tempore theoretice), sed etiam Slurms id facere demonstravimus. Pro nostris alumnis ostendimus solutionem retis mutare in botro Kubernetes. In principio, efficere conemur ut nulla sit botrus productio downtime. Sed fortasse non succedet.

Solvitur etiam quaestio valde et simpliciter. Sunt testimoniales in botro, et scis quia exspirabunt testimonia tua in anno; Bene, et consueta solutio consueta cum libellis in botro - cur solliciti sumus, novum botrum propinquum excitabimus, vetus putidum eat et omnia redeplo. Verum, cum putrescit, diem sedere debebimus, sed hic botrus novus.

Cum novum botrum erigis, simul calico loco flannei inpone.

Quid facerem si testimonia tua per centum annos edantur et botrum non redis? Tale quiddam est quod Kube-RBAC-proxy. Haec evolutio frigidissima est, permittit te ut vas sidecarum in quovis vasculi botro in Kubernetes immergatur. Et addit etiam potestatem hoc vasculi per ipsum RBAC Kubernetium.

Una quaestio est. Antea solutio Kube-RBAC-Proxy aedificata est in Promethei operantis. sed tunc abiit. Nunc recentiores versiones eo nituntur quod consilium retis habes et ea utendo claude. Ideoque chartula aliquantulum rescribere debebimus. Nam si ad hoc repositioexempla sunt quomodo hac utendi parte uteris, et chartulae minime rescriptae erunt.

Unum problema maius est. Solus Prometheus non est suum quemlibet metricum tradere. Omnes nostri Kubernetes botri tium etiam metrice suo reddere possunt.

Sed, ut iam dixi, si botrum et informationem colligere non potes, saltem aliquid mali facere potes.

Cito igitur duas vias ostendam quomodo botrus Kubernetes pereat.

Ridebis cum hoc tibi dixero, hae duae verae vitae casus.

Modus unus. Resource deperditio.

Aliud vasculum speciale demus. Habebit huius modi sectionem.

resources: 
    requests: 
        cpu: 4 
        memory: 4Gi 

Ut nostis, petitiones CPU sunt quantitates et memoria quae in exercitu pro siliquis certis cum petitionibus reservatur. Si quattuor nuclei hospitem habemus in botro Kubernetes, et quattuor CPU siliquae cum petitionibus illuc perveniunt, significat non plus siliquae cum petitionibus ad exercitum istum venire poterunt.

Si tale vasculum curram, tunc ego imperium curram;

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

Tunc nemo alius ad botrum Kubernetes explicari poterit. Quia omnes nodi petitiones decurrunt. Sicque tuos Kubernetes botrum sedabo. Si vesperi hoc facio, satis diu instruere possum.

Si documenta Kubernetes denuo inspiciamus, rem hanc limitem Range vocatam videbimus. Opes pro botro ponit objecta. Limit Range objectum in yaml scribere potes, certis spatiis applica - tum in hoc spatio nominali potes dicere te defaltam, maximam et minimam siliquas opes habere.

Tali adiuvante, limitare possumus utentes in certis spatiis iunctorum productorum in facultate indicandi omnia bona in siliquis suis. Sed proh dolor, etiam si indicas utentem se non posse siliquas cum petitionibus plus quam unum CPU mittere, tam mirabilis est ordo scalae, vel per ashboardday ascendere possunt.

Et hoc est, ubi modus est ex binario numero. Deducunt siliquas 11. Id est undecim miliarda. Non quia tali numero ascendi, sed quia ipse vidi.

Vera narratio. Sero vesperi munus exiturus eram. Video globulum tincidunt in angulo sedentem, aliquid agere cum laptop amens. Ascendo ad guys et quaero: "Quid tibi accidit?"

Paulo ante, circiter novem vespere, unus ex machinis domum ire procinctu est. Et decrevi: "Meam applicationem nunc ascendam ad unum." Premebam unum, sed paululum retardari Internet. Compressit unum, pressit unum, et intrat premebat. Omnia potui futui. Tunc Penitus ad vitam venit - et omnia ad hunc numerum ascendere coeperunt.

Verum haec fabula in Kubernetibus non evenit: tunc Nomad fuit. Hoc facto cum Nomadum conatum nostrum post horam desistere a pertinaci conatu escendendi, Nomad respondit se scalis non cessaturum nec aliud facturum. "Lassus sum, abeo." et cincinnatus.

Nempe Kubernetes facere conatus sum. Kubernetes undecim miliardis leguminis laetus non erat, dixit: “Non possum. Excedit internum os custodes.' Sed siliquae 1 potuerunt.

Uno miliario respondente, Cubus in se non recedit. Vere incepit multifariam. Quo longius processum est, eo magis tempus novum legumen creare eum cepit. sed adhuc processum erat. Sola quaestio est quod si in nomine meo siliquas infinitas possum deducere, tum etiam sine petitionibus et limitibus tot siliquas cum quibusdam muneribus agere possum ut ope harum operum nodi memoriam addere incipiant, in CPU. Cum tot siliquas deduxero, indicium ab eis repone, hoc est, etc. Cum nimis multa indicia adveniunt, ceptaculum tardius reverti incipit - et Kubernetes hebetare incipit.

Et unum problema magis... Ut nostis, Kubernetes elementorum potestates non una res centrales, sed plura elementa sunt. Praesertim procurator est moderatoris, schedula, et cetera. Omnes hae latinae supervacaneum facere incipient, stultum opus simul, quod tempus plus ac plus temporis capere incipiet. Gubernator siliquas novas creabit. Scheduler novam nodi eis invenire conabitur. Verisimile es e nodis novis in botro tuo mox currere. Botrus Kubernetes tardius et tardius incipiet laborare.

Sed ulterius progredi constitui. Ut nostis, in Kubernetes tale munus vocatur. Bene, per defaltam in botris tuis, verisimile, opera muneris IP tabulis utens.

Si curras unum siliquae miliarda, exempli gratia, tum scriptura utere ad nova officia Kubernetis cogere;

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

In omnibus nodis botri, magis ac magis novae regulae iptables proxime simul generabuntur. Praeterea una miliarda regulae iptables pro singulis servitiis generabuntur.

Hanc rem a pluribus usque ad decem milia compressi. Et problema est quod iam in hoc limine satis est inconveniens facere ssh nodo. Quia fasciculi, per tot catenas euntes, non valde bonum sentire incipiunt.

Atque haec quoque ope Kubernetes solvitur. Talis est Resource quota obiectum. Numerum copiarum opum et obiecti ad nominandi in botro ponit. Possumus creare yaml obiectum in singulis spatiis botri Kubernetarum. Hoc obiecto, dicere possumus certos habere petitiones et limites huic spatio destinatos, et tunc dicere possumus in hoc spatio 10 officia et siliquas 10 creare posse. Et una elit vesperis potest vel suffocat. Kubernetes ei dicet: "Siliquas tuas tantum non potes ascendere, quia copia numerum excedit." Id est, soluta quaestio. Documenta hic.

Uno modo problematum hac in re oritur. Sentis quam difficile sit spatium spatii in Kubernetes creare. Ad eam creare, necesse est ut multum in ratione ponatur.

Resource quota + Limit Range + RBAC
• crea in spatio nominali
• intra limitrange crea
• intra resourcequota crea
• crea in serviceaccount pro CI
• crea rolebinding ad CI et users
• Optionally launch necessariam siliquam servitium

Quapropter hanc occasionem sumimus ut explicationes meas communicemus. Tale aliquid operator SDK appellatur. Haec via est pro botro Kubernetes ad operarios scribendos pro eo. Scribere potes uti Ansible.

Scriptum est primo in Ansible, et tunc vidi operatorem SDK esse ac munus Ansible in operante rescribere. Haec enuntiatio permittit tibi ut obiectum in Kubernetes botrum vocatum imperium creares. Intus mandatum, permittit tibi ambitum huius praecepti in yaml describere. Et in ambitu quadrigis, tot opes collocare nos permittit describere.

petite hoc totum facilior processus.

Et in conclusione. Quid ad haec omnia?
Primis. Pod securitatem Policy bonum est. Et non obstante quod nullus ex installariis Kubernetarum ad hunc diem utantur, adhuc opus est illis in racemis uti.

Retiacula Policy non solum aliud superfluum est. Hoc est quod vere opus est in botro.

LimitRange/ResourceQuota - Tempus est uti. Hoc iam pridem incepimus uti et diu certo scio quod omnes illo uterentur. Contigit hoc rarum.

Praeter ea quae in relatione commemoravi, notae sunt undocumentae quae te botrum oppugnare sinunt. Nuper dimisit latissima analysis Kubernetarum vulnerabilities.

Quaedam tam tristia et noxia sunt. Exempli gratia, sub certis conditionibus, cubelets in botro Kubernetes contenta clavorum directorii ad usorem alienum dare possunt.

hic Praecepta sunt ut omnia referas quae ad te scripsi. Documenta productionis sunt exempla eorum quae ResourceQuota et Pod Consilium Securitatis simile habent. Et haec omnia tangere potes.

Tibi gratias ago tibi omnia.

Source: www.habr.com

Add a comment