Como criar Namespaces no Kubernetes
Nesta página
- Pré-requisitos
- O que faremos
- Criar Namespaces
- 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.
- Ele ajuda na comunicação entre pods usando o mesmo namespace.
- Ele atua como um cluster virtual que pode ficar sobre o mesmo cluster físico.
- 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
- 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
- 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.