Pesquisa de site

Como usar namespaces do Kubernetes


Para ter uma separação lógica para diferentes grupos de recursos, o Kubernetes nos oferece o recurso de namespaces. Também é conveniente quando você tem um grande ambiente gerenciado por vários usuários ou equipes, e cada um precisa de seu próprio “espaço” para os recursos que lhes são atribuídos para gerenciar e administrar. Esta é uma solução muito melhor do que criar vários clusters Kubernetes apenas para facilitar diferentes grupos de serviços ou implantações e para isolar as equipes em seu próprio espaço.

Cada namespace é um cluster virtual separado e, por padrão, os recursos em diferentes namespaces estão bem isolados uns dos outros e não podem se comunicar entre si, mas isso pode ser alterado editando várias políticas de rede. Em geral, é recomendado manter a comunicação entre namespaces desabilitada, para que os recursos fiquem isolados e mais seguros, reduzindo a superfície de ataque.

Neste tutorial, abordaremos várias maneiras de gerenciar namespaces no Kubernetes em um sistema Linux. Você aprenderá sobre os comandos kubectl que podem ser usados para gerenciar namespaces e ver informações pertinentes sobre namespaces. Vamos começar!

Neste tutorial você aprenderá:

  • Para que são usados os namespaces no Kubernetes?

  • Como visualizar informações sobre namespaces configurados

  • Sintaxe YAML para criar um namespace Kubernetes

  • Como criar ou excluir um namespace

  • Como adicionar um recurso a um namespace no Kubernetes

Use o comando Scale no Kubernetes

VOCÊ SABIA?
A menos que você tenha um ambiente Kubernetes relativamente grande que seja gerenciado por pessoas separadas, ou a menos que você tenha um ambiente muito diversificado que exija algum tipo de isolamento de outros recursos, ele deveria não será necessário criar nenhum namespace extra. O Kubernetes oferece rótulos se você precisar agrupar seus recursos sem a necessidade de criar novos namespaces.

Os exemplos abaixo pressupõem que você já tenha seu cluster Kubernetes instalado e funcionando e tenha acesso ao comando kubectl.

  1. Para visualizar todos os namespaces configurados em seu cluster Kubernetes, execute este comando:

    
    $ kubectl get namespaces
    NAME              STATUS   AGE
    default           Active   22s
    kube-node-lease   Active   24s
    kube-public       Active   24s
    kube-system       Active   24s
    

    Como ainda não configuramos nenhum namespace extra, a saída mostra apenas os quatro namespaces padrão do Kubernetes:

    default é o namespace no qual seus recursos irão por padrão, a menos que especificado de outra forma. kube-node-lease é o namespace para objetos de locação de cada nó, que enviam uma pulsação de volta ao plano de controle. kube-system é o namespace para quaisquer objetos que foram criados pelo próprio Kubernetes. kube-public é o namespace para recursos que precisam estar acessíveis para todos os usuários, independentemente de serem autenticados ou não.

  2. Para ver informações sobre um namespace específico, você pode executar:

    
    $ kubectl get namespaces [name of namespace]
    
  3. O argumento describe fornecerá informações e detalhes extras sobre um namespace que você deseja investigar:

    
    $ kubectl describe namespaces [name of namespace]
    
  4. Para criar um novo namespace, podemos usar a seguinte sintaxe YAML como modelo:

    apiVersion: v1
    kind: Namespace
    metadata:
      name: [name of namespace]

    Em seguida, execute o seguinte comando para adicioná-lo ao Kubernetes:

    
    $ kubectl create -f ./my-new-namespace.yaml
    
  5. Outra maneira é criar o namespace imperativamente usando a seguinte sintaxe de comando kubectl:

    
    $ kubectl create namespace [name of namespace]
    
  6. Para excluir um namespace, podemos emitir o seguinte comando.

    
    $ kubectl delete namespaces [name of namespace]
    

    Lembre-se de que o comando anterior também excluirá todos os recursos existentes no namespace.

  7. A seguir, vamos ver como adicionar um objeto a um namespace. Como exemplo, criaremos uma nova instância do Nginx e a adicionaremos ao namespace my-servers:

    
    $ kubectl run --image=nginx nginx-server --port=80 -n=my-servers
    

Considerações finais

Neste tutorial, vimos como usar namespaces no Kubernetes em um sistema Linux. Namespaces são um recurso interessante que podemos usar para isolar recursos no Kubernetes, sem a necessidade de criar clusters completamente separados. Isso é útil para equipes grandes designadas para gerenciar diferentes partes do cluster ou quando temos uma grande quantidade de recursos diversos que devem ser isolados e separados logicamente uns dos outros.

Artigos relacionados: