Namespace
같은 클러스터 안에서 리소스를 논리적으로 분리하는 방법
Namespace란?
-하나의 k8s 클러스터를 여러 팀이나 환경이 함께 사용할 때 리소스가 뒤섞이는 문제가 생긴다.
-Namespace는 클러스터를 논리적으로 나누는 경계선이다.
-같은 서버(클러스터)를 쓰면서도 개발 환경과 운영 환경을 분리할 수 있고, 팀별로 독립적인 공간을 가질 수 있다.
- Namespace는 리소스 이름의 범위를 한정한다.
- default에 nginx라는 Pod가 있어도, dev 네임스페이스에도 nginx라는 Pod를 만들 수 있다. 서로 다른 공간에 있기 때문에 이름이 충돌하지 않는다.
k8s 기본 Namespace
k8s를 설치하면 아래 네임스페이스가 자동으로 생성된다.
kubectl get namespace
| Namespace | 용도 | 주의 |
|---|---|---|
| default | 네임스페이스 미지정 시 기본값 | |
| kube-system | k8s 핵심 컴포넌트 (etcd, apiserver, scheduler, proxy, coredns) | 절대 건드리지 말 것 |
| kube-public | 클러스터 전체에 공개되는 리소스 | |
| kube-node-lease | 노드 상태 확인용 heartbeat 정보 저장 |
kube-system에는 클러스터 자체가 동작하기 위한 핵심 프로세스들이 있다. 이것들 중 하나라도 문제가 생기면 전체 클러스터가 영향을 받는다. 절대 삭제하거나 수정하면 안 된다.
# kube-system에 있는 핵심 컴포넌트들
kubectl get pods -n kube-system
# 주요 컴포넌트
# etcd : 클러스터 전체 상태를 저장하는 DB
# kube-apiserver : kubectl 명령어를 받아서 처리
# kube-scheduler : Pod를 어느 노드에 배치할지 결정
# kube-controller-manager : Deployment replicas 유지 등 상태 관리
# kube-proxy : 노드 네트워크 트래픽 라우팅
# coredns : 클러스터 내부 DNS
[ 캡처 - kubectl get pods -n kube-system 결과 ]
Namespace 생성
명령어 한 줄로 생성할 수 있다.
# 생성
kubectl create namespace dev
# 확인
kubectl get namespace
[ 캡처 - dev 네임스페이스 생성 확인 ]
네임스페이스 지정해서 리소스 배포 및 조회
모든 kubectl 명령어에 -n <네임스페이스명> 옵션을 붙이면 해당 네임스페이스를 대상으로 동작한다.
# dev 네임스페이스에 Pod 배포
kubectl run nginx-dev --image=nginx:1.27 -n dev
# dev 네임스페이스 Pod 조회
kubectl get pods -n dev
네임스페이스를 지정하지 않으면 항상 default 네임스페이스를 대상으로 한다. dev에 배포한 Pod는 아래처럼 조회해야 보인다.
kubectl get pods # default 네임스페이스만 조회 → nginx-dev 안 보임
kubectl get pods -n dev # dev 네임스페이스 조회 → nginx-dev 보임
kubectl get pods -A # 모든 네임스페이스 조회 → 전부 보임
-A 옵션은 클러스터 전체 리소스를 한번에 파악할 때 유용하다. 결과에 NAMESPACE 컬럼이 추가되어 어느 네임스페이스 소속인지 함께 표시된다.
[ 캡처 - kubectl get pods -A 전체 조회 결과 ]
실무 활용 패턴
보통 환경별 또는 팀별로 네임스페이스를 나눈다.
# 환경별 분리
dev ← 개발 환경 (자유롭게 실험)
staging ← QA/테스트 환경
production ← 운영 환경 (엄격한 권한 관리)
# 목적별 분리
monitoring ← Prometheus, Grafana 등 모니터링 도구
ingress-nginx ← Ingress Controller
네임스페이스를 분리하면 얻는 이점:
| 이점 | 설명 |
|---|---|
| 리소스 격리 | 개발 환경 실험이 운영 환경에 영향 없음 |
| 권한 분리 | RBAC으로 팀별 접근 범위 제한 가능 |
| 리소스 할당 | 네임스페이스별 CPU/메모리 사용량 제한 가능 (ResourceQuota) |
| 관리 편의 | kubectl delete namespace dev 한 번으로 해당 네임스페이스 전체 삭제 |
'Kubernetes' 카테고리의 다른 글
| [k8s] StatefulSet ㅡ 이해하기 (0) | 2026.06.09 |
|---|---|
| [k8s] DaemonSet ㅡ 이해하기 (0) | 2026.06.09 |
| [k8s] pv/pvc ㅡ 이해하기 (0) | 2026.06.09 |
| [k8s] ConfigMap / Secret 이해하기 (0) | 2026.06.08 |
| [k8s] 오브젝트 이해하기 — Ingress (0) | 2026.06.05 |