Namespaces | Kubernetes
- Namespaces | Kubernetes
O que é um Namespace?
Um namespace no Kubernetes é uma forma de organizar e isolar recursos dentro de um cluster. Ele funciona como um "espaço lógico" onde objetos como pods, serviços e deployments são agrupados.
Namespaces permitem separar ambientes, equipes, projetos e garantir boas práticas de segurança e governança.
Por que usar Namespaces?
Namespaces são especialmente úteis em cenários como:
- ✔️ Múltiplas equipes usando o mesmo cluster
- ✔️ Separação entre ambientes (dev, stage, prod)
- ✔️ Aplicação de políticas diferentes via RBAC e NetworkPolicies
- ✔️ Evitar conflitos de nomes entre aplicações
Em resumo: namespaces trazem organização, controle e segurança.
Namespaces padrão do Kubernetes
Ao instalar um cluster, estes namespaces já existem:
default
Onde recursos são criados caso nenhum namespace seja especificado.
kube-system
Componentes internos do Kubernetes (kube-dns, kube-proxy, etc).
kube-public
Recursos públicos para todos os usuários.
kube-node-lease
Usado para heartbeats dos nodes.
Principais Comandos
🔍 Listar namespaces
kubectl get namespaces
➕ Criar um namespace
kubectl create namespace <nome>
Ou via YAML:
apiVersion: v1
kind: Namespace
metadata:
name: meu-namespace
🗑️ Excluir um namespace
kubectl delete namespace <nome>
📌 Definir um namespace em um comando kubectl
kubectl get pods -n <namespace>
⭐ Definir namespace padrão para o contexto atual
kubectl config set-context --current --namespace=<nome>
Trabalhando com Namespaces
➜ Criar um deployment dentro de um namespace específico
kubectl create deployment web --image=nginx -n dev
➜ Ver todos os recursos de um namespace
kubectl get all -n observability
➜ Descrever um namespace
kubectl describe namespace <nome>
Isolamento com Namespaces
Além da organização, namespaces também ajudam a implementar:
RBAC (controle de acesso)
Permite definir quais usuários podem atuar em quais namespaces.
Network Policies
Controlam o tráfego entre pods em namespaces distintos.
Quotas e Limits
Permitem limitar CPU, memória e quantidade de recursos usados em um namespace.
Exemplo:
apiVersion: v1
kind: ResourceQuota
metadata:
name: quota-padrao
namespace: dev
spec:
hard:
pods: "10"
requests.cpu: "4"
limits.cpu: "8"
Boas Práticas
- Nomeie namespaces de forma clara:
dev,stage,prod,security,observability. - Aplique quotas para evitar uso exagerado de recursos.
- Use namespaces para separar workloads sensíveis.
- Combine namespaces com contextos para ganhar agilidade.
- Evite criar muitos namespaces sem necessidade (cada namespace tem overhead).
Referência Rápida
kubectl get ns
kubectl create ns <name>
kubectl delete ns <name>
kubectl get all -n <ns>
kubectl config set-context --current --namespace=<ns>