Kubernetes

Kubernetes Metrics-server

Kubernetes Metrics-server
Met een systeem dat zo groot en ingewikkeld is als Kubernetes, kan monitoring vaak lastig worden.Monitoring is altijd een lastige zaak, omdat u aan de ene kant geen kritieke bugs en storingen wilt missen, aan de andere kant wilt u niet verdrinken in een oceaan van triviale fouten die worden geactiveerd, niet vanwege uw toepassing of invloed het in ieder geval.

Met zijn eigen stapel planners en controllers kan Kubernetes herstellen van kleine storingen, knooppunten die uitvallen of apps die crashen vanuit hun pods. Als er echter veel crashes plaatsvinden, heeft dit misschien niets te maken met de infrastructuur, maar alles met uw app die Kubernetes mogelijk steeds opnieuw probeert te herstarten, maar aangezien de code de oorzaak is, blijft de fout bestaan ​​​​en kan zelfs onopgemerkt blijven.

Het soort bugs dat meestal onopgemerkt blijft, zijn die waarbij apps niet crashen, maar uiteindelijk systeembronnen gebruiken en de clusters schade toebrengen aan alle prestaties. Dit zijn de bijzonder vervelende gevallen en Kubernetes Metrics Server kan een handig hulpmiddel zijn om ze in de gaten te houden.

Het project maakt officieel deel uit van het Kubernetes-project, maar is niet vooraf ingeschakeld in de meeste Kubernetes-gecertificeerde distributies. Het heeft twee belangrijke delen die het waard zijn om de Metrics API en de Metrics Server zelf te bespreken. Maar laten we het eerst in ons Kubernetes (K8)-cluster inrichten.

Een experimentele Kubernetes-opstelling

Vanaf juli 2018 worden Docker voor Mac en Windows beide geleverd met een Kubernetes-gecertificeerde implementatie van K8 zelf. Het net zo eenvoudig maken als het installeren van K8 op een Linux-distro. U kunt naar Docker-instellingen gaan en als de Docker-instantie up-to-date is, vindt u een Kubernetes-tabblad in het menu. Schakel gewoon Kubernetes in in plaats van Docker Swarm en je hebt een enkel knooppuntcluster klaar voor experimenten.

Vervolgens hebben we een aantal eenvoudige applicaties nodig die in gebruik zijn voor onze use case. Maak een map met de naam Implementaties en laten we daarin een . maken nginx-implementatie.yaml bestanden die stateless Nginx-pods zouden inzetten.

apiVersion: apps/v1 # voor versies vóór 1.9.0 gebruik apps/v1beta2
soort: implementatie
metagegevens:
naam: nginx-implementatie
specificaties:
keuze:
matchLabels:
app: nginx
replica's: 2 # vertelt de implementatie om 2 pods uit te voeren die overeenkomen met de sjabloon
sjabloon:
metagegevens:
etiketten:
app: nginx
specificaties:
containers:
- naam: nginx
afbeelding: nginx:1.7.9
poorten:
- containerhaven: 80

Sla het bestand op en voer in dezelfde map als dit bestand de opdracht uit:

$ kubectl create -f nginx-deployment.yaml

Het kan zijn dat we een paar minuten moeten wachten om Kubernetes de container-images te laten downloaden, de containers in te richten en een beetje diverse boekhouding te laten doen. Zodra dat is gebeurd, kunt u de lijst met pods zien als:

$ kubectl krijg pods

Zoals je kunt zien, hebben we twee exemplaren van de pod, zoals de .yaml-bestand had voorgeschreven.

Nu we iets te controleren hebben, moeten we Metrics Server inschakelen. Controleer eerst de versie van Kubernetes die u gebruikt. Als de versie 1 . is.8 of hoger, dan zouden we een andere implementatie uitvoeren en als het 1 . is.7 dan nemen we onze toevlucht tot de legacy:

$ kubectl-versie

Je kunt de officiële afbeelding krijgen en aan de slag gaan door deze GitHub-repo te klonen en vervolgens in de root van de repository de kubectl create -f met de juiste .yaml afhankelijk van de K8-versie die u gebruikt.

$ git kloon https://github.com/kubernetes-incubator/metrics-server.git
 
$ cd metrics-server
# Als u Kubernetes versie 1 gebruikt.8 of hoger
$ kubectl create -f deploy/1.8+/
# Als de versie 1 . is.7, dan
$ kubectl create -f deploy/1.7/

Geef de kubernetes even de tijd om de afbeeldingen te downloaden en de metrische server op te starten. Het kan een paar minuten duren. Zodra dat is gebeurd, bent u nu klaar om de metrische server uit te voeren. Het basiscommando is geïnspireerd op de top commando dat vaak wordt uitgevoerd om een ​​Linux-systeem te controleren. Maar het heeft twee varianten, één voor het controleren van de hulpbronnengebruik op de computer knooppunten en ten tweede om de . te meten bron verbruikt resource door de ingezeten peulen en de. Hier leest u hoe u die twee details kunt zien:

$ kubectl topknooppunt
$ kubectl top pod

U kunt zien hoeveel een pod uw systeem belast in termen van geheugen of CPU-tijd en met behulp van de Metrics API kunt u ook waarschuwingen instellen.

Waar gaat het vanaf hier??

De opkomende use-cases van de metrische server zullen cruciaal zijn in de toekomst van Kubernetes. Dit project is nog in versie 0.2.x, zodra het volwassen is en wordt geïntegreerd in de reguliere Kubernetes-architectuur, verzamelt het belangrijke gegevens voor de planner, waardoor het op een veel efficiëntere manier pods aan knooppunten kan toewijzen.

Evenzo zal Horizontal Pod Autoscaler enorm profiteren van het project en u helpen op- of afschalen, zodat de bronnen optimaal worden gebruikt door de applicaties.

Referenties

  1. Nginx-implementaties
  2. Kubernetes Metrics-server
  3. Design Docs voor de Metrics API vindt u hier en soortgelijke informatie over de Metrics Server vindt u hier.
Handige hulpmiddelen voor Linux-gamers
Als je graag games op Linux speelt, is de kans groot dat je apps en hulpprogramma's zoals Wine, Lutris en OBS Studio hebt gebruikt om de game-ervaring...
HD Remastered Games voor Linux die nog nooit eerder een Linux-release hebben gehad
Veel game-ontwikkelaars en uitgevers komen met HD-remaster van oude games om de levensduur van franchise te verlengen, fans die compatibiliteit met mo...
Hoe AutoKey te gebruiken om Linux-spellen te automatiseren
AutoKey is een hulpprogramma voor desktopautomatisering voor Linux en X11, geprogrammeerd in Python 3, GTK en Qt. Met behulp van de scripting- en MACR...