1. Namespace 란?
- Kubernetes 내의 클러스터 내의 논리적인 구획
- 하나의 클러스터 내의 여러개의 작은 클러스터처럼 나눔
- 서로 격리된 공간에서 리소스를 사용하는 구조
2. Namespace 쓰는 이유?
1) 리소스 구분 : 팀/프로젝트 별로 리소스 분리 가능
2) 이름 충돌 방지 : 같은 이름의 리소스라도 namespace가 다르면 공존 가능
3) 권한 제어 (RBAC) : namespace별로 권한 제어 가능
4) 리소스 할당 제한: CPU/memory 쿼터를 namespace 별로 설정 가능
3. 기본생성된 Namespace
1) default : 사용자가 별도 지정 X 하면 리소스가 여기에 생성됨
2) kube-system: kuberneetes 자체 시스템 컴포넌트
ex) kube-dns, scheduler, controller-manager 등
3) kube-public: 모든 사용자가 접근 가능한 공개 리소스 공간(거의 사용X)
4) kube-node-lease: 노드 상태 정보(heart-beat)를 관리하는 내부 공간
4. 명령어
kubectl get namespaces ( = kubectl get ns)
5. namespace 생성하는 방법
1) cli 로 생성
kubectl create namespace my-namespace
2) yaml 파일로 생성
kubectl create -f namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: my-namespace
6. 리소스를 특정 namespace에 생성하는 방법
1) cli 로 생성
kubectl create -f pod-definition.yaml --namespace=dev
2) yaml 파일로 생성
kubectl create -f pod-definition.yaml
apiVersion: v1
kind: Pod
metadata:
name: my-pod
namespace: my-namespace // 여기에 실행하고자 하는 ns 지정
spec:
containers:
- name: nginx
image: nginx
7. namespace간 접근
- 네트워크적으로 완전히 차단 X
ex) Service 이름에 namespace 포함하면 다른 namespace의 service에 접근가능함
// [service-name].[namespace-name].svc.[Domain-name]
my-service.my-namespace.svc.cluster.local

8. namespace 간의 switch 명령어

8. namespace 관련 명령어 정리
kubectl get pods --namespace=<이름> (= kubectl get pods -n=<이름>)
kubectl get namespaces (=kubectl get ns)
kubectl run redis --image=redis --namespace=finance
kubectl get pods --all-namespace (= kubectl get pods -A)
'Infra > Kubernetes' 카테고리의 다른 글
| [cka] Kubernetes - Imperative (0) | 2025.10.07 |
|---|---|
| [cka] Kubernetes - Imperative vs Declarative (0) | 2025.10.07 |
| [cka] Kubernetes - Service 명령어 모음 (0) | 2025.10.07 |
| [cka] Kubernetes - ClusterIP (service type 중) (0) | 2025.10.07 |
| [cka] Kubernetes - Service (0) | 2025.10.07 |