‫Nu we het hebben gehad over de vier
‫typen Kubernetes-services, laten we er een paar maken vanaf de opdrachtregel.
‫Eerst moeten we een implementatie maken waarnaar we deze
‫services kunnen verwijzen. Vervolgens maken we verschillende
‫typen services om naar deze implementatie te verwijzen.
‫In deze demo gaan we twee
‫verschillende shells, of verschillende vensters, in uw Kubernetes-omgeving
‫maken, zodat we kunnen zien wat er gebeurt met een
‫watch-commando terwijl we het met de andere commando's doen.
‫Oke. In mijn geval heb ik twee vensters,
‫de ene boven de andere. Het maakt eigenlijk niet uit hoe je dat doet.
‫Het is gewoon om het u gemakkelijker te maken om te zien wat ik aan het doen ben.
‫We gaan de kubectl get pods gebruiken.
‫We gaan een -w toevoegen.
‫Dit is als een horloge-commando waarbij het blijft lopen en ons in
‫de loop van de tijd laat zien hoe dingen veranderen.
‫Je zult merken dat dit een optie is voor
‫meerdere, verschillende kubectl-commando's. We doen dat hier om te zien wat
‫er op de achtergrond gebeurt.
‫krijg pods met -w.
‫Dan gaan we in mijn andere venster
‫een implementatie maken.
‫inzet maken. We gaan dit httpenv noemen.
‫Wat dit gebruikt, is een heel eenvoudige HTTP-webserver
‫die in wezen, wanneer je erop klikt met een
‫cURL, alle omgevingsvariabelen die het op de
‫opdrachtregel krijgt terugspuugt.
‫Het is een heel eenvoudige, rudimentaire manier voor ons om te
‫valideren dat het werkt, maar ook om interessante waarden terug te krijgen, zoals
‫de naam van de pod.
‫Dat soort dingen.
‫Nu we dat hebben gemaakt, ziet u
‫bovenaan dat het containers maakt.
‫Zie het meer als een log waarin elke keer dat iets van status
‫verandert, of de status verandert, of iets dergelijks, je het zult
‫zien als een nieuwe regel die als een logbestand over
‫de pagina wordt afgedrukt.
‫Je zult in die laatste regel zien dat het nu laat zien
‫dat we die pod daar in de actieve staat hebben.
‫Laten we meer van deze pods draaien, zodat we
‫meer dan één van deze containers achter
‫onze service kunnen hebben die we een tweede zullen maken.
‫De opdracht scale is handig bij een implementatie, omdat
‫we hiermee het aantal replica's in één gebruiksvriendelijke
‫opdracht kunnen wijzigen. Natuurlijk zijn er met alles
‫in Kubernetes meerdere manieren om dit te doen, maar dit is
‫de gemakkelijkste manier in onze situatie hier.
‫Oke. Nu zul je zien dat het
‫nog vier pods heeft gemaakt en dat die daar worden weergegeven als actief.
‫Nu gaan we die service maken.
‫Daarvoor gebruiken we het commando bloot.
‫In dit geval vertellen we welke implementatie moet worden
‫blootgesteld en op welke poort die implementatie luistert.
‫Je zult zien dat dit geen van de pods heeft veranderd, omdat
‫dit een extra functie creëert die niet gerelateerd is
‫aan de pods zelf.
‫Dit gaat standaard een cluster-IP maken.
‫Dat is het cluster-IP-type service.
‫Het zal dat voor de
‫implementatie creëren. Laten we eens kijken naar die service die we zojuist hebben gemaakt.
‫Je zou er hier twee moeten zien.
‫De eerste is het Kubernetes-eindpunt.
‫Dat is voor de API.
‫Dan ziet u onze service die we zojuist hebben gemaakt
‫en het type is cluster-IP. Onthoud dat cluster-IP alleen binnen het
‫cluster kan worden gebruikt voor knooppunten en andere pods om er toegang
‫toe te krijgen.
‫Dit IP-adres kunnen we bereiken, maar het hangt af van waar we zijn
‫en of we het kunnen bereiken.
‫Omdat dat IP-adres alleen toegankelijk is
‫vanaf de knooppunten zelf of andere pods in
‫het cluster.
‫Als u Docker Desktop gebruikt en u zich herinnert dat dit
‫niet draait op het host-besturingssysteem van Mac en Windows.
‫Dit draait technisch gezien in een kleine Linux-VM.
‫We moeten in dit geval een andere pod uitvoeren
‫die op dat cluster wordt uitgevoerd, zodat
‫we het kunnen krullen. We willen geen implementatie uitvoeren met een replicaset.
‫In dit geval willen we eigenlijk maar één enkele pod gebruiken.
‫De gemakkelijkste manier om dat te doen is met kubectl run.
‫We gaan een alternatieve generator gebruiken.
‫Misschien herinner je je dat nog van de eerdere fout.
‫We zullen het straks hebben over wat generatoren zijn.
‫Er gebeurt veel in dit commando, dus laten
‫we het opsplitsen. De kubectl-run die je eerder hebt gezien.
‫De generator is het type sjabloon dat we door de
‫run-opdracht willen gebruiken.
‫We zullen daar in een volgende lezing wat meer over vertellen.
‫We kiezen de podsjabloon omdat we alleen
‫een pod willen uitvoeren. We willen geen volledige implementatie met replicasets
‫of iets dergelijks. We gaan het tmp-shell noemen.
‫U zult merken dat sommige van deze opties vergelijkbaar
‫zijn met Docker Run. Dat is met opzet.
‫Een van de toekomstige doelen van
‫het kubectl run-commando is om meer op te treden als
‫een docker run-commando. In feite zullen we het later
‫hebben over hoe het uiteindelijk, standaard, gewoon een pod voor
‫je zal maken en je hoeft deze generatoroptie niet te gebruiken.
‫We gaan hier de --rm gebruiken, wat betekent dat zodra de pod stopt,
‫ga je gang en verwijder je hem.
‫De -it geeft ons een shell in die pod zodra we
‫op het enter-commando hebben gedrukt. Dan vertelt --image ons welk
‫beeld we verkiezen.
‫In dit geval gebruiken we mijn netshoot-afbeelding, die een hele
‫reeks verschillende netwerk- en Linux-hulpprogramma's
‫bevat. Een daarvan is cURL.
‫Vervolgens kunnen we met het run-commando de cmd
‫wijzigen, of het ding dat in de container
‫gaat draaien.
‫We doen dat met een spatie -- spatie.
‫Dat vertelt het run-commando om te stoppen met kijken naar opties
‫en dat alles na die dubbele streepjes het commando is dat moet
‫worden uitgevoerd wanneer ik deze container uitvoer.
‫Je ziet bovenaan dat de tijdelijke shell-pod verschijnt en nu
‫is het een status van actief, en we zijn
‫in de pod met onze bash-prompt.
‫Het is iets waar we het
‫straks over zullen hebben: de servicenaam die we hebben gemaakt,
‫wordt onderdeel van de DNS-naam voor deze service.
‫We kunnen gebruiken... het lijkt erg op wat we net
‫in Docker en Swarm hebben gedaan, we kunnen de servicenaam gebruiken om het met DNS te krijgen.
‫Onthoud dat het op poort 8888 draait.
‫Als we dat doen, krijgen we de reactie
‫terug die ik zou verwachten. Dit httpenv-hulpprogramma
‫dumpt eenvoudig alle omgevingsvariabelen op die machine
‫die zich in die
‫unieke pod bevindt, toch. U zult zien dat de naam van de pod
‫de hostnaam is en dat andere standaardinstellingen van Kubernetes out-of-the-box zijn.
‫Die methode werkt voor ieder van
‫jullie, op elk cluster, zolang je kubectl-opdrachtregel met de
‫API kan praten, zal die opdracht je in een
‫nieuwe pod brengen die die afbeelding in een shell
‫uitvoert. Dat is geweldig.
‫Maar als je Linux gebruikt, is er een eenvoudigere manier.
‫Want de manier waarop Kubernetes werkt, is dat
‫alle nodes en containers standaard out-of-the-box met
‫elkaar kunnen praten. Het knooppunt waarop u
‫zich bevindt, ervan uitgaande dat u Kubernetes op die lokale computer
‫uitvoert, heeft toegang tot al deze privé-IP-adressen.
‫Je zou gewoon het service-IP moeten kunnen cURLen.
‫Laat me uit mijn schulp kruipen en weer
‫een kubectl-service doen.
‫Dat IP-adres voor het cluster-IP moet vanaf uw host
‫kunnen worden opgelost. Je host kent de DNS-naam
‫niet zoals we deden met in de pod, omdat
‫dat exclusief is voor binnen het cluster.
‫Maar het zal het IP-adres kennen en er toegang toe hebben.
‫U kunt het IP-adres :8888 krullen,
‫net zoals u zou doen voor een andere machine in
‫uw netwerk. De reden dat
‫het niet werkt vanuit Docker Desktop is omdat je op
‫Mac of Windows zit wanneer je die commando's
‫typt, en ze staan niet op hetzelfde cluster van
‫Kubernetes als die Linux-VM die je Kubernetes voor je uitvoert.
‫Oke. Laten we doorgaan en die dingen
‫laten lopen voor de volgende lezing waar we meer diensten
‫gaan creëren.