Ricerca nel sito web

Come creare spazi dei nomi in Kubernetes


Su questa pagina

  1. Prerequisiti
  2. Cosa faremo
  3. Crea spazi dei nomi
  4. Conclusione

Uno spazio dei nomi è utile quando più team utilizzano lo stesso cluster. Viene utilizzato quando esiste un potenziale conflitto di nomi. Può essere un muro virtuale tra più cluster. Ad esempio, non possiamo avere pod con lo stesso nome in un cluster Kubernetes ma utilizzando Namespace possiamo virtualmente dividere il cluster e avere pod con lo stesso nome.

Alcune delle funzionalità importanti di uno spazio dei nomi sono le seguenti.

  1. Aiuta la comunicazione da pod a pod utilizzando lo stesso spazio dei nomi.
  2. Funziona come un cluster virtuale che può trovarsi sopra lo stesso cluster fisico.
  3. Fornisce una separazione logica tra i team e i loro ambienti.

In questo articolo, creeremo uno spazio dei nomi e creeremo un pod nello spazio dei nomi appena creato. Vedremo anche come impostare uno spazio dei nomi come spazio dei nomi predefinito.

Prerequisiti

  1. Cluster Kubernetes con almeno 1 nodo di lavoro.
    Se vuoi imparare a creare un cluster Kubernetes, fai clic qui. Questa guida ti aiuterà a creare un cluster Kubernetes con 1 master e 2 nodi su istanze AWS Ubuntu 18.04 EC2.

Cosa faremo

  1. Crea spazi dei nomi

Crea spazi dei nomi

Per elencare tutti gli spazi dei nomi disponibili nel cluster Kubernetes, esegui il seguente comando Puoi avere più spazi dei nomi e gli spazi dei nomi possono avere metadati dello spazio dei nomi.

kubectl get namespace #Get all namespace in the cluster

Ora proviamo a creare un pod in un particolare spazio dei nomi che non esiste.

Per creare un pod nello spazio dei nomi \test-env\ eseguire il seguente comando.

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

Il pod non verrà creato nello spazio dei nomi che non esiste, quindi dobbiamo prima creare uno spazio dei nomi.

Per creare uno spazio dei nomi \test-env\ eseguire il seguente comando (k8s create namespace).

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

Ora abbiamo uno spazio dei nomi in cui vogliamo creare un pod.

Per creare un pod nello spazio dei nomi, abbiamo creato l'opzione pass --namespace=test-env al comando.

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

Se provi a ottenere i pod senza specificare lo spazio dei nomi, non otterrai i dettagli del pod.

kubectl get pods #Get a list of pods

Per ottenere i dettagli del pod che appartiene allo spazio dei nomi \test-env\, utilizza il seguente comando.

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

Se vuoi impostare il tuo spazio dei nomi come spazio dei nomi predefinito in modo che non sia necessario specificare l'opzione dello spazio dei nomi nel comando, utilizza il seguente comando.

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

Ora non è necessario specificare lo spazio dei nomi nel comando per ottenere i dettagli del pod.

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

Per passare allo spazio dei nomi predefinito utilizzare il seguente comando.

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

Per verificare qual è lo spazio dei nomi predefinito utilizzare i seguenti comandi.

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:

Verifica quali risorse Kubernetes sono uno spazio dei nomi, esegui il seguente comando.

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

Per vedere quali risorse Kubernetes non si trovano in uno spazio dei nomi, utilizza il seguente comando.

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

È possibile ottenere i dettagli dello spazio dei nomi utilizzando il comando indicato di seguito.

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

È inoltre possibile creare uno spazio dei nomi utilizzando un file .yml.

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

Eseguire il seguente comando per creare uno spazio dei nomi specificato nel file di definizione dell'oggetto.

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

Quando non hai più bisogno del tuo spazio dei nomi, può essere semplicemente cancellato usando il seguente comando.

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

Utilizzare il comando \kubectl change namespace\ per passare a uno spazio dei nomi diverso.

Conclusione

In questo articolo, abbiamo imparato a conoscere gli spazi dei nomi, la creazione di uno spazio dei nomi e la modifica dello spazio dei nomi predefinito, controllando le risorse Kubernetes che sono e non sono in uno spazio dei nomi. Abbiamo anche visto come un oggetto Kubernetes, qui pod, può essere creato in uno spazio dei nomi di nostra scelta.