Namespaces란?
쿠버네티스는 동일한 물리적 클러스터가 지원하는 가상의 클러스터를 제공하는데 이걸 Namespaces라 한다.
사용 용도
많은 사람들과 여러개의 팀 또는 프로젝트를 위해 쓰인다. cluster resources를 많은 사용자간에 나눌 수 있도록 하는데 단순히 같은 software의 버전만 다르게 할 때에는 Namespaces 대신 라벨을 사용하면 된다.
사용 방법
prefix로 kube- 는 피하는게 좋다. kubernetes system namespaces가 쓰이기 떄문이다.
쿠버네티스는 4가지 namespaces로 시작한다.
- default : 객체에 namespace가 없을 때
- kube-system : kubernetes system으로 만들어 졌을 때
- kube-public : 자동적으로 생성되며 모든 사용자에게 읽혀진다.
- kube-node-lease : 클러스터가 확장됨에 따라 노드 heartbeats의 성능을 향상시키는 각 노드와 연관된 임대 개체를 위한것
간단 명령어
kubectl get namespace //조회
kubectl run nginx –image=nginx –namespace=
kubectl get pods –namespace=
kubectl config set-context –current –namespace=
//Validate it
kubectl config view –minify | grep namespace: |
모든 객체가 Namespaces에 있진 않다. nodes, persistentVolumes 같은 low-level resources는 namespace에 안들어있다.
// In a namespace kubectl api-resources –namespaced=true
// Not in a namespace kubectl api-resources –namespaced=false
출처
https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/