Kubectl Get List of Namespaces

Kubectl Get List of Namespaces
Kubernetes permite que vários clusters virtuais suportados por um único cluster físico conhecido como namespaces em Kubernetes. Em Kubernetes, o objeto de namespace basicamente divide um único cluster em vários clusters virtuais. Além disso, permite que os recursos físicos sejam divididos em grupos de nome logicamente e permite que um cluster de Kubernetes compartilhe recursos com diferentes grupos.

Neste artigo, as capacidades, as limitações, como configurar espaços para nome e como obter uma lista de espaços de nome serão discutidos. Vamos começar com a definição de namespaces de Kubectl.

O que são namespaces de Kubectl?

Um namespace Kubectl é um objeto em Kubernetes que divide um único cluster físico de Kubernetes em vários clusters virtuais. Todo objeto de namespace define os limites para os nomes que estão incluídos com ele. Em outras palavras, cada objeto de namespace no cluster tem uma identidade única, que é o objeto fundamental e é usado para separar e administrar os clusters de Kubernetes.

Os namespaces de Kubectl são usados ​​para distinguir e alocar logicamente os recursos para um programa, equipe, aplicação, grupo de usuários ou indivíduos específicos. A eficiência dos recursos pode ser impulsionada usando namespaces porque um cluster é usado para várias coleções de cargas de trabalho.

Agora vamos seguir em frente e ver como obter uma lista de espaços para nome e o que o pré -requisito precisa ser cumprido.

Pré -requisito:

Para usar o objeto Kubernetes dos espaços para nome, o cluster Minikube precisa ser instalado. No nosso caso, Ubuntu 20.04 é usado para executar os comandos de objeto de namespace. Duas técnicas diferentes são usadas para iniciar um terminal de cluster minikube. A primeira técnica é acessar o terminal usando a barra de aplicação do sistema operacional. A segunda técnica é acessar a janela do terminal pressionando Ctrl+Alt+T.

Depois de acessar a janela do terminal, inicie o minikube usando o comando de início do minikube. Quando o comando 'minikube inicial' for executado, a seguinte saída será exibida:

Agora vamos ver como e quando usar os namespaces de Kubectl.

Como usar namespaces de Kubectl?

O objeto de namespaces de Kubernetes fornece um mecanismo para segregar o grupo de recursos em um cluster. O nome de todos os recursos deve ser único em um espaço para nome, mas não nos namespaces. No entanto, o escopo de namespaces é aplicável apenas a objetos de namespace como serviços e implantações, mas não para objetos em todo o cluster, como volumes persistentes, nós, aulas de armazenamento, etc.

Para listar os namespaces existentes em um cluster 'kubectl get namespace' comando é usado. Depois de executar o comando, a seguinte saída será gerada:

Observe que o objeto Kubernetes começa com quatro namespaces iniciais: Padrão, Kube-node-Lease, Kube-Public e Kube-System.

Padrão: Namespace para objetos sem nenhum outro objeto.

Lease de nó de kube: Ele contém um objeto de arrendamento que está associado a todos os nós.

Kube-Public: É criado automaticamente e pode ser legível por usuários autenticados e não autenticados.

Kube-System: É criado pelo sistema de Kubernetes.

Como definir o espaço para nome para um pedido?

A bandeira '-NamesaPace' é usada para definir o espaço para nome para uma solicitação. Aqui está o código para definir o espaço para nome para uma solicitação:

Depois de executar o comando 'kubectl run nginx', o servidor lançou o erro porque o pod nginx já existe. No entanto, vamos executar o comando get Pod para obter os namespaces. O comando 'kubectl get pods' é executado para obter os namespaces. Abaixo você pode ver o resultado do comando get Pods.

Como definir as preferências para namespaces de Kubectl?

Os espaços nomes para todos os comandos Kubectl subsequentes podem ser salvos permanentemente usando o comando set-Context. Aqui está o comando para definir a preferência de namespace 'padrão'. Observe que '-namespace = padrão' é fornecido para definir a preferência de Kubectl ao padrão.

Da mesma forma, o comando 'View' precisa ser executado para visualizar o espaço para nome. Veja o código abaixo:

A relação entre DNS e namespaces

Quando um serviço é criado, sua entrada DNS correspondente também é criada. A entrada DNS fornece o nome do serviço, o nome de namespace e o cluster local, o que significa que, se um contêiner apenas usar o nome do serviço, ele se conectará ao espaço de nome de cluster local.

Isso se torna útil ao implantar a mesma configuração em vários espaços nomes, como produção, estadiamento e desenvolvimento. Quando os usuários precisam alcançar os espaços para nome, eles precisam especificar o nome de domínio totalmente qualificado (FQDN).

Objetos que não fazem parte do espaço para nome:

O objeto ou os recursos de Kubernetes fazem parte de algum espaço para nome, eu.e., Controlador de replicação, serviços, pods, etc. No entanto, o próprio objeto de namespace não faz parte de qualquer espaço para nome. Além disso, os volumes, nós persistentes e outros recursos de baixo nível não fazem parte de nenhum espaço de nome.

Para ver quais recursos estão em um espaço de nome e quais recursos não estão em nenhum espaço para nome, o comando de recurso da API é usado. Veja o código abaixo.

Quando os namespaces são definidos como 'true', ele mostrará os nomes dos recursos parte de algum espaço para nome. Por outro lado, quando os namespaces são definidos como 'false', ele mostrará o nome daqueles recursos que não estão em nenhum dos espaços para nome. O 'Kubectl API -RESOURCE -NAMESPACE = Namespace Preference' é usado para ver os recursos do espaço para nome.

Como você pode observar nas saídas acima, as preferências verdadeiras e falsas são dadas para ver qual recurso está em algum espaço de nome e qual não é.

Conclusão:

Este artigo é sobre gerenciar sistemas complicados como o Kubernetes pode ser um grande desafio, mesmo para usuários especializados. No entanto, o forte conhecimento e o comando de um espaço para nome pode facilitar muito as tarefas desafiadoras e complicadas. Um espaço para nome é uma ferramenta poderosa que define a hierarquia, desempenho e segurança do sistema Kubernetes.