‫Kubernetes is een heleboel dingen.
‫Ik wil zeker een deel van de basistopologie
‫en delen
‫van het systeem afbreken voordat we een app
‫op Kubernetes gaan installeren. De eerste is Kubernetes zelf.
‫Dat is in wezen waar ik het over heb.
‫Het hele systeem.
‫Ofwel een enkele server of multi-server setup met alle
‫onderdelen bij elkaar die er zijn om uw apps uit te voeren.
‫We korten dat soms af als K8s.
‫Normaal gesproken, als ik het over Kubernetes heb, zeg
‫ik gewoon Kubernetes, maar vaak zie je
‫schriftelijk, of zelfs in de documentatie, de
‫K8's, en dat is in wezen een korte, verkorte
‫versie van Kubernetes. Als je er echt naar
‫kijkt, betekent de 8 de 8 letters tussen de K en de S.
‫Daarom deden ze het. De K, acht letters en dan S.
‫Dat is hun afkorting.
‫Soms noemen mensen het Kube.
‫Maar in wezen gaan we het hier over hetzelfde hebben
‫als we Kubernetes en K8s zeggen.
‫Nu is kubectl de opdrachtregeltool die u gaat gebruiken om
‫met de Kubernetes API te praten.
‫De belangrijkste manier waarop we met Kubernetes praten, is via de API.
‫Er zijn meerdere tools die dat kunnen.
‫In feite zijn er veel tools waarmee ze met de API kunnen praten.
‫Degene die echt officieel uit het project komt en die we het grootste
‫deel van de tijd zullen gebruiken, is kubectl.
‫Nu zie je misschien dat dit in andere
‫video's of talks wordt
‫genoemd, als kubusknuffel, of kubusknuffel, of kube-controle, allerlei andere
‫soorten of misschien zelfs kubectl, maar dat
‫is allemaal hetzelfde.
‫Het zijn in wezen verschillende mensen die het op
‫een andere manier zeggen. Ongeveer een jaar geleden
‫hebben ze zelfs besloten om deze tool officieel kubectl
‫te noemen in de documentatie.
‫Maar er is echt geen verkeerde manier om het te zeggen.
‫Net als bij Swarm, waar we knooppunten de servers noemen
‫die zich in dat cluster bevinden, verwijst Kubernetes
‫ook naar dingen als knooppunten.
‫Dus die terminologie is op zijn minst hetzelfde tussen de twee.
‫Kubelet is de container die een kleine,
‫kleine agent op elk knooppunt zal uitvoeren, zodat
‫dat knooppunt terug kan praten met de Kubernetes-master.
‫Onthoud dat, aangezien Docker Swarm had ingebouwd, de aparte
‫agent niet echt nodig was.
‫Dat was allemaal ingebouwd in de Docker Engine.
‫Nu Kubernetes daarbovenop draait, heeft het zijn eigen
‫engine-API nodig die praat met de lokale Docker, of de lokale
‫runtime, wat dat ook mag zijn.
‫Vervolgens praat het terug naar het besturingsvlak, of master,
‫dat verantwoordelijk is voor het uitvoeren van
‫het Kubernetes-cluster.
‫Het besturingsvlak, ook wel de master genoemd, is
‫verantwoordelijk voor het cluster.
‫Als je bekend bent met Swarm.
‫In Swarm hadden we de manager.
‫Er kunnen een of meer beheerders zijn.
‫We wilden een oneven aantal managers.
‫Dan waren er arbeiders die al het werk deden.
‫Als je je van Swarm herinnert, kunnen de managers ook
‫arbeiders zijn omdat ze ook zelf
‫containers kunnen runnen. Dus je zou technisch
‫gezien maar één server kunnen hebben. Je zou veel servers kunnen hebben en
‫de twee rollen kunnen splitsen. Veel daarvan lijkt erg op Kubernetes.
‫We hebben er alleen iets andere namen voor.
‫Het besturingsvlak, ook iets dat
‫we in Swarm hebben uitgevoerd, is het deel waar
‫de servers alle dingen uitvoeren die in wezen
‫de leiding hebben.
‫Het is meer dan één container. Het is een groep containers.
‫Ze regelen individuele dingen.
‫Ze nemen het Linux-principe van één ding doen en het
‫goed doen, en ze nemen dat en
‫splitsen alles op. Dus in wezen doet elk
‫van deze onderdelen één ding en doet het het goed, en het vereenvoudigt het
‫ontwerp in termen van de ontwikkeling.
‫Maar als je dit moet bouwen en uitvoeren, wordt het
‫een beetje moeilijker om op te zetten omdat er
‫meer aan de hand is. Dit besturingsvlak bevat containers
‫die de API, de planner, zullen uitvoeren, je hebt
‫eigenlijk een database-backend nodig die etcd wordt
‫genoemd.
‫Dan heb je controller manager.
‫Je hebt waarschijnlijk iets nodig dat coreDNS wordt genoemd om je
‫DNS af te handelen, enzovoort.
‫We hebben hier veel onderdelen, maar laten we
‫het in een diagram zetten en kijken of dit zinvol is.
‫Ik vergelijk het met Swarm, want dat heb je in deze
‫cursus al geleerd.
‫Als je maar één machine had, zoals
‫we zo gaan doen om te leren, zouden alle dingen waar
‫ik eerder naar verwees allemaal op dezelfde server staan.
‫Er zouden een hoop lopende containers zijn. Dat is wat
‫je zult zien op zaken als minikube en Docker Desktop wanneer
‫je een enkel knooppunt Kubernetes gebruikt.
‫In de echte wereld, als je op servers komt, ga je
‫dit spul uitbreken. Ik dacht dat
‫ik je heel snel, op een netwerkdiagram, zou laten zien hoe dit eruit zou
‫kunnen zien en de verschillende onderdelen zou uitleggen.
‫Laten we eerst aannemen dat je een master hebt.
‫In een opstelling met meerdere masters zou
‫je er drie hebben. Net als bij Swarm heb je
‫oneven getallen nodig omdat het hetzelfde RAFT-protocol gebruikt om consensus te behouden,
‫net als Swarm.
‫In de documentatie staan deze allemaal bekend als master.
‫Maar het wordt een beetje verwarrend als je meer dan één master hebt, omdat
‫het dezelfde opstelling is waar je er maar één kunt hebben die echt
‫het werk doet van het schrijven van de etcd.
‫Deze worden ook wel het controlevlak genoemd.
‫Je herkent die term van Swarm, die
‫specifiek in Swarm verwees naar de
‫protocollen over het netwerk waardoor de masters en de
‫nodes allemaal veilig konden praten voor het geven
‫van orders. Maar hier is het een beetje anders.
‫Het besturingsvlak heeft het over de hoofdknooppunten die
‫allemaal beslissingen nemen.
‫Net als bij Swarm hebben we werkknooppunten.
‫In de documentatie worden ze eigenlijk
‫gewoon nodes genoemd. Soms zie je het woord werknemer genoemd.
‫We gaan die knooppunten hier noemen om consistent te zijn.
‫Nogmaals, zoals eerder kunnen deze allemaal containers uitvoeren, maar
‫over het algemeen houdt u uw
‫apps bij de knooppunten en de Kubernetes-beheersystemen bij
‫de masters.
‫Al deze draaien bovenop
‫Docker of een andere container-runtime zoals containerd
‫of crio.
‫Binnen elke master moeten we meerdere containers laten
‫draaien om het systeem onder
‫controle te houden. De eerste daarvan is etcd.
‫Etcd is een gedistribueerd opslagsysteem
‫voor sleutelwaarden.
‫Het lijkt erg op hoe Swarm
‫werkt met zijn RAFT-algoritmesysteem.
‫Het is vergelijkbaar met etcd, maar etcd is een apart
‫product en is iets dat je zonder Kubernetes kunt installeren om
‫alleen configuratiegegevens op te slaan.
‫Het gebruikt hetzelfde RAFT-protocol, dus veel van dezelfde regels
‫zijn van toepassing. Je hebt oneven nummers nodig.
‫Je kunt met één beginnen, maar als je echte fouttolerantie wilt,
‫heb je er drie nodig.
‫Enzovoort. Bovendien moet
‫u meerdere Kubernetes-containers uitvoeren die gegevens in
‫etcd opslaan en het cluster beheren.
‫Als eerste is er de API, de manier waarop
‫we met dit cluster praten en er orders aan geven.
‫De volgende is de plannercontainer, die bepaalt hoe en waar
‫uw containers op de knooppunten worden geplaatst in objecten die
‫pods worden genoemd.
‫De volgende is de controllermanager, die kijkt naar de status van het hele
‫cluster en alles wat erin draait, en het gebruikt
‫de API om dat te doen.
‫Het neemt de bevelen op die het geven, of de specificaties, en bepaalt
‫het verschil tussen wat je het vraagt te doen en wat
‫er werkelijk aan de hand is.
‫Het is in feite
‫een lus die het hele systeem ziet en uitzoekt
‫hoe alles wat momenteel gebeurt hetzelfde te maken
‫als wat je het hebt gevraagd. Dan heb je iets nodig om DNS
‫te besturen, wat niet is ingebouwd, en dat is standaard coreDNS.
‫Afhankelijk van andere add-ons die je later
‫krijgt, zoals netwerken of opslag, web en andere
‫functies, zul je hier ook meer
‫containers hebben.
‫Op alle nodes hebben ze een agent nodig.
‫Dat staat bekend als kubelet.
‫Om te beginnen heb je kube-proxy nodig om het
‫netwerk te besturen.
‫Net als bij Docker worden deze allemaal herhaald
‫voor hun rol. De masters zouden, als
‫je multimaster zou doen, al diezelfde containers hebben opgezet.
‫Elk knooppunt dat u instelt voor werkknooppunten, heeft
‫daar ook die ten minste twee
‫containers voor beheer. Kubernetes is ontworpen om veel
‫problemen op verschillende manieren op te lossen.
‫Je zult merken dat je mogelijk meer dingen toevoegt
‫aan masters, meer dingen aan nodes, zoals netwerken.
‫Aan de hoofdkant zijn er ook tal van andere optionele hulpmiddelen om
‫eraan toe te voegen.
‫Laten we dit op uw lokale systeem installeren om te
‫leren.