Namespaces aanmaken in Kubernetes

Een namespace is nuttig als meerdere teams hetzelfde cluster gebruiken. Deze wordt gebruikt als er kans is op naamsbotsingen. Het kan een virtuele muur zijn tussen meerdere clusters. We kunnen bijvoorbeeld geen pods met dezelfde naam in een Kubernetes Cluster hebben, maar met behulp van Namespace kunnen we de Cluster virtueel opdelen en pods met dezelfde naam hebben.

Enkele van de belangrijke functionaliteiten van een Namespace zijn als volgt.

  1. Het helpt pod-to-pod communicatie met gebruik van dezelfde naamruimte.
  2. Het fungeert als een virtuele cluster die bovenop dezelfde fysieke cluster kan zitten.
  3. Het zorgt voor een logische scheiding tussen de teams en hun omgevingen.

In dit artikel zullen we een namespace aanmaken en een pod maken in de nieuw aangemaakte namespace. We zullen ook zien hoe een namespace als standaard namespace kan worden ingesteld.

Vereisten

  1. Kubernetes Cluster met minstens 1 worker node.
    Wil je leren hoe je een Kubernetes Cluster maakt, klik danhier. Deze gids helpt je een Kubernetes cluster te maken met 1 Master en 2 Nodes op AWS Ubuntu 18.04 EC2 Instances.

Wat we zullen doen

  1. Namespaces aanmaken

Namespaces aanmaken

Om een lijst te maken van alle namespaces die in de Kubernetes Cluster beschikbaar zijn, voer je het volgende commando uit.

kubectl get namespace #Get all namespace in the cluster

get-namespaces

Laten we nu proberen een pod te maken in een bepaalde namespace die niet bestaat.

Om een pod te maken in de “test-env” namespace voer je het volgende commando uit.

kubectl run nginx --image=nginx --namespace=test-env #Try to create a pod in the namespace that does not exist.

De pod zal niet gemaakt worden in de niet bestaande namespace vandaar dat we eerst een namespace moeten maken.

Om een namespace “test-env” te maken voer je het volgende commando uit.

kubectl create namespace test-env #Create a namespace
kubectl get namespace #Get a list of namespaces

create-namespace

Nu hebben we een namespace waarin we een pod willen maken.

Om een pod te maken in de door ons gemaakte namespace geef je de optie –namespace=test-env aan het commando door.

kubectl run nginx --image=nginx --namespace=test-env #Create a pod in the namespace.

Als je pods probeert te krijgen zonder de namespace te specificeren krijg je geen details van de pod.

kubectl get pods #Get a list of pods

Om details te krijgen van de pod die bij de “test-env” namespace hoort gebruik je het volgende commando.

kubectl get pods --namespace=test-env #Get a list of pods in the specified namespace

creëer-pod-in-de-naamruimte-gemaakt

Als je je namespace als standaard namespace wilt instellen zodat het niet nodig is de namespace optie in het commando te specificeren, gebruik dan het volgende commando.

kubectl config set-context --current --namespace=test-env #Set default namespace

Nu is het niet meer nodig de namespace in het commando te specificeren om details van de pod te krijgen.

kubectl get pods #Get a list of pods from the default namespace 

set-the-namespace-in-config

Om over te schakelen naar de standaard namespace gebruik je het volgende commando.

kubectl config set-context --current --namespace=default #Check the namespace to default
kubectl get pods #Get a list of pods

terug-te-keren-naar-de-standaard-namespace

Om te controleren welke de standaard namespace is gebruik je de volgende commando’s.

kubectl config view --minify | grep namespace: #Extract the namespace from the kubernetes config file.
kubectl config set-context --current --namespace=test-env #Set default namespace in the config file.
kubectl config view --minify | grep namespace:

check-current-namespace

Controleer welke Kubernetes middelen een namespace zijn, voer het volgende commando uit.

kubectl api-resources --namespaced=true #Get Kubernetes objects which can be in a namespaces

bronnen-met-namespace

Om te zien welke Kubernetes middelen geen namespace zijn, gebruik je het volgende commando.

kubectl api-resources --namespaced=false #Get a list of Kubernetes objects that can never be in a namespace

resources-without-namespace

Je kunt details van de namespace krijgen met het hieronder genoemde commando.

kubectl get namespaces #Get a list of namespaces.
kubectl describe namespace test-env #Get details of a namespace.

beschrijf-namespace

Een namespace kan ook aangemaakt worden met een .yml bestand.

vim namespace-using-file.yml #Create a namespace definition file

create-namespace-using-yml-file

Voer het volgende commando uit om een namespace te maken die in het object definitie bestand staat.

kubectl create -f namespace-using-file.yml #Create a namespace using a .yml file
kubectl get namespaces #Get a list of namespaces

get-namespaces

Als je de namespace niet meer nodig hebt kan hij eenvoudig verwijderd worden met het volgende commando.

kubectl get namespaces #Get a list of namespaces
kubectl delete namespaces env-prod test-env #Delete a namespace
kubectl get namespaces #Get a list of namespaces

delete-namespaces

Conclusie

In dit artikel leerden we over namespaces, het maken van een namespace, en het veranderen van de standaard namespace, het controleren van de Kubernetes resources die wel en niet in een namespace staan. We zagen ook hoe een Kubernetes object, hier pod, kan worden aangemaakt in een naamruimte naar keuze.