10 parasta Kubernetes-temppua ja -vinkkiä

10 parasta Kubernetes-temppua ja -vinkkiä

Internetissä on paljon viitekirjallisuutta, mutta joskus yksinkertaisimmat vinkit ovat arvokkaimpia. Tiimi Kubernetes aaS osoitteesta Mail.ru käännetty valikoima kymmenen temppua ja vinkkiä, jonka artikkelin kirjoittaja on kerännyt vuoden työskentelyn jälkeen Kuberneteksen kanssa. Vinkkejä ei ole lajiteltu tärkeyden mukaan, mutta uskomme, että jokainen löytää itselleen jotain hyödyllistä.

Helpoin komento käyttää Kubernetesin kanssa

Aloitus on ehkä yksinkertaisin ja hyödyllisin vaihe Kubernetesin kanssa työskentelyssä. Seuraava komento mahdollistaa komennon suorittamisen kubectl bash shellissä:

echo "source <(kubectl completion bash)" >> ~/.bashrc

Automaattinen täydennys kubectl kirjoitetaan .bashrc-tiedostoon ja aktivoituu automaattisesti aina, kun komentotulkki käynnistetään. Tämä nopeuttaa pitkien komentojen ja vaihtoehtojen kirjoittamista all-namespaces. Lue lisää kohdasta Kubernetes bash apua.

Nimitilan muistin ja suorittimen oletusrajat

Jos sovellus on kirjoitettu väärin, kuten avataan uusi tietokantayhteys joka sekunti, mutta ei koskaan suljeta sitä, klusteri vuotaa muistia. Ja jos sovelluksella ei ole muistirajaa käyttöönoton aikana, tämä voi johtaa solmuvirheeseen.

Tämän estämiseksi Kubernetes antaa sinun asettaa oletusrajat kullekin nimiavaruudelle. Ne on kirjoitettu yaml-tiedostoon tietylle nimiavaruudelle. Tässä on esimerkki tällaisesta tiedostosta:

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

Luo tällainen yaml ja käytä sitä missä tahansa nimiavaruudessa. Esimerkiksi nimiavaruuteen limit-example. Nyt kaikilla tässä nimiavaruudessa käyttöönotetuilla säilöillä on 512 Mi:n raja, ellei tälle säilölle ole lisäksi asetettu muuta yksittäistä rajaa.

Roskakeräys Kubernetesin vanhemmissa versioissa

Kubelet aloittaa roskienkeruun oletusarvoisesti kun var/lib/docker vie 90 % käytettävissä olevasta levytilasta. Tämä on hienoa, mutta ennen Kubernetes 1.7:ää käytettävien inodien määrällä ei ollut oletusrajoitusta, mikä vastaa tiedostojärjestelmän tiedostojen määrää.

Mahdollisesti konttisi var/lib/docker voi käyttää vain 50% levytilasta, mutta se voi loppua inodeista, mikä aiheuttaa ongelmia työntekijöille.

Kubeletin vanhemmissa versioissa 1.4–1.6 sinun on lisättävä seuraava lippu:

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

1.7:ssä ja uudemmissa versioissa tämä lippu on asetettu oletusarvoisesti. Aiemmat versiot eivät kuitenkaan pakota inode-rajoitusta.

Minikube… pieni mutta tehokas paikallinen Kubernetes

Minikube on helpoin tapa ajaa paikallista Kubernetes-klusteria. Se käynnistetään yksinkertaisella komennolla:

minikube start

Tämä komento johtaa siihen, että koneessasi on todellinen Kubernetes-klusteri.

10 parasta Kubernetes-temppua ja -vinkkiä
Kuvan lähde

Temppu on kuinka rakentaa sovellus ja suorittaa se paikallisesti tässä klusterissa. Ellei toisin mainita, Docker-näköistiedosto rakennetaan koneellesi, ei klusteriin.

Dockerin pakottamiseksi työntämään kuva paikalliseen Kubernetes-klusteriin docker-koneelle annetaan seuraava komento:

eval $(minikube docker-env)

Nyt voimme rakentaa sovelluksia paikalliseen Kubernetes-klusteriin.

Älä jaa kubectl-käyttöoikeutta kaikkien kanssa

Tämä vaikuttaa itsestään selvältä, mutta jos useat tiimit käyttävät samaa klusteria sovelluksilleen (johon Kubernetes luotiin), älä vain julkaise niitä kaikkia peräkkäin kubectl. On parempi erottaa komennot toisistaan ​​antamalla jokaiselle oma nimiavaruutensa ja rajaamalla pääsy RBAC-käytännöillä.

Voit hämmentyä antamalla kullekin podille käyttö-, luku-, luonti-, poisto- ja muita toimintoja koskevia oikeuksia. Mutta tärkeintä on rajoittaa pääsy salaisuuksiin ja sallia se vain järjestelmänvalvojille. Näin erotamme ne, jotka voivat hallinnoida klusteria, ja ne, jotka voivat yksinkertaisesti ottaa sen käyttöön.

Hallitse pod-budjetteja

Kuinka varmistaa, ettei Kubernetes-klusterissa ole sovelluksen käyttökatkoksia? PodDisruptionBudget ja jälleen PodDisruptionBudget.

Klusterit päivitetään säännöllisesti ja solmut tyhjennetään. Mikään ei pysy paikallaan, se on todellisuus. Jokaiseen käyttöönottoon, jossa on useampi kuin yksi esiintymä, on sisällytettävä PDB (PodDisruptionBudget). Se luodaan yksinkertaisessa yaml-tiedostossa, jota sovelletaan klusteriin. Tietyn ATE:n laajuus määräytyy otsikon valitsimien avulla.

Huom: ATE:n budjetti otetaan huomioon vain, jos budjettirikkomus voidaan perua (vapaaehtoista häiriötä). Tilanteissa, kuten laitteistovioissa, PDB ei toimi.

ATE esimerkki:

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

Kaksi pääparametria ovat matchLabels и minAvailable. Ensimmäinen parametri määrittää, mitä sovelluksia budjetti koskee. Esimerkiksi, jos minulla on käyttöönottoja tunnisteilla app: app-a и app: app-b, tämä ATE koskee vain ensimmäistä talousarvioesitystä.

Parametri minAvailable otetaan huomioon solmua tyhjennettäessä (puhdistettaessa). Esimerkiksi esimerkissämme kaikki tapaukset häädetään tuhon aikana app: app-akahta lukuunottamatta.

Tämän avulla voit hallita, kuinka monta sovelluksen esiintymää on käynnissä kerrallaan.

Sovelluksen terveydentilan seuranta

Tällainen seuranta on mahdollista kahdella tavalla: Valmius- tai Elävyystesteillä.

Ensimmäinen luodin (valmius) määrittää, onko kontti valmis vastaanottamaan liikennettä.

Toinen (elävyys) osoittaa, onko säiliö terve vai pitääkö se käynnistää uudelleen.

Asiaankuuluvat kokoonpanot lisätään yksinkertaisesti yamliin käyttöönottoa varten. Siellä voit määrittää aikakatkaisut, viiveajan ja uudelleenyritysten määrän. Katso niistä lisää Kubernetesin dokumentaatio.

Etikettejä kaikkialla

Tarrat ovat yksi Kubernetesin peruskäsitteistä. Niiden avulla objektit voivat kommunikoida vapaasti toistensa kanssa sekä luoda pyyntöjä tarrojen perusteella. Kubernetesissa voit jopa mennä asiakkaalle ja katsoa tapahtumia tiettyjen tarrojen kohdalla.

Tunnisteilla voidaan tehdä melkein mitä tahansa, mutta hyvä esimerkki olisi luoda useita ympäristöjä ohjelmien suorittamiseksi samassa klusterissa.

Oletetaan, että käytät samaa klusteria dev и qa. Tämä tarkoittaa, että sinulla voi olla hakemus app-a, työskentelee samanaikaisesti molemmissa ympäristöissä qa и dev. Tässä tapauksessa voimme käyttää sovellusesiintymää erikseen tietyssä ympäristössä määrittämällä sopiva parametri environment. Esimerkiksi app: app-a и environment: dev yhdelle ympäristölle ja app: app-a и environment: qa toiselle.

Näin voit käyttää sovelluksen molempia esiintymiä esimerkiksi testaamaan samanaikaisesti.

Laita asiat järjestykseen

Kubernetes on erittäin tehokas järjestelmä, mutta mikä tahansa järjestelmä voi lopulta juuttua moniin prosesseihin. Kubelet suorittaa kaikki määrittämäsi prosessit ja tarkistukset sekä omansa.

Yksi orpopalvelu ei tietenkään hidasta järjestelmää, ja Kubernetes on suunniteltu skaalautuvaksi alusta alkaen. Mutta jos yhden palvelun sijaan ilmestyy miljoona, kubelet alkaa tukehtua.

Jos olet jostain syystä poistamassa käyttöönottoa (säilöä, kuvaa, mitä tahansa), muista puhdistaa se kokonaan.

Tutustu Go

Olemme säästäneet huippuvinkkimme viimeiseksi. Opi Go-ohjelmointikieli.

Kubernetes on kehitetty Go:ssa, kaikki laajennukset on kirjoitettu Golla, ja myös client-go-kirjasto on virallisesti tuettu.

Sitä voidaan käyttää erilaisiin ja mielenkiintoisiin asioihin. Esimerkiksi laajentaaksesi Kubernetes-järjestelmää makusi mukaan. Voit esimerkiksi käyttää omia ohjelmiasi tietojen keräämiseen, sovellusten käyttöönottoon tai yksinkertaisesti säiliöiden puhdistamiseen.

Go-ohjelmointikielen oppiminen ja client-go-hallinta on ehkä tärkein neuvo, jonka voi antaa aloitteleville Kubernetes-käyttäjille.

Käännetty Mail.ru Cloud Solutionsin tuella

Mitä muuta luettavaa:

  1. Kolme automaattista skaalaustasoa Kubernetesissa ja niiden tehokas käyttö.
  2. Kubernetes Worker Solmut: Monet pienet tai harvat suuria?
  3. 25 Hyödyllisiä työkaluja Kubernetesin käyttöönottoon ja hallintaan.

Lähde: will.com

Lisää kommentti