‫Ik wil even de tijd nemen om te praten
‫over DNS en Kubernetes. Soms nemen we het als
‫vanzelfsprekend aan in Docker en Swarm en Kubernetes, DNS werkt gewoon.
‫Ik wil je heel snel wat details geven over wat er
‫op de achtergrond gebeurt voordat we verder gaan.
‫Wat je tot nu toe hebt meegemaakt, is dat als
‫je in een container zit en je een servicenaam krult of pingt,
‫je het antwoord terugkrijgt.
‫Er is dus duidelijk een
‫DNS-server die iets doet om services aan
‫DNS-namen te koppelen. Geloof het of niet, DNS
‫is optioneel als service of add-on binnen uw Kubernetes-cluster.
‫Maar iedereen zet er een in.
‫Als je het installeert, of het nu kubeadm is, of Docker
‫Desktop, of wat je ook gebruikt, dan zal er
‫een DNS-server in zitten.
‫Beginnend met 1. 11 Release, CoreDNS is
‫de standaard. Het is een beetje de standaard.
‫Er is een eerdere genaamd KubeDNS, die op dit moment is
‫verouderd, en we zouden nu allemaal CoreDNS moeten gebruiken.
‫Dit staat bekend als op DNS gebaseerde servicedetectie.
‫Je had het in Docker. Je had het in Swarm.
‫In Kubernetes werkt het in principe op dezelfde manier,
‫waarbij u bij het maken van een service de hostnaam krijgt die
‫overeenkomt met de service. Maar die hostnaam maakt deel
‫uit van een grotere naam, de volledig gekwalificeerde domeinnaam.
‫Dat kregen we niet in Docker of Swarm.
‫Ze waren eigenlijk alleen gefocust op hostnamen.
‫Met Kubernetes krijgen we meer opties, toch.
‫Dus, out-of-the-box, je gaat gewoon van de ene service naar de
‫andere praten met behulp van de hostnaam.
‫Als u naamruimten gaat gebruiken, zullen we dat een
‫beetje later bespreken.
‫Zie naamruimten als een manier om alle verschillende
‫delen van verschillende apps op te delen in
‫deze gebieden binnen hetzelfde cluster, die niet echt met
‫elkaar botsen.
‫U kunt technisch gezien niet dezelfde pod,
‫dezelfde service of dezelfde implementatie, met dezelfde namen,
‫in dezelfde naamruimte maken.
‫Als u andere naamruimten maakt, wat
‫u kunt doen naarmate u meer gevorderd bent, kunt
‫u dezelfde dingen in verschillende naamruimten benoemen en ze
‫zullen niet botsen. Dat is inclusief DNS.
‫Als u hier naar de volledig gekwalificeerde domeinnaamstandaard
‫kijkt, ziet u dat deze de hostnaam heeft die we tot nu
‫toe hebben gebruikt.
‫Dan de naamruimtenaam.
‫Als u deze volledige naam zou typen, zou u de
‫naamruimte moeten specificeren.
‫Standaard heb je standaard gewerkt.
‫Dat is de standaard naamruimte voor apps.
‫Als u een snelle opdracht uitvoert op
‫de opdrachtregel van kubectl get namespaces,
‫ziet u hier een lijst.
‫Ik gebruik Docker Desktop, dus ik krijg daar een extra die
‫Docker zegt, dus dat is slechts een deel
‫van je Docker Desktop die een aantal speciale Docker-services uitvoert die
‫een deel van de magie doen die Docker
‫biedt in een Kubernetes-cluster. De standaardwaarde is degene waarin
‫u op een basiscluster bent gedumpt. Dan zijn de andere standaard die uit
‫de doos komen met Kubernetes.
‫Het systeem één bestuurt duidelijk het besturingsvlak.
‫Dat is het systeem daar.
‫Het publiek, we gebruiken niet echt veel.
‫Er staan maar een paar dingen in.
‫Dan is node-lease nieuw in
‫nieuwere Kubernetes-omgevingen.
‫Dit zijn echt geavanceerde onderwerpen die je niet echt nodig
‫hebt om te beginnen. Je zou heel goed je clusters
‫kunnen runnen zonder ooit echt veel te knoeien
‫met die naamruimten. Meestal heb je
‫te maken met de standaard naamruimte en
‫naarmate je groter wordt, zul je mogelijk meerdere naamruimten
‫maken voor verschillende toepassingen die mogelijk dezelfde naam hadden.
‫Of misschien wil je hetzelfde ding meerdere keren implementeren, met dezelfde
‫servicenamen, podnamen, implementatienamen, en je zou niet willen dat ze
‫met elkaar in botsing komen, dus zou je
‫daarvoor verschillende naamruimten maken.
‫Het lijkt een beetje op Swarm-stacks, maar er is zoveel
‫verschil tussen de manier waarop naamruimten werken
‫en stapels, dat ik echt niet wil dat je
‫denkt dat ze precies hetzelfde zijn.
‫Naamruimten zijn in feite slechts een organisatorische
‫parameter, en het regelt niet kant-en-klaar netwerksegmentatie
‫of iets dergelijks.
‫Dat wordt geavanceerder. Daar kun je
‫je later zorgen over maken. Laten we daar terugkomen op
‫deze volledig gekwalificeerde domeinnaam. Nu u de hostnaam
‫en het naamruimtegedeelte kent, is het . svc voor service, want
‫dat is wat we hier zoeken.
‫Dat cluster. local die u aan het einde
‫ziet, is de standaard service-DNS-naam die aan uw cluster wordt gegeven wanneer
‫u deze maakt of opdraait.
‫Als u iets als kubeadm gebruikt om uw cluster uit
‫te bouwen, kunt u die naam wijzigen voordat
‫u uw cluster bouwt. Dit is de standaard.
‫U weet of u het moet wijzigen op basis
‫van misschien het maken van meerdere Kubernetes-clusters,
‫of dat u externe vereisten heeft voor hoe
‫uw apps elkaar vinden. Nogmaals, al deze DNS bevindt zich
‫alleen in uw cluster.
‫Het is geen DNS-service die externe services kunnen
‫zien of gebruiken, tenzij ze op afstand
‫met de Kubernetes-API praten.