2019-01-16 11:31:18 +00:00
---
title: 네임스페이스
2020-06-01 13:09:39 +00:00
content_type: concept
2019-01-16 11:31:18 +00:00
weight: 30
---
2020-06-01 13:09:39 +00:00
<!-- overview -->
2019-01-16 11:31:18 +00:00
2020-03-26 14:12:27 +00:00
쿠버네티스는 동일한 물리 클러스터를 기반으로 하는 여러 가상 클러스터를 지원한다.
이런 가상 클러스터를 네임스페이스라고 한다.
2019-01-16 11:31:18 +00:00
2020-06-01 13:09:39 +00:00
<!-- body -->
2019-01-16 11:31:18 +00:00
2020-03-26 14:12:27 +00:00
## 여러 개의 네임스페이스를 사용하는 경우
2019-01-16 11:31:18 +00:00
2020-03-26 14:12:27 +00:00
네임스페이스는 여러 개의 팀이나, 프로젝트에 걸쳐서 많은 사용자가 있는 환경에서 사용하도록
만들어졌다. 사용자가 거의 없거나, 수 십명 정도가 되는 경우에는
네임스페이스를 전혀 고려할 필요가 없다.
2019-05-28 15:30:00 +00:00
네임스페이스가 제공하는 기능이 필요할 때 사용하도록 하자.
2019-01-16 11:31:18 +00:00
2020-03-26 14:12:27 +00:00
네임스페이스는 이름의 범위를 제공한다. 리소스의 이름은 네임스페이스 내에서 유일해야하지만,
네임스페이스를 통틀어서 유일할 필요는 없다. 네임스페이스는 서로 중첩될 수 없으며,
각 쿠버네티스 리소스는 하나의 네임스페이스에만 있을 수 있다.
2019-01-16 11:31:18 +00:00
2020-04-23 15:07:32 +00:00
네임스페이스는 클러스터 자원을 ([리소스 쿼터](/ko/docs/concepts/policy/resource-quotas/)를 통해) 여러 사용자 사이에서 나누는 방법이다.
2019-01-16 11:31:18 +00:00
2020-07-10 03:38:02 +00:00
이후 버전의 쿠버네티스에서는 같은 네임스페이스의 오브젝트는 기본적으로
2020-03-26 14:12:27 +00:00
동일한 접근 제어 정책을 갖게 된다.
2019-01-16 11:31:18 +00:00
2020-03-26 14:12:27 +00:00
동일한 소프트웨어의 다른 버전과 같이 약간 다른 리소스를 분리하기 위해
여러 네임스페이스를 사용할 필요는 없다. 동일한 네임스페이스 내에서 리소스를
구별하기 위해 [레이블 ](/ko/docs/concepts/overview/working-with-objects/labels/ )을 사용한다.
2019-01-16 11:31:18 +00:00
## 네임스페이스 다루기
2019-09-29 09:05:37 +00:00
네임스페이스의 생성과 삭제는 [네임스페이스 관리자 가이드 문서 ](/docs/tasks/administer-cluster/namespaces/ )에
2019-01-16 11:31:18 +00:00
기술되어 있다.
2020-07-10 03:38:02 +00:00
{{< note > }}
쿠버네티스 시스템 네임스페이스용으로 예약되어 있으므로, `kube-` 접두사로 네임스페이스를 생성하지 않는다.
{{< / note > }}
2019-01-16 11:31:18 +00:00
### 네임스페이스 조회
2020-03-26 14:12:27 +00:00
사용 중인 클러스터의 현재 네임스페이스를 나열할 수 있다.
2019-01-16 11:31:18 +00:00
```shell
2019-05-28 15:30:00 +00:00
kubectl get namespace
2019-04-10 00:42:12 +00:00
```
```
2020-06-11 15:00:46 +00:00
NAME STATUS AGE
default Active 1d
kube-node-lease Active 1d
kube-public Active 1d
kube-system Active 1d
2019-01-16 11:31:18 +00:00
```
2020-07-10 03:38:02 +00:00
쿠버네티스는 처음에 네 개의 초기 네임스페이스를 갖는다.
2019-01-16 11:31:18 +00:00
* `default` 다른 네임스페이스가 없는 오브젝트를 위한 기본 네임스페이스
* `kube-system` 쿠버네티스 시스템에서 생성한 오브젝트를 위한 네임스페이스
* `kube-public` 이 네임스페이스는 자동으로 생성되며 모든 사용자(인증되지 않은 사용자 포함)가 읽기 권한으로 접근할 수 있다. 이 네임스페이스는 주로 전체 클러스터 중에 공개적으로 드러나서 읽을 수 있는 리소스를 위해 예약되어 있다. 이 네임스페이스의 공개적인 성격은 단지 관례이지 요구 사항은 아니다.
2020-07-10 03:38:02 +00:00
* `kube-node-lease` 클러스터가 스케일링될 때 노드 하트비트의 성능을 향상시키는 각 노드와 관련된 리스(lease) 오브젝트에 대한 네임스페이스
2019-01-16 11:31:18 +00:00
### 요청에 네임스페이스 설정하기
2020-03-26 14:12:27 +00:00
현재 요청에 대한 네임스페이스를 설정하기 위해서 `--namespace` 플래그를 사용한다.
2019-01-16 11:31:18 +00:00
예를 들면,
```shell
2019-08-25 11:10:21 +00:00
kubectl run nginx --image=nginx --namespace=< insert-namespace-name-here >
kubectl get pods --namespace=< insert-namespace-name-here >
2019-01-16 11:31:18 +00:00
```
### 선호하는 네임스페이스 설정하기
2020-03-26 14:12:27 +00:00
이후 모든 kubectl 명령에서 사용하는 네임스페이스를 컨텍스트에
2019-05-28 15:30:00 +00:00
영구적으로 저장할 수 있다.
2019-01-16 11:31:18 +00:00
```shell
2019-07-02 15:09:09 +00:00
kubectl config set-context --current --namespace=< insert-namespace-name-here >
2019-01-16 11:31:18 +00:00
# 확인하기
2019-10-13 08:48:35 +00:00
kubectl config view --minify | grep namespace:
2019-01-16 11:31:18 +00:00
```
## 네임스페이스와 DNS
2020-03-26 14:12:27 +00:00
[서비스 ](/docs/user-guide/services )를 생성하면 해당
2020-01-09 15:31:46 +00:00
[DNS 엔트리 ](/ko/docs/concepts/services-networking/dns-pod-service/ )가 생성된다.
2019-01-16 11:31:18 +00:00
이 엔트리는 `<서비스-이름>.<네임스페이스-이름>.svc.cluster.local` 의 형식을 갖는데,
2019-05-28 15:30:00 +00:00
이는 컨테이너가 `<서비스-이름>` 만 사용하는 경우, 네임스페이스 내에 국한된 서비스로 연결된다.
개발, 스테이징, 운영과 같이 여러 네임스페이스 내에서 동일한 설정을 사용하는 경우에 유용하다.
네임스페이스를 넘어서 접근하기 위해서는, 전체 주소 도메인 이름(FQDN)을 사용해야 한다.
2019-01-16 11:31:18 +00:00
## 모든 오브젝트가 네임스페이스에 속하지는 않음
2019-05-28 15:30:00 +00:00
대부분의 쿠버네티스 리소스(예를 들어, 파드, 서비스, 레플리케이션 컨트롤러 외)는
2019-01-16 11:31:18 +00:00
네임스페이스에 속한다. 하지만 네임스페이스 리소스 자체는 네임스페이스에 속하지 않는다.
2020-03-26 14:12:27 +00:00
그리고 [노드 ](/ko/docs/concepts/architecture/nodes/ )나 퍼시스턴트 볼륨과 같은 저수준 리소스는 어느
2019-01-16 11:31:18 +00:00
네임스페이스에도 속하지 않는다.
2020-03-26 14:12:27 +00:00
다음은 네임스페이스에 속하지 않는 쿠버네티스 리소스를 조회하는 방법이다.
2019-01-16 11:31:18 +00:00
```shell
# 네임스페이스에 속하는 리소스
2019-05-28 15:30:00 +00:00
kubectl api-resources --namespaced=true
2019-01-16 11:31:18 +00:00
# 네임스페이스에 속하지 않는 리소스
2019-05-28 15:30:00 +00:00
kubectl api-resources --namespaced=false
2019-01-16 11:31:18 +00:00
```
2019-08-25 11:10:21 +00:00
2020-06-01 13:09:39 +00:00
## {{% heading "whatsnext" %}}
2019-08-25 11:10:21 +00:00
* [신규 네임스페이스 생성 ](/docs/tasks/administer-cluster/namespaces/#creating-a-new-namespace )에 대해 더 배우기.
* [네임스페이스 삭제 ](/docs/tasks/administer-cluster/namespaces/#deleting-a-namespace )에 대해 더 배우기.