Top 10 Kubernetes Tricken an Tipps

Top 10 Kubernetes Tricken an Tipps

Et gëtt vill Referenzliteratur um Internet, awer heiansdo ass déi einfachst Berodung déi wäertvollst. Equipe Kubernetes aaS vun Mail.ru iwwersat eng Auswiel vun zéng Tricken an Tipps, déi den Auteur vum Artikel gesammelt huet no engem Joer mat Kubernetes ze schaffen. D'Tipps sinn net no Wichtegkeet zortéiert, awer mir mengen datt jiddereen eppes nëtzlech fir sech selwer fënnt.

Deen einfachste Kommando fir mat Kubernetes ze schaffen

Fir unzefänken, vläicht déi einfachst an nëtzlechst Handlung beim Schaffen mat Kubernetes. De folgende Kommando erméiglecht de Kommando fäerdeg kubectl an der Bash Shell:

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

Autofëll kubectl gëtt op d'.bashrc-Datei geschriwwe ginn a gëtt automatesch aktivéiert all Kéier wann d'Shell gestart gëtt. Dëst beschleunegt d'Typen vu laange Kommandoen a Parameteren wéi z all-namespaces. Liest méi an Kubernetes bash Hëllef.

Standard Erënnerung an CPU Limiten an engem Nummraum

Wann d'Applikatioun falsch geschriwwe gëtt, zum Beispill, mécht se all Sekonn eng nei Verbindung mat der Datebank op, awer mécht se ni zou, dann huet de Cluster e Gedächtnisleck. A wann d'Applikatioun keng Gedächtnislimit huet, déi während der Deployment festgeluegt ass, kann dëst zu engem Nodefehler féieren.

Fir dëst ze vermeiden, erlaabt Kubernetes Iech Standardbeschränkungen op enger Per-Nummraum Basis ze setzen. Si ginn an der yaml Datei fir e spezifesche Nummraum geschriwwe. Hei ass e Beispill vun esou engem Fichier:

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

Erstellt esou Yaml a gëlt op all Nummraum. Zum Beispill zum Nummraum limit-example. Elo huet all Container, deen an dësem Nummraum ofgesat gëtt, eng Limit vu 512Mi, ausser wann eng aner individuell Limit zousätzlech fir dësen Container festgeluecht ass.

Müllsammlung an eeler Versioune vu Kubernetes

Kubelet Par défaut fänkt Gerempels Kollektioun wann var/lib/docker besetzt 90% vum verfügbaren Disk Space. Dëst ass awer super, bis Kubernetes 1.7 gouf et keng Standardlimit fir d'Zuel vun den Inoden benotzt, déi mat der Unzuel vun de Dateien am Dateiesystem entspriechen.

Potenziell Äre Container var/lib/docker kann nëmmen 50% vun der Disk Space benotzen, mee kann aus Inoden lafen, déi Problemer fir Aarbechter Ursaach wäert.

An eelere Versioune vu Kubelet vun 1.4 bis 1.6 musst Dir dëse Fändel derbäisetzen:

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

An 1.7 a spéider Versiounen ass dëse Fändel als Standard gesat. Wéi och ëmmer, fréier Versioune iwwerwaachen d'Inode-Limit net.

Minikube ... kleng awer mächteg lokal Kubernetes

Minikube ass deen einfachste Wee fir e lokale Kubernetes Cluster ze bedreiwen. Et gëtt mat engem einfachen Kommando gestart:

minikube start

Dëse Kommando auszeféieren féiert zu engem echte Kubernetes-Cluster op Ärer Maschinn.

Top 10 Kubernetes Tricken an Tipps
Illustratioun Quell

Den Trick ass wéi d'Applikatioun opbaut a se lokal op deem Cluster leeft. Ausser speziell instruéiert, gëtt den Docker-Bild op Ärem Computer gebaut an net um Cluster.

Fir Docker ze zwéngen d'Bild op de lokale Kubernetes Cluster ze drécken, gëtt d'Docker Maschinn de folgende Kommando gegeben:

eval $(minikube docker-env)

Elo kënne mir Uwendungen op engem lokale Kubernetes Cluster bauen.

Gitt net kubectl Zougang fir jiddereen

Dëst schéngt selbstverständlech, awer wann verschidde Teams deeselwechte Cluster fir hir Uwendungen benotzen (wat ass fir wat Kubernetes erstallt gouf), sollt Dir net jidderengem ginn kubectl. Et ass besser d'Befehle ze trennen, jidderee vun hinnen säin eegene Nummraum zouzeweisen an den Zougang mat RBAC Politiken ze limitéieren.

Dir kënnt duerchernee ginn andeems Dir Rechter zouginn fir Zougang, Liesen, Erstellen, Läschen an aner Operatiounen fir all Pod. Awer den Haapt Saach ass den Zougang zu Geheimnisser ze limitéieren, et erlaabt nëmmen Administrateuren. Esou wäerte mir ënnerscheeden tëscht deenen, déi de Cluster kënne verwalten an deenen, déi einfach dohinner ofsetzen.

Managen Pod Budgeten

Wéi sécherstellen ech keng Ausdauer fir eng Applikatioun an engem Kubernetes Cluster? PodDisruptionBudget an nach eng Kéier PodDisruptionBudget.

Cluster ginn periodesch aktualiséiert an Node ginn eidel gemaach. Näischt steet nach, dat ass d'Realitéit. All Deployment mat méi wéi enger Instanz soll e PDB (PodDisruptionBudget) enthalen. Et gëtt an enger einfacher Yaml Datei erstallt déi op de Cluster applizéiert gëtt. D'Ofdeckungsgebitt vun engem bestëmmte PDB gëtt vu Labelselektoren festgeluegt.

Opgepasst: De PDB Budget gëtt nëmme berücksichtegt wann d'Budgetsverletzung reversibel ass (fräiwëlleg Stéierung). A Situatiounen wéi Hardwarefehler funktionnéiert PDB net.

Beispill PDB:

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

Déi zwee Haaptparameter sinn matchLabels и minAvailable. Den éischte Parameter spezifizéiert op wéi eng Uwendungen de Budget gëllt. Zum Beispill, wann ech Détachementer mat Etiketten hunn app: app-a и app: app-b, da gëlt dëse PDB nëmme fir déi éischt.

Parameter minAvailable berécksiichtegt wann Dir den Node eidel (Botzen). Zum Beispill, an eisem Beispill, wärend der Leedung, ginn all Instanzen evictéiert app: app-a, ausser zwee.

Dëst erlaabt Iech ze kontrolléieren wéi vill Instanzen vun der Applikatioun zu all Moment lafen sollen.

Applikatioun Gesondheet Iwwerwachung

Esou Iwwerwaachung ass op zwou Weeër méiglech: mat Bereetschaft oder Liveness Tester.

Déi éischt Sonde (Bereetschaft) bestëmmt d'Bereetschaft vum Container fir Traffic ze kréien.

Déi zweet (Liveness) weist ob de Container gesond ass oder muss nei gestart ginn.

Déi entspriechend Konfiguratioune ginn einfach an den Yaml bäigefüügt fir d'Deployment. Do kënnt Dir Timeouts spezifizéieren, Verzögerungszäiten an d'Zuel vun den Neiversichten. Gesinn méi Detailer iwwert hinnen Kubernetes Dokumentatioun.

Tags sinn iwwerall

Etiketten sinn ee vun de fundamentale Konzepter a Kubernetes. Si erlaben Objekter fräi mateneen ze kommunizéieren, souwéi Ufroen op Basis vun Etiketten erstellen. A Kubernetes kënnt Dir souguer op de Client goen an Eventer fir spezifesch Tags kucken.

Dir kënnt bal alles mat Tags maachen, awer e gutt Beispill wier e puer Ëmfeld ze kreéieren fir Programmer am selwechte Cluster ze lafen.

Loosst d'soen Dir déi selwecht Stärekoup benotzt fir dev и qa. Dëst bedeit datt Dir eng Applikatioun hutt app-a, gläichzäiteg a béid Ëmfeld schaffen qa и dev. An dësem Fall kënne mir separat Zougang zu der Applikatioun Instanz an engem spezifeschen Ëmfeld kréien andeems Dir de passenden Parameter spezifizéiert environment. Zum Beispill app: app-a и environment: dev fir eng Ëmwelt, an app: app-a и environment: qa fir déi zweet.

Dëst erlaabt Iech Zougang zu béide Fäll vun der Applikatioun ze kréien, zum Beispill fir Tester gläichzäiteg ze maachen.

Gitt organiséiert

Kubernetes ass e ganz mächtege System, awer all System ka schliisslech mat ze vill Prozesser verstoppt ginn. De Kubelet leeft all d'Prozesser a Kontrollen déi Dir spezifizéiert, souwéi seng eege.

Natierlech wäert een verwaist Service de System net verlangsamen, a Kubernetes ass entwéckelt fir aus dem Buedem ze skaléieren. Awer wann amplaz vun engem Service eng Millioun erschéngt, fänkt de Kubelet un ze erstécken.

Wann Dir aus iergendengem Grond en Deployment läscht (Container, Bild, wat och ëmmer), gitt sécher datt Dir e komplette Botz mécht.

Meet Go

Mir hunn den Haaptrot fir d'lescht gespäichert. Léiert d'Go Programméierungssprooch.

Kubernetes ass am Go entwéckelt, all Extensiounen sinn a Go geschriwwen, an d'Client-go Client Bibliothéik gëtt och offiziell ënnerstëtzt.

Et kann fir verschidden an interessant Saachen benotzt ginn. Zum Beispill, fir de Kubernetes System no Ärem Goût auszebauen. Also, Dir kënnt Är eege Programmer benotze fir Daten ze sammelen, Uwendungen z'installéieren oder einfach Container ze botzen.

D'Go Programméierungssprooch léieren a Client-go beherrschen ass vläicht déi wichtegst Berodung déi Dir fir nei Kubernetes Benotzer kënnt ginn.

Iwwersat mat der Ënnerstëtzung vun Mail.ru Cloud Solutions

Wat soss ze liesen:

  1. Dräi Niveauen vun der Autoskaléierung a Kubernetes a wéi se se effektiv benotzen.
  2. Kubernetes Aarbechtsknäppchen: vill kleng oder wéineg grouss?
  3. 25 Nëtzlech Tools fir Kubernetes z'installéieren an ze managen.

Source: will.com

Setzt e Commentaire