[Kubernetes] 네임 스페이스 (Name Space)

2023. 7. 14. 14:52기술 창고/Kubernetes

728x90
SMALL

독립적인 컨테이너 Service들끼리 연결할 때 사용되는 쿠버네티스 DNS 서비스는 어디서 실행되고 있는지 get all 명령어를 입력해도 확인할 수 없습니다.
이를 알려면 쿠버네티스에서 네임 스페이스를 먼저 알 필요가 있습니다.

네임 스페이스는 쿠버네티스의 리소스를 별도의 영역으로 분할하는 방법입니다.

 

 

 

 

예를 들어, 위의 이미지처럼 수천 개의 리소스가 있는 시스템에서 작업하고 있다고 가정할 때 그곳에는 수천 개의 Pod 와 수천 개의 Service가 있을 것입니다.
그리고 Deployment, Replica Set 등과 같은 리소스들도 마찬가지로 수천 개가 있을 것입니다.
이러한 시스템에서 작업하는 게 쉽지는 않을 것입니다.

 

 

이 때 네임 스페이스가 필요합니다.
이 Pod 와 Service들을 네임 스페이스에 할당할 수 있습니다.
위의 이미지를 보면 왼쪽의 3개의 Pod 들은 전부 Front 단의 Service들이기 때문에 Name Space를 Front End로 하여 묶어준 형태를 보이고 있고,
오른쪽의 4개의 Pod들은 전부 Back 단의 Service들이기 때문에 Name Space를 Back End 로 묶어준 형태를 보이고 있습니다.
쉽게 말하면 각각 같은 종류의 Pod 나 Service들끼리 한 동일한 폴더에 넣어주는 것이라고 볼 수 있습니다.

별도의 네임 스페이스를 지정해주지 않았다면 리소스들은 기본 네임 스페이스 (default) 에 배치되게 됩니다.

 

 

이러한 namespace에 대한 내용을 kubectl get namespaces 명령어를 통해 확인할 수 있습니다.
default 네임 스페이스가 바로 기본 네임 스페이스 입니다.
또한 kube-public, kube-system 이라는 자체 네임 스페이스도 있습니다.

 

 

네임 스페이스에 할당된 내용들을 확인하려면 kubectl get {시스템 타입} -n {네임 스페이스명} 명령어를 통해 확인할 수 있습니다.
저는 kube-system이라는 네임 스페이스에 해당되는 Pod들을 조회해보았습니다.

 

 

혹은 kubectl get all -n {네임 스페이스명} 명령어를 통해 네임 스페이스에 해당되는 전체의 시스템들을 조회할 수 있습니다.

 

 

반대로 kubectl describe svc {service 명} 명령어를 통해 운영중인 Service 및 해당되는 네임 스페이스, ip 주소 정보값 등 여러 정보들을 확인할 수 있습니다.
여기서 kubectl describe svc {service 명} 명령어만 입력하게 되면 해당 Service가 어느 네임 스페이스에 있는지 명시를 해주지 않았기 때문에 not found 가 뜹니다.
따라서 뒤에 -n {네임 스페이스 명} 명령어를 추가하여 실행하면 확인할 수 있습니다.
명령어 : kubectl describe svc {service 명} -n {네임 스페이스 명}

이렇게 해서 제가 찾고자 했던 네트워킹 연결 시 실행되는 DNS 서비스가 Kube-system 쿠버네티스 자체 네임 스페이스에 존재하는 것을 알 수 있었고, describe로 내용도 확인해보았습니다.

728x90
반응형
LIST