Kubernetes nodeSelector gebruiken

Kubernetes Nodeselector Gebruiken



Kubernetes-cluster gebruikt de planningsbeperkingen zoals: taints, labels, toleranties en nodeSelector om de werklast op verschillende node-pools te scheiden en te plannen. Planningsbeperkingen zijn een algemene vereiste in Kubernetes voor infrastructuurbeheer. In dit artikel gaan we ons concentreren op de planningsbeperkingen van nodeSelector. We zullen onderzoeken wat een nodeSelector is, hoe het werkt en hoe het kan worden gebruikt in Kubernetes. We zullen een eenvoudig scenario presenteren om u te helpen begrijpen hoe u de Kubernetes nodeSelector efficiënt kunt gebruiken.

Wat is Kubernetes nodeSelector?

Een nodeSelector is een planningsbeperking in Kubernetes die een kaart specificeert in de vorm van een sleutel: waardepaar aangepaste podkiezers en knooppuntlabels worden gebruikt om het sleutel, waardepaar te definiëren. De nodeSelector die op het knooppunt is gelabeld, moet overeenkomen met het sleutel: waarde-paar, zodat een bepaalde pod op een specifiek knooppunt kan worden uitgevoerd. Om de pod te plannen, worden labels gebruikt op knooppunten en nodeSelectors worden gebruikt op pods. Het OpenShift Container Platform plant de pods op de knooppunten met behulp van de nodeSelector door de labels te matchen.

Bovendien worden labels en nodeSelector gebruikt om te bepalen welke pod op een specifiek knooppunt moet worden gepland. Wanneer u de labels en nodeSelector gebruikt, labelt u eerst het knooppunt zodat de pods niet uit de planning worden gehaald en voegt u vervolgens de nodeSelector toe aan de pod. Om een ​​bepaalde pod op een bepaald knooppunt te plaatsen, wordt de nodeSelector gebruikt, terwijl je met de clusterbrede nodeSelector een nieuwe pod kunt plaatsen op een bepaald knooppunt dat ergens in het cluster aanwezig is. De project nodeSelector wordt gebruikt om de nieuwe pod op een bepaald knooppunt in het project te plaatsen.







Vereisten

Als u de Kubernetes nodeSelector wilt gebruiken, moet u ervoor zorgen dat de volgende hulpprogramma's op uw systeem zijn geïnstalleerd:



  • Ubuntu 20.04 of een andere nieuwste versie
  • Minikube-cluster met minimaal één worker-node
  • Kubectl-opdrachtregelprogramma

Nu gaan we naar het volgende gedeelte waar we laten zien hoe u nodeSelector kunt gebruiken op een Kubernetes-cluster.



nodeSelector-configuratie in Kubernetes

Een pod kan worden beperkt om alleen op een specifiek knooppunt te kunnen worden uitgevoerd met behulp van de nodeSelector. De nodeSelector is een knooppuntselectiebeperking die is opgegeven in de podspecificatie PodSpec. Simpel gezegd, de nodeSelector is een planningsfunctie die u controle geeft over de pod om de pod te plannen op een knooppunt met hetzelfde label dat door de gebruiker is opgegeven voor het nodeSelector-label. Om de nodeSelector in Kubernetes te gebruiken of te configureren, hebt u het minikube-cluster nodig. Start het minikube-cluster met de onderstaande opdracht:





> start minikube

Nu het minikube-cluster succesvol is gestart, kunnen we beginnen met de implementatie van de configuratie van de nodeSelector in Kubernetes. In dit document begeleiden we u bij het maken van twee implementaties, de ene is zonder enige nodeSelector en de andere is met de nodeSelector.



Implementatie configureren zonder nodeSelector

Eerst zullen we de details extraheren van alle knooppunten die momenteel actief zijn in het cluster met behulp van de onderstaande opdracht:

> kubectl krijgt knooppunten

Met deze opdracht worden alle knooppunten in het cluster weergegeven met de details van naam, status, rollen, leeftijd en versieparameters. Zie de onderstaande voorbeelduitvoer:

Nu gaan we controleren welke taints actief zijn op de knooppunten in het cluster, zodat we kunnen plannen om de pods dienovereenkomstig op het knooppunt te implementeren. De onderstaande opdracht moet worden gebruikt om de beschrijving te krijgen van de taints die op het knooppunt zijn toegepast. Er mogen geen taints actief zijn op het knooppunt, zodat de pods er gemakkelijk op kunnen worden ingezet. Laten we dus eens kijken welke taints actief zijn in het cluster door de volgende opdracht uit te voeren:

> kubectl beschrijft knooppunten minikube | greep Smet

Uit de bovenstaande uitvoer kunnen we zien dat er geen taint is toegepast op het knooppunt, precies wat we nodig hebben om de pods op het knooppunt in te zetten. Nu is de volgende stap het maken van een implementatie zonder daarin een nodeSelector op te geven. Overigens zullen we een YAML-bestand gebruiken waarin we de nodeSelector-configuratie zullen opslaan. De hier bijgevoegde opdracht wordt gebruikt voor het maken van het YAML-bestand:

> nano deplond.yaml

Hier proberen we een YAML-bestand met de naam deplond.yaml te maken met de opdracht nano.

Na het uitvoeren van deze opdracht hebben we een bestand deplond.yaml waarin we de implementatieconfiguratie zullen opslaan. Zie de onderstaande implementatieconfiguratie:

Nu gaan we de implementatie maken met behulp van het implementatieconfiguratiebestand. Het bestand deplond.yaml wordt samen met de opdracht 'create' gebruikt om de configuratie te maken. Zie de volledige opdracht hieronder:

> kubectl maken -f deplond.yaml

Zoals hierboven weergegeven, is de implementatie succesvol gemaakt, maar zonder nodeSelector. Laten we nu de knooppunten controleren die al beschikbaar zijn in het cluster met de onderstaande opdracht:

> kubectl krijgt pods

Hiermee worden alle beschikbare pods in het cluster weergegeven. Zie de onderstaande uitvoer:

  Tekstbeschrijving automatisch gegenereerd

Vervolgens moeten we het aantal replica's wijzigen, wat kan worden gedaan door het bestand deplond.yaml te bewerken. Open gewoon het bestand deplond.yaml en bewerk de waarde van replica's. Hier veranderen we de replica's: 3 in replica's: 30. Zie de wijziging in de onderstaande momentopname:

Nu moeten de wijzigingen worden toegepast op de implementatie vanuit het implementatiedefinitiebestand en dat kan worden gedaan met behulp van de volgende opdracht:

> kubectl toepassen -f deplond.yaml

  Tekstbeschrijving automatisch gegenereerd

Laten we nu meer details van de pods bekijken door de optie -o wide te gebruiken:

> kubectl krijgt pods -De breed

  Tekstbeschrijving automatisch gegenereerd

Uit de bovenstaande uitvoer kunnen we zien dat de nieuwe knooppunten zijn gemaakt en gepland op het knooppunt, aangezien er geen taint actief is op het knooppunt dat we gebruiken vanuit het cluster. Daarom moeten we specifiek een taint activeren om ervoor te zorgen dat de pods alleen op het gewenste knooppunt worden gepland. Daarvoor moeten we het label op het hoofdknooppunt maken:

> kubectl label knooppunten master on-master= WAAR

Implementatie configureren met nodeSelector

Om de implementatie te configureren met een nodeSelector, volgen we hetzelfde proces dat is gevolgd voor de configuratie van de implementatie zonder enige nodeSelector.

Eerst maken we een YAML-bestand met de opdracht 'nano' waarin we de configuratie van de implementatie moeten opslaan.

> nano nd.yaml

Sla nu de implementatiedefinitie op in het bestand. U kunt beide configuratiebestanden vergelijken om het verschil tussen de configuratiedefinities te zien.

Maak nu de implementatie van de nodeSelector met de onderstaande opdracht:

> kubectl maken -f nd.yaml

Haal de details van de pods op door de brede vlag -o te gebruiken:

> kubectl krijgt pods -De breed

  Tekst, kalender Beschrijving automatisch gegenereerd met gemiddeld vertrouwen

Uit de bovenstaande uitvoer kunnen we zien dat de pods worden ingezet op het minikube-knooppunt. Laten we het aantal replica's wijzigen om te controleren waar de nieuwe pods in het cluster worden geïmplementeerd.

Pas de nieuwe wijzigingen toe op de implementatie met behulp van de volgende opdracht:

> kubectl toepassen -f nd.yaml

  Tekstbeschrijving automatisch gegenereerd

Gevolgtrekking

In dit artikel hadden we een overzicht van de nodeSelector-configuratiebeperking in Kubernetes. We hebben geleerd wat een nodeSelector is in Kubernetes en met behulp van een eenvoudig scenario hebben we geleerd hoe we een implementatie kunnen maken met en zonder nodeSelector-configuratiebeperkingen. U kunt dit artikel raadplegen als u nieuw bent in het nodeSelector-concept en alle relevante informatie vindt.