EKS – Kubernetes 네임스페이스 이해 및 활용

Kubernetes 클러스터는 여러 개의 노드로 구성되며, 이 노드들은 다양한 애플리케이션과 서비스를 호스팅한다. 효율적인 자원 관리와 논리적인 분리를 위해 Kubernetes는 네임스페이스(Namespace)라는 개념을 도입했다. 네임스페이스는 클러스터 내의 리소스(Pod, Service, Deployment 등)를 논리적인 단위로 구분하는 역할을 한다

네임스페이스의 필요성

대규모 Kubernetes 환경에서는 여러 팀이나 프로젝트가 하나의 클러스터를 공유하는 경우가 많다. 이때 네임스페이스를 사용하면 다음과 같은 이점을 얻을 수 있다

  • 자원 격리: 각 네임스페이스는 독립적인 작업 공간을 제공하여, 특정 네임스페이스의 리소스가 다른 네임스페이스의 리소스와 충돌하거나 영향을 주지 않도록 한다
  • 권한 관리: 네임스페이스 단위로 사용자 및 그룹의 접근 권한을 설정할 수 있어, 특정 팀이 자신의 네임스페이스 내 리소스만 관리하도록 제한 할 수 있다
  • 환경 분리: 개발(dev), 테스트(qa), 운영(prod)과 같은 환경을 각각의 네임스페이스로 분리하여 관리할 수 있다. 예를 들어, 개발팀은 dev 네임스페이스에, QA팀은 qa 네임스페이스에 각자의 자원을 배포하고 관리할 수 있다

네임스페이스 생성 및 확인

Kubernetes 클러스터를 처음 구성하면 기본적으로 default, kube-system, kube-public, kube-node-lease 등의 네임스페이스가 생성된다. 특히 default 네임스페이스는 사용자가 별도의 네임스페이스를 지정하지 않고 리소스를 생성할 때 기본적으로 사용되는 공간이다

현재 클러스터의 모든 네임스페이스 조회

kubectl get namespace
  • 이 명령어는 default 네임스페이스와 함께 클러스터 운영을 위해 시스템적으로 생성된 네임스페이스들을 보여준다

새로운 네임스페이스 생성

특정 프로젝트나 목적을 위한 새로운 네임스페이스를 생성할 수 있다. 예를 들어, my-project라는 네임 스페이스를 생성하려면 아래와 같은 명령어를 입력해야 한다

kubectl create namespace my-project

네임스페이스 내 자원 조회

기본적으로 kubectl get pod와 같이 네임스페이스를 지정하지 않고 리소스르 조회하면 default 네임스페이스에 있는 리소스만 표시된다

특정 네임스페이스의 Pod 조회

my-project 네임스페이스와 생성된 Pod를 조회하려면 -n (또는 –namepsace)옵션을 사용하여 네임스페이스 이름을 지정한다

kubectl get pod -n my-project

만약 해당 스페이스에 Pod가 없다면 “No resources found in my-project namespace.”와 같은 메시지가 출력된다

모든 네임스페이스의 Pod 조회

클러스터 내의 모든 네임스페이스에 걸쳐 존재하는 Pod들을 한꺼번에 조회하고 싶다면 -A (또는 –all-namespace) 옵션을 사용한다

kubectl get pod -A

이 명령어는 왼쪽 열에 네임스페이스 이름을 표시하고, 해당 네임스페이스에서 실행 중인 모든 Pod 목록을 보여준다. 이를 통해 kube-system과 같이 클러스터의 핵심 구성 요소를 담당하는 네임스페이스의 Pod들도 확인할 수 있다

출처 – eks를 활용한 spring 운영서버 배포(feat. devops의 모든것)