[Kubernetes] 네임스페이스(Namespace): 리소스를 논리적으로 구분하는 장벽

연수·2021년 11월 9일
0

kubernetes

목록 보기
9/15

쿠버네티스에서는 리소스를 논리적으로 구분하기 위해 네임스페이스(Namespace)라는 오브젝트를 제공한다.

네임스페이스는 포드, 레플리카셋, 디플로이먼트, 서비스 등과 같은 쿠버네티스 리소스들이 묶여 있는 하나의 가상 공간 또는 그룹이다.

예를 들어, 모니터링을 위한 모든 리소스들은 monitoring이라는 이름의 네임스페이스에서 생성할 수 있고, 테스트를 위한 리소스들은 testbed라는 네임스페이스에서 생성할 수 있다.

 

✅ 네임스페이스란?!

네임스페이스를 직접 생성하지 않았더라도 기본적으로 3개의 네임스페이스가 존재한다.

  1. default

    쿠버네티스를 설치하면 자동으로 사용하도록 설정되는 네임스페이스

  2. kube-system

    쿠버네티스 클러스터 구성에 필수적인 컴포넌트들과 설정값 등이 존재하는 네임스페이스

  3. kube-public

네임스페이스를 사용하는 경우는 대부분 모니터링, 로드밸런싱, 인그레스 등의 특정 목적을 위한 용도가 대부분이다.

각 네임스페이스의 리소스들은 논리적으로만 구분된 것일 뿐, 물리적으로 격리된 것이 아니다. (서로 다른 네임스페이스에 생성된 포드가 같은 노드에 존재할 수도 있다.)

네임스페이스를 삭제하면 네임스페이스에 존재하는 모든 리소스가 함께 삭제된다.

 
🤔 네임스페이스와 라벨의 차이점?

    라벨보다 더욱 넓은 용도로 사용 가능

    네임스페이스에서 생성되는 포드의 자원사용량을 제한하거나(ResourceQuota), 특정 네임스페이스에 생성되는 포드에는 항상 사이드카 컨테이너를 붙이도록 설정할 수 있다(애드미션 컨트롤러).

    사용 목적에 따라 포드, 서비스 등의 리소스를 격리함으로써 편리하게 구분할 수 있다.

 

✅ 네임스페이스의 서비스에 접근하기

같은 네임스페이스 내의 서비스에는 서비스 이름만으로 접근할 수 있지만, 다른 네임스페이스에 존재하는 서비스에는 그럴 수 없다.

하지만 <서비스 이름>.<네임스페이스 이름>.svc와 같이 서비스 이름 뒤에 네임스페이스 이름을 붙이면 다른 네임스페이스의 서비스에도 접근할 수 있다.

 

✅ 네임스페이스에 종속/독립되는 오브젝트

  • 네임스페이스에 종속되는 오브젝트
    • 오브젝트가 속하는 네임스페이스에서만 보인다.
    • 예) 포드, 서비스, 레플리카셋, 디플로이먼트
  • 네임스페이스에 독립되는 오브젝트
    • 클러스터 전반에 걸쳐 사용되는 경우 주로 네임스페이스에 독립된다.
    • 예) 노드, 네임스페이스

 

[출처] 시작하세요! 도커/쿠버네티스 (용찬호 지음)

profile
DCDI

0개의 댓글