Parimad 10 nippi ja nÔuannet Kubernetesest

Parimad 10 nippi ja nÔuannet Kubernetesest

Internetis on palju viidatud kirjandust, kuid mĂ”nikord on kĂ”ige vÀÀrtuslikumad hoopis kĂ”ige lihtsamad nĂ”uanded. Meeskond Kubernetes aaS Mail.ru-lt tĂ”lkis kogumi kĂŒmnest nipist ja soovitusest, mille autor koostas pĂ€rast aastast tööd Kubernetesega. Soovitused pole jĂ€rjestatud olulisuse jĂ€rgi, kuid usume, et igaĂŒks leiab endale midagi kasulikku.

Lihtsaim kÀsk Kubernetesega töötamiseks

Alustuseks on ilmselt kÔige lihtsam ja kasulikum tegevus Kubernetesega töötamisel. JÀrgmine kÀsk lubab kÀskude automaatset tÀiendamist kubectl bash'i keskkonnas:

echo "source > ~/.bashrc

Automaatne tĂ€iendamine kubectl salvestatakse failisse .bashrc ja aktiveeritakse automaatselt iga kord, kui keskkond avatakse. See kiirendab pikkade kĂ€skude ja parameetrite, nagu all-namespaces, sisestamist. TĂ€iendavad ĂŒksikasjad leiate Kubernetes bash'i abist..

Vaikimisi mÀlu ja CPU piirangud nimede ruumis

Kui rakendus on valesti kirjutatud, nĂ€iteks avab iga sekundi jĂ€rel andmebaasi uue ĂŒhenduse, kuid kunagi ei sulge seda, siis toimub klastris mĂ€lu leke. Ja kui rakendusele ei ole deponeerimisel mÀÀratud mĂ€lu piirangut, vĂ”ib see pĂ”hjustada sĂ”lme kokkuvarisemise.

Sellise olukorra ennetamiseks vÔimaldab Kubernetes iga nimede ruumi vaikimisi piirangute seadmist. Need mÀÀratakse konkreetses nimede ruumi yaml-failis. Siin on nÀide sellisest failist:

apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
spec:
  limits:
  - default:
      memory: 512Mi
    defaultRequest:
      memory: 256Mi
    type: Container

Looge selline yaml ja rakendage see mis tahes nimede ruumi. NĂ€iteks nimede ruumile limit-example. NĂŒĂŒd kehtib iga selle nimede ruumis kĂ€ivitunud konteineri jaoks 512Mi piirang, kui sellele konteinerile ei ole mÀÀratud eraldi piiri.

Reostuse puhastamine vanades Kubernetes versioonides

Kubelet alustab vaikimisi reostuse puhastamist, kui var/lib/docker kasutab 90 % saadaval olevast kettaruumist. See on suurepĂ€rane, kuid Kubernetes 1.7 versioonini ei olnud vaike piirangut inode deskriptorite (failisĂŒsteemi failide arvu) kasutamise arvule.

Teie konteiner vÔib kasutada ainult 50 % kettaruumist, kuid samal ajal vÔivad inode'd otsa saada, mis pÔhjustab probleeme tööprotsesside töös. var/lib/docker vÔib kasutada ainult 50% ketta ruumist, kuid sellegipoolest vÔivad inodid otsa saada, mis tekitab töötajate töös probleeme.

Vanades kubelet'i versioonides alates 1.4 kuni 1.6 tuleb lisada jÀrgmine lipp:

--eviction-hard
=memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%

Versioonides 1.7 ja uuemates on see lipp vaikimisi seadistatud. Kuid varasemad versioonid ei jÀlgi inoodide limiiti.

Minikube
 vÀike, kuid vÔimas kohaliku Kubernetes'e lahendus

Minikube on kÔige lihtsam viis kÀivitada kohalik Kubernetes'e klaster. See kÀivitub lihtsa kÀsklusega:

minikube start

Selle kÀsu tÀitmise tulemusel töötab teie arvutis tÔeline Kubernetes'e klaster.

Parimad 10 nippi ja nÔuannet Kubernetesest
Illustratsiooni allikas

Nipp seisneb selles, kuidas rakendust koguda ja seda kohalikus klastris kÀivitada. Kui ei anta erilisi juhiseid, kogutakse Docker'i pilt teie arvutisse, mitte klastrisse.

Kuna Docker tuleb suunata pildi saatmiseks kohalikku Kubernetes'e klastrisse, antakse docker-masinale jÀrgmine kÀsk:

eval $(minikube docker-env)

NĂŒĂŒd saame rakendusi kohalikus Kubernetes'e klastris koguda.

Ärge jagage kubectl'i pÀÀsmeid kĂ”ikidele

See tundub iseenesestmĂ”istetav, kuid kui mitu meeskonda kasutavad oma rakenduste jaoks ĂŒhte klastrit (milleks Kubernetes on loodud), ei tasu lihtsalt kĂ”ikidele Ă”igusi anda. kubectl. Parem on jagada meeskonnad, mÀÀrates igaĂŒhele oma nimeruumi ja piirates juurdepÀÀsu RBAC poliitikatega.

Saate end vaevata, kirjutades iga pod'i jaoks juurdepÀÀsuÔigust, lugemist, loomist, kustutamist ja muid toiminguid. Kuid peamine on piirata juurdepÀÀsu saladustele, lubades seda vaid administraatoritele. Nii eristame me neid, kes saavad klastrit administreerida, ja neid, kes saavad seal lihtsalt seadmeid paigaldada.

Haldage pod'i eelarveid

Kuidas tagada, et Kubernetes'e klastris pole rakendusele seiskamisi? PodDisruptionBudget ja veel kord PodDisruptionBudget.

Klastrite pidev uuendamine ja sĂ”lmede tĂŒhjendamine on reaalne olukord. Igas juurutuses, millel on rohkem kui ĂŒks instants, tuleks kindlasti sisaldada PDB (PodDisruptionBudget). See luuakse lihtsas yaml failis, mis rakendatakse klastrile. Konkreetse PDB ulatus mÀÀratakse mĂ€rgiste valijate abil.

MÀrkus: PDB eelarvet arvestatakse ainult tagasihoidliku eelarve rikkumise korral (voluntary disruption). NÀiteks riistvara rikete korral PDB ei töötaks.

NĂ€ide PDB-st:

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

Kaks peamist parameetrit on matchLabels ja minAvailable. Esimeses parameetris mÀÀratakse, milliste rakenduste jaoks eelarve kehtib. NÀiteks, kui mul on juurutamised siltega app: app-a ja app: app-b, siis seda PDB-d rakendatakse ainult esimesele.

Parameeter minAvailable arvesse vĂ”etakse sĂ”lme tĂŒhjendamisel. NĂ€iteks meie nĂ€ites tĂŒhjendamise ajal kĂ”rvaldatakse kĂ”ik instantsid app: app-a, vĂ€lja arvatud kaks.

See vÔimaldab kontrollida, kui palju rakenduse eksemplare peaks olema igal ajahetkel kÀimas.

Rakenduse töökindluse jÀlgimine

Selline jÀlgimine on vÔimalik kahel viisil: valmisoleku- vÔi elujÔudluskatsete kaudu.

Esimene proov (valmidus) mÀÀrab konteineri valmisoleku liikluse vastuvÔtmiseks.

Teine (elujÔudlus) nÀitab, kas konteiner on töökorras vÔi tuleks see taaskÀivitada.

Seotud konfiguratsioonid lisatakse lihtsalt yaml-i juurutamiseks. Seal saab mÀÀrata ajasid, viivitusi ja kordusproovide arvu. Rohkem teavet nende kohta leiate Kubernetes dokumentatsioonist.

Sildid igal pool

Sildid on Kuberneteses ĂŒks pĂ”himĂ”ttelisi mĂ”isted. Need vĂ”imaldavad objektidel vabalt ĂŒksteisega siduda ning luua pĂ€ringuid siltide alusel. Kuberneteses saab isegi kliendile liikuda ja jĂ€lgida konkreetsete siltide pĂ”hiseid sĂŒndmusi.

Siltide abil saab teha praktiliselt kĂ”ike, kuid hea nĂ€ide oleks mitme keskkonna loomine programmide kĂ€itamiseks ĂŒhes klastris.

Oletame, et kasutate sama klastrit dev ja qa. See tĂ€hendab, et teil vĂ”ib olla rakendus app-a, mis töötab samaaegselt mĂ”lemas keskkonnas qa ja dev. Sel juhul saame pöörduda eraldi rakenduse eksemplari poole konkreetses keskkonnas, mÀÀrates vastava parameetri keskkond. NĂ€iteks, app: app-a ja environment: dev ĂŒhe keskkonna jaoks ja app: app-a ja environment: qa teise jaoks.

See vÔimaldab ligipÀÀsu mÔlema rakenduse eksemplaridele, nÀiteks testimise samaaegset lÀbiviimist.

Hoia asjad korras

Kubernetes on vĂ€ga vĂ”imas sĂŒsteem, kuid iga sĂŒsteem suudab lĂ”puks kinni jÀÀda paljude protsesside tĂ”ttu. Kubelet kĂ€ivitab kĂ”ik, mida olete mÀÀranud, ja kontrollib omaenda.

Muidugi ei aeglusta ĂŒhe ĂŒksuse puudumine sĂŒsteemi, ja Kubernetes on algselt loodud skaleerimiseks. Kuid kui ĂŒhe asemel tekib miljon teenust, hakkab kubelet upuma.

Kui te mingil pÔhjusel kustutate rakenduse (konteineri, pildi, mida iganes), veenduge, et kÔik oleks tÀielikult kustutatud.

Tutvuge Go programmikeelega

Peamine nÔuanne, mille oleme lÔpetuseks jÀtnud. Uurige Go programmikeelt.

Kubernetes on kirjutatud Go's, kÔik laiendused on kirjutatud Go's ning ametlikult toetatakse ka kliendiraamatukogu client-go.

Seda saab kasutada erinevate ja huvitavate asjade jaoks. NĂ€iteks Kubernetes'i sĂŒsteemi kohandamiseks oma Ă€ranĂ€gemise jĂ€rgi. NĂ€iteks vĂ”ite kasutada oma programme andmete kogumiseks, rakenduste juurutamiseks vĂ”i konteinerite lihtsaks puhastamiseks.

Go programmikeele Ôppimine ja client-go omandamine on ilmselt kÔige tÀhtsam nÔuanne, mida algetappides Kubernetes'i kasutajatele anda.

TÔlgitud Mail.ru Cloud Solutionsi toetusel

Mida veel lugeda:

  1. Kubernetes'is on kolm automaatskaalumise taset ja kuidas neid tÔhusalt kasutada.
  2. Kubernetes'i töönod: palju vÀikeseid vÔi vÀhe suuri?
  3. 25 kasulikku tööriista Kubernetes'i juurutamiseks ja haldamiseks.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster