Pesquisa de site

Como criar Namespaces no Kubernetes


Nesta página

  1. Pré-requisitos
  2. O que faremos
  3. Criar Namespaces
  4. Conclusão

Um namespace é útil quando várias equipes estão usando o mesmo cluster. Isso é usado quando há um potencial de colisão de nomes. Pode ser uma parede virtual entre vários clusters. Por exemplo, não podemos ter pods com o mesmo nome em um Kubernetes Cluster, mas usando Namespace podemos dividir virtualmente o Cluster e ter pods com o mesmo nome.

Algumas das funcionalidades importantes de um Namespace são as seguintes.

  1. Ele ajuda na comunicação entre pods usando o mesmo namespace.
  2. Ele atua como um cluster virtual que pode ficar sobre o mesmo cluster físico.
  3. Ele fornece uma separação lógica entre as equipes e seus ambientes.

Neste artigo, criaremos um namespace e um pod no namespace recém-criado. Também veremos como um namespace pode ser definido como um namespace padrão.

Pré-requisitos

  1. Cluster do Kubernetes com pelo menos 1 nó de trabalho.
    Se quiser aprender a criar um Cluster do Kubernetes, clique aqui. Este guia ajudará você a criar um cluster Kubernetes com 1 mestre e 2 nós em instâncias AWS Ubuntu 18.04 EC2.

O que nos faremos

  1. Criar Namespaces

Criar Namespaces

Para listar todos os namespaces disponíveis no Kubernetes Cluster, execute o seguinte comando Você pode ter vários namespaces e os namespaces podem ter metadados de namespace.

kubectl get namespace #Get all namespace in the cluster

Agora vamos tentar criar um pod em um namespace específico que não existe.

Para criar um pod no namespace \test-env\, execute o seguinte comando.

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

O pod não será criado no namespace que não existe, portanto, primeiro precisamos criar um namespace.

Para criar um namespace \test-env\ execute o seguinte comando (k8s create namespace).

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

Agora temos um namespace no qual queremos criar um pod.

Para criar um pod no namespace, criamos a opção pass --namespace=test-env para o comando.

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

Se você tentar obter pods sem especificar o namespace, não obterá detalhes do pod.

kubectl get pods #Get a list of pods

Para obter detalhes do pod que pertence ao namespace \test-env\, use o seguinte comando.

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

Se você deseja definir seu namespace como namespace padrão para que não seja necessário especificar a opção de namespace no comando, use o seguinte comando.

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

Agora não há necessidade de especificar o namespace no comando para obter detalhes do pod.

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

Para alternar para o namespace padrão, use o seguinte comando.

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

Para verificar qual é o namespace padrão, use os seguintes comandos.

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:

Verifique quais recursos do Kubernetes são um namespace, execute o seguinte comando.

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

Para ver quais recursos do Kubernetes não estão em um namespace, use o seguinte comando.

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

Você pode obter detalhes do namespace usando o comando mencionado abaixo.

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

Um namespace também pode ser criado usando um arquivo .yml.

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

Execute o seguinte comando para criar um namespace especificado no arquivo de definição de objeto.

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

Quando você não precisar mais do seu namespace, ele pode simplesmente ser excluído usando o seguinte 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

Use o comando \kubectl change namespace\ para alternar para um namespace diferente.

Conclusão

Neste artigo, aprendemos sobre namespaces, criando um namespace e alterando o namespace padrão, verificando os recursos do Kubernetes que estão e não estão em um namespace. Também vimos como um objeto Kubernetes, aqui pod, pode ser criado em um namespace de nossa escolha.

Artigos relacionados: