‫Als je niet rechtstreeks uit de laatste lezing over deze
‫kwam, ga dan terug naar de vorige lezing om er zeker van te
‫zijn dat je de juiste implementatie hebt uitgevoerd, zodat je de logboeken
‫hebt die we hier zo gaan zien.
‫Sinds we die Apache-implementatie op de achtergrond hebben draaien,
‫en het heeft twee pods omdat we de replica's naar
‫twee hebben geschaald. We zouden een kubectl kunnen doen
‫om pods te krijgen en de resultaten te zien.
‫Natuurlijk zullen je podnamen iets anders zijn dan de
‫mijne, omdat ze de cijfers en willekeurige tekens aan het
‫einde daar hebben. Telkens wanneer ik het
‫typ, moet u zich realiseren dat u in de laatste
‫twee blokken iets anders typt op basis van wat uw implementatie laat zien.
‫Er zijn een paar commando's, net als bij Swarm
‫en bij Docker zelf. In dit geval zijn het
‫verschillende opdrachten om te begrijpen wat er in een container gebeurt
‫en wat de Orchestrator met containers doet.
‫De eerste is logboeken.
‫De tweede is beschrijven.
‫We hebben technisch gezien geen inspect-commando in Kubernetes, maar beschrijven
‫doet veel meer dan dat.
‫Laten we eerst een logs-opdracht proberen.
‫Jouw output kan iets anders zijn dan de mijne.
‫U zult merken dat de eerste regel nadat
‫we de logs-implementatie /my-apache.
‫Er staat dat er twee pods zijn gevonden en met een
‫podnaam heeft het daar een specifieke podnaam gegeven.
‫Dat komt omdat het standaard log-commando niet alle
‫verschillende pods zal trekken en ze samen
‫zal combineren zoals je zou doen met
‫de Docker- of Swarm-commando's. Het zal er standaard maar één van trekken.
‫Net als andere log-commando's die je in
‫deze cursus gewend bent, zijn er veel opties, waaronder
‫--follow, --tail.
‫Dat zijn veelvoorkomende dingen voor het loggen van opdrachten
‫in elk Linux-systeem.
‫Als we hetzelfde commando hebben gedaan met -- volg gewoon, het zal
‫dan wachten tot er iets nieuws verschijnt in de logs van
‫die pod. Dan --tail,
‫1 betekent alleen de laatste regel retourneren.
‫Op die manier krijg je geen enorme dump van de logs.
‫Daar kun je C van afleiden.
‫Wat als u de logboeken voor meerdere pods gecombineerd
‫wilt zien?
‫Dat kun je zeker doen. Dat is gewoon niet
‫de standaard logs-opdracht. In dit geval moeten we
‫in Kubernetes iets genaamd Selector gebruiken, wat een techniek is om meerdere pods
‫te pakken op basis van een label dat
‫ze allemaal delen.
‫Het leuke hier is dat wanneer
‫je de opdracht kubectl run gebruikt, het automatisch een label
‫met de naam van de implementatie aan al deze pods toevoegt.
‫We kunnen dus dezelfde implementatienaam my Apache gebruiken om
‫alle pods met dat label te selecteren.
‫Merk op dat dit slechts een simpele aanpassing van
‫een label hier is. Dus als u andere
‫implementaties of pods had die dit label hebben, zouden ze
‫hier ook in verstrikt raken. Je moet dus voorzichtig zijn met je
‫etikettering en je naamgeving.
‫We gebruiken hier een -l
‫om het label op te geven, en we specificeren het
‫label dat de opdracht run heeft toegepast, wat
‫mijn Apache was.
‫Net als Swarm en Docker zelf, kunnen deze log-opdrachten
‫erg handig zijn voor snelle probleemoplossing, maar ze zijn
‫geen vervanging voor een volledig logsysteem.
‫In Kubernetes kan het standaard maximaal vijf pods
‫tegelijk ophalen wanneer het het selectortype
‫voor het ophalen van de logboeken gebruikt.
‫Je kunt dat altijd verhogen, maar de realiteit is dat het een
‫zware belasting voor het systeem is om uit alle verschillende knooppunten
‫deze logbestanden te halen.
‫In productie wil je een logboeksysteem van een derde partij dat al deze
‫logboeken verzamelt en ze in de loop van de tijd opslaat
‫om ze sneller te kunnen terugvinden.
‫Dat geldt voor werkelijk elk containerorkestratiesysteem, of het
‫nu Docker, Swarm of Kubernetes is.
‫Het volgende commando hier zou zijn om het commando te beschrijven.
‫De opdracht description is in dit geval waar we
‫de pod zelf willen specificeren.
‫We willen een heel specifieke pod hebben, maar dan moeten we
‫eerst de namen van die pods weten.
‫Dus laten we eerst pods pakken.
‫Dan kunnen we een van die namen kopiëren en plakken
‫in een beschrijfopdracht.
‫Typ eerst pod.
‫Ik zal die capsule terughalen.
‫Ik hoef niet per se die ene pod te specificeren.
‫Ik zou pods kunnen zeggen en het zou alle pods tonen, wat een
‫beetje gevaarlijk kan zijn als je veel pods hebt.
‫U kunt zeker andere bronnen beschrijven en verschillende soorten resultaten
‫terugkrijgen op basis van het object.
‫Wat ik hier wilde benadrukken, was dat
‫dit vergelijkbaar zou zijn met het inspect-commando in Swarm,
‫of in Docker zelf. Maar het geeft het een beetje mooiere weergave
‫op het scherm dan in JSON.
‫Terwijl je door de resultaten scrolt, zul je merken dat
‫het niet alleen een beschrijving is van het verschillende object,
‫maar ook dingen zoals gebeurtenissen
‫onderaan ophaalt, wat een geweldige manier is om snel een status
‫te krijgen van de huidige realiteit van dat object.
‫Dus als je een probleem zou hebben, misschien met een pod die een
‫afbeelding trekt, zou je die gebeurtenis hier zien waar het zou zeggen
‫dat het niet mogelijk is om een afbeelding te trekken.
‫Dat komt vaak voor als je per ongeluk een
‫afbeeldingsnaam of iets dergelijks typt.
‫Dit kan best handig zijn voor een snelle techniek voor probleemoplossing
‫zonder dat u enkele gebeurtenissen of foutopsporingslogboeken hoeft
‫aan te zetten.
‫Oke. Voor dit laatste
‫stukje ga ik je laten zien hoe Kubernetes veerkrachtig is, vergelijkbaar
‫met Swarm, waarbij als je een van de lagere abstractieniveaus verwijdert, in
‫dit geval als je een pod verwijdert, de abstractie op
‫hoger niveau, de implementatie en de ReplicaSet, zorgt
‫ervoor dat die pod opnieuw wordt gemaakt.
‫Dat is vergelijkbaar met de manier waarop een container of taak in Swarm,
‫als u deze verwijdert, door de service opnieuw zou worden gemaakt.
‫We gaan dit in twee verschillende vensters doen.
‫In het eerste venster gaan we een get gebruiken met een -w.
‫Dat geeft ons een vergelijkbare ervaring
‫als het wachtcommando. Als je me ooit het watch-commando
‫in deze cursus hebt zien gebruiken om een Linux-commando te bekijken, wat in
‫wezen betekent dat je dat ding op de achtergrond moet draaien
‫en dat zou je in Linux kunnen doen.
‫Maar dat horloge-commando is niet altijd beschikbaar
‫op alle besturingssystemen. Hier kunnen we
‫een kubectl-pods krijgen, maar een -w toevoegen, waardoor
‫het daar blijft zitten en
‫om de paar seconden wordt vernieuwd.
‫Nu kunnen we naar een
‫andere terminal gaan. We gaan een van die pods verwijderen.
‫Eerst. we moeten de naam kopiëren
‫en een kubectl-pod
‫/de naam van de pod gebruiken.
‫Je zult merken dat het het verwijdert.
‫We krijgen dan dit lopende logboek boven aan
‫de dingen die veranderen.
‫Ik vind dit ook een beetje beter dan het
‫horloge-commando omdat het watch-commando het scherm ververst, waar dit een voortdurende herhaling van
‫de wijzigingen laat zien, wat
‫best netjes is. Beneden, als
‫we nog een kubectl pods hebben gehaald, zul je zien dat
‫we weer bij twee zijn.
‫Nogmaals, dit is een soort van zelfhelend aspect
‫van een orkestrator. Dat is een van de belangrijkste doelen om er een te hebben.
‫Ten slotte wil ik hier iets aanstippen waar je
‫in het verleden mogelijk beschermd was tegen het doen van bepaalde schadelijke dingen
‫in Docker a Swarm, waar als je iets probeert te veranderen of iets te
‫verwijderen dat je niet zou moeten doen, het
‫je van tevoren zou kunnen waarschuwen tijd.
‫Kubernetes heeft de neiging om aan de andere kant te vallen, waar het iets
‫minder eigenzinnig is over hoe je het gebruikt.
‫Wat betekent dat je soms dingen kunt doen
‫die je niet zou moeten doen, zoals mijn voorbeeld eerder
‫van het wijzigen van een ReplicaSet in plaats van het wijzigen
‫van de implementatie erboven.
‫Hetzelfde kan gelden voor het verwisselen van een pod terwijl je dat eigenlijk niet zou
‫moeten doen. U moet het object erboven wijzigen.
‫Dat benadrukt alleen maar dat je de details moet begrijpen
‫van wat je doet, zodat je
‫niet per ongeluk het verkeerde in de verkeerde volgorde verwijdert, wijzigt
‫of aanpast.
‫Vergeet niet om een kubectl delete-implementatie my-apache uit te
‫voeren om deze lezing op te schonen.