- Namespaces groups resources to provide isolation between them.
- Its a way to divide cluster resources between multiple users (via Resource Quotas)
- It can be used for separating resources between projects or applying quotas.
- Resource names must be unique within a namespace but can be duplicated across namespaces.
apiVersion: v1
kind: Namespace
metadata:
name: dev
- Create resources in namespace by specify it in metadata field
apiVersion: v1
kind: Pod
metadata:
name: server
namespace: dev #Create Pod in dev namespace
labels:
app: webserver
env: prod
spec:
containers:
- name: nginx
image: nginx
Types of Namespaces
- default: by default creates resources in this namespace when no namespace is specified
- kube-system: reserved for Kubernetes system components
- kube-public: used for cluster-wide public resources
- kube-node-lease: Holds node lease objects for node heartbeats
Commands
- create namespace without YAML (imperative command)
kubectl create namespace <name>
- create namespace with YAML (declarative command)
kubectl create -f namespace-definition.yaml
- set context for namespace
kubectl config set-context $(kubectl config current-context) --namespace=dev
Related
⬅️ Namespaces | ➡️