Kubernetes 네임스페이스란?
네임스페이스는 클러스터를 가상 하위 클러스터로 구성하는 방법입니다. 서로 다른 팀 또는 프로젝트가 Kubernetes 클러스터를 공유할 때 유용할 수 있습니다. 클러스터 내에서 원하는 수의 네임스페이스가 지원되며, 각 네임스페이스는 논리적으로 서로 분리되어 있지만 서로 통신할 수 있습니다. 네임스페이스는 서로 중첩될 수 없습니다.
Kubernetes 내에 존재하는 모든 리소스는 기본 네임스페이스 또는 클러스터 운영자가 생성한 네임스페이스에 있습니다. 네임스페이스 외부에는 노드와 영구 스토리지 볼륨만 존재합니다. 이러한 하위 수준 리소스는 항상 클러스터의 모든 네임스페이스에 표시됩니다.

Kubernetes 현황

Kubernetes 가동 및 실행
Kubernetes의 "기본" 네임스페이스는 무엇입니까?
Kubernetes는 다음과 같이 즉시 사용 가능한 세 가지 네임스페이스와 함께 제공됩니다.
- default: 이름에서 알 수 있듯이, 모든 Kubernetes 명령에 대해 기본적으로 참조되며 모든 Kubernetes 리소스가 기본적으로 위치하는 네임스페이스입니다. 새 네임스페이스가 생성될 때까지 전체 클러스터는 '기본'에 상주합니다.
- kube-system: Kubernetes 구성 요소에 사용되므로 사용하지 않아야 합니다.
- kube-public: 퍼블릭 리소스에 사용됩니다. 사용자가 사용하지 않는 것이 좋습니다.
Kubernetes 네임스페이스를 사용해야 하는 이유는 무엇입니까?
Kubernetes 네임스페이스에는 다음과 같은 다양한 사용 사례가 있습니다.
- 팀 또는 프로젝트가 서로의 작업에 영향을 미치지 않고 자체 가상 클러스터에 존재할 수 있도록 하는 경우
- 사용자와 프로세스를 특정 네임스페이스로 제한하여 역할 기반 액세스 제어(RBAC)를 개선하는 경우
- 리소스 할당량을 통해 여러 팀과 사용자 간에 클러스터 리소스를 분할할 수 있도록 하는 경우
- 컨테이너화된 애플리케이션의 개발, 테스트 및 배포를 분리하는 간편한 방법을 제공하여 전체 수명주기를 동일한 클러스터에서 수행할 수 있도록 하는 경우
여러 Kubernetes 네임스페이스를 사용해야 하는 경우는 언제입니까?
소규모 팀 또는 소규모 조직은 기본 네임스페이스를 사용하여 완벽하게 만족할 수 있습니다. 이는 개발자 또는 사용자를 서로 분리할 필요가 없는 경우에 특히 적합합니다. 그러나 여러 네임스페이스를 사용하면 다음과 같은 여러 가지 유용한 이점이 있습니다.
- 분리. 규모가 크거나 성장 중인 팀은 네임스페이스를 사용하여 프로젝트와 마이크로 서비스를 서로 분리할 수 있습니다. 팀은 문제 없이 서로 다른 업무 공간에서 동일한 리소스 이름을 재사용할 수 있습니다. 또한 한 업무 공간의 항목에 대해 작업을 수행해도 다른 업무 공간에는 영향을 미치지 않습니다.
- 조직화. 개발, 테스트 및 운영에 단일 클러스터를 사용하는 조직은 네임스페이스를 사용하여 개발 및 테스트 환경을 Sandbox화할 수 있습니다. 이렇게 하면 애플리케이션 수명주기 전반에 걸쳐 개발자 또는 테스터가 자체 네임스페이스에서 수행하는 변경 사항에 의해 운영 코드가 영향을 받지 않습니다.
- 사용 권한. 네임스페이스를 통해 Kubernetes RBAC를 사용할 수 있으므로 팀은 단일 이름으로 사용 권한 또는 기능 목록을 그룹화하는 역할을 정의할 수 있습니다. 이렇게 하면 권한이 부여된 사용자만 지정된 네임스페이스의 리소스에 액세스할 수 있습니다.
- 리소스 제어. CPU 또는 메모리 활용도에 대한 리소스 할당량을 정의하여 네임스페이스에 정책 기반 리소스 제한을 설정할 수 있습니다. 이를 통해 모든 프로젝트 또는 네임스페이스가 실행에 필요한 리소스를 보유하고 하나의 네임스페이스가 사용 가능한 모든 리소스를 차지하지 않도록 할 수 있습니다.
- 성능. 네임스페이스를 사용하면 특정 클러스터의 성능을 개선하는 데 도움이 될 수 있습니다. 클러스터가 서로 다른 프로젝트를 위해 여러 네임스페이스로 분리된 경우, Kubernetes API는 작업을 수행할 때 검색할 항목이 줄어듭니다. 이를 통해 클러스터에서 실행되는 각 애플리케이션의 지연 시간을 줄이고 전반적인 애플리케이션 성능을 향상시킬 수 있습니다.
포드는 Kubernetes 네임스페이스 간에 어떻게 통신할 수 있습니까?
네임스페이스는 서로 분리되어 있지만 서로 쉽게 통신할 수 있습니다. Kubernetes DNS 서비스 디렉토리는 확장된 형태의 DNS 주소 지정을 사용하여 이름으로 모든 서비스를 쉽게 찾을 수 있습니다.
..svc.cluster.local
서비스 이름에 네임스페이스 이름을 추가하기만 하면 클러스터의 모든 네임스페이스에 있는 서비스에 액세스할 수 있습니다. 예를 들어, 개발 네임스페이스의 급여 서비스에 액세스하려면 주소를 사용합니다.
payroll.development
운영 네임스페이스의 급여 서비스에 액세스하려면 다음을 사용합니다.
payroll.production
선택 사항으로 네트워크 정책을 활용하여 네임스페이스 간 액세스를 제어할 수 있습니다. 예를 들어 네트워크 정책은 다른 네임스페이스의 모든 트래픽을 허용하거나 거부할 수 있습니다. 네트워크 정책은 연결에만 적용되며 패킷 검사를 수행하는 방화벽을 대신할 수 없습니다.
네임스페이스와 관련된 기본 kubectl 명령은 무엇입니까?
현재 Kubernetes 네임스페이스를 찾는 명령은 무엇입니까?
다음 명령을 사용하여 클러스터의 모든 네임스페이스를 표시할 수 있습니다.
kubectl get namespace
본 네임스페이스를 포함하여, 클러스터의 모든 네임스페이스 목록이 해당 상태 및 사용 기간과 함께 반환됩니다.
새 Kubernetes 네임스페이스를 생성하는 명령은 무엇입니까?
네임스페이스는 다음 명령을 사용하여 간단히 생성됩니다.
kubectl create namespace
다른 Kubernetes 리소스에서처럼, YAML 파일을 생성하여 네임스페이스를 생성하고 적용할 수도 있습니다.
newspace.yaml:
kind: Namespace
apiVersion: v1
metadata:
name: newspace
labels:
name: newspacekubectl apply -f newspace.yaml
Kubernetes 네임스페이스 간에 어떻게 전환합니까?
생성된 네임스페이스에 주소를 지정하려면 명령에 –namepsace= 옵션을 포함해야 합니다. 이는 번거로울 수 있으므로 kubectl config 명령을 사용하여 클러스터 상황에서 네임스페이스를 설정하여 기본 네임스페이스를 변경할 수 있습니다.
예를 들어, 기본 네임스페이스에서 ‘testing’이라는 네임스페이스로 변경하려면 다음과 같이 입력합니다.
kubectl config set-context --current --namespace=testing
이는 모든 미래 kubectl 명령에 기본 네임스페이스를 ‘testing’으로 설정합니다.
Kubernetes 네임스페이스의 이름은 어떻게 변경합니까?
Kubernetes 네임스페이스의 이름을 바꾸는 것은 표준 관행이 아니므로 기본값 이외의 네임스페이스를 신중하게 선택합니다.
Kubernetes 네임스페이스를 어떻게 삭제합니까?
네임스페이스는 다음 명령을 사용하여 삭제됩니다.
kubectl delete namespaces
삭제는 비동기 활동이므로 네임스페이스가 삭제될 때까지 네임스페이스는 ‘terminating’으로 표시됩니다.
Kubernetes 네임스페이스 삭제에 대한 경고
네임스페이스 삭제는 최종 작업입니다. 모든 서비스, 실행 중인 포드 및 아티팩트를 포함하여 네임스페이스의 모든 항목이 삭제됩니다. 가비지 수집은 해당 네임스페이스에 존재했던 모든 항목에서 실행됩니다. 이 작업을 수행하기 전에 네임스페이스의 모든 항목을 삭제해야 합니다.
관련 솔루션 및 제품
실습: 애플리케이션 현대화
몇 주 만에 애플리케이션을 클라우드로 이동
Tanzu Kubernetes for Operation
최신 멀티 클라우드 컨테이너 인프라의 기반입니다.
Tanzu Application Platform
Kubernetes의 탁월한 멀티 클라우드 개발자 경험