- 네임스페이스(Namespace)란
- Namespace 확인
- Namespace 생성
- 사용할 Namespace switch
- 주의할 점
1. Namespace란
클러스터 안에서 리소스를 논리적으로 그룹화하는 방법을 제공하는데 사용된다.
Namespace를 사용하면 동일한 클러스터 내에서 서로 다른 프로젝트, 팀 또는 환경에서 작업하는 여러 사용자 그룹이 격리된 환경에서 작업할 수 있다.
쿠버네티스는 API를 배우는 것이다.
Namespace는 쿠버네티스 API 중 가장 큰 단위이다.
실질적인 클러스터는 하나지만 클러스터가 여러개 있는 것처럼 만드는 것이 Namespace의 역할이다.
2. Namespace 확인
Namespace를 확인하는 것은 지난 파드 확인하는 것처럼 간단하다.
# 현재 Namespace 확인
kubectl get namespace
쿠버네티스를 초기에 설치하면 기본적으로 존재하는 네임스페이스들이다.
각각의 네임스페이스에는 쿠버네티스가 동작하기 위한 다양한 파드들이 들어있다.
모든 네임스페이스의 파드를 한번에 보자.
# 모든 네임스페이스의 파드보기
kubectl get pods --all-namespaces
우리는 컨테이너를 배포하기 위해 파드를 생성한다.
그런데 쿠버네티스안에 이렇게 많은 파드들이 존재하는데 우리가 파드를 하나 만들게 되면 관리가 쉬울까?
최소한 뭐가 뭔지 알아야 관리하기 쉬울 것이다.
쿠버네티스는 네임스페이스라는 API단위를 이용해 파드들을 서비스 유형 별로 분리하고 우리가 배포하는 공간도 별개로 만들어놓았기 때문에 큰 걱정은 없다.
수많은 파드가 있다고 하더라도 우리가 파드를 보는 명령을 입력하면 아무것도 나오지 않는다.
이는 위 캡처화면에서 볼 수 있듯이 default 네임스페이스에 존재하는 파드를 보여준다(지금은 아무것도 없다).
쿠버네티스는 모든 시스템과 관련된 파드를 다른 네임스페이스로 따로 빼놓고 관리자가 파드를 배포할 때 사용하는 기본 네임스페이스로 default를 만들어 놓은 것이다.
우리가 직접 정의한 파드를 배포하면 모든 파드는 default 네임스페이스에 속하게 된다.
이런 방식으로 클러스터의 리소스를 논리적으로 그룹화를 시키는 방법을 네임스페이스로 구현할 수 있는 것이다.
네임스페이스는 원하는대로 생성하여 운영할 수 있다.
그럼 이제 다음과 같은 상황도 해결이 가능하다.
한 회사에 여러 부서가 있다 하더라도 각 부서마다 네임스페이스를 따로 생성하여 운영한다면 각 부서가 파드의 관리를 쉽게 진행할 수 있을 것이다.
3. Namespace 생성
CLI로 Namespace 생성
# CLI로 Namespace 생성
kubectl create namespace apple
yaml파일로 Namespace 생성
# yaml파일 만드는 법
kubectl create namespace orange --dry-run -o yaml > orange-ns.yaml
--dry-run : 결과를 시뮬레이션시키기만 하고 명령을 실행시키진 않음
-o yaml : 명령을 yaml파일 형태로 화면에 출력
> orange-ns.yaml : 출력한 내용을 orange-ns.yaml파일로 생성
# 생성된 orange-ns.yaml 파일을 다음과 같이 수정
apiVersion: v1
kind: Namespace
metadata:
name: orange
원하는 네임스페이스에 파드 생성
# 원하는 네임스페이스에 파드 생성 및 확인
kubectl run nginx-pod --image=nginx --port=80 -n apple
kubectl get pod -n apple
apple이라는 네임스페이스에 파드를 배포했기 때문에 파드를 확인할 때도 반드시 네임스페이스 명을 기재해야 확인할 수 있다.
하지만 매번 생성하고 확인하는데 네임스페이스명을 기재해야 한다면 여간 귀찮은 일이 아니다.
우리가 kubectl 명령으로 다양한 API를 배포할 때 네임스페이스를 기재하지 않더라도 기본적으로 원하는 네임스페이스에 배포가 되도록 만드는 방법이 있다.
바로 context를 변경하는 것이다.
4. 원하는 Namespace switch
context를 변경하는 방법은 kubectl config 명령을 이용하는 것이다.
아래는 kubectl config에 대한 도움말이다.
# kubectl config에 대한 도움말
kubectl config --help
view
먼저 view 명령을 이용해본다.
# context 확인
kubectl config view
우리가 봐야할 부분은 이 부분이다.
기본 context에는 namespace에 대한 정보가 기재되지 않았기 때문에 default 네임스페이스로 설정이 된 것이다.
저 부분에 우리가 context를 하나 더 정의해서 우리 것으로 switch만 한다면 원하는 네임스페이스를 기본값으로 사용할 수 있다.
현재 current-context는 기본으로 되어있다.
set-context
set-context를 통해 context를 추가할 수 있다.
# context 추가
kubectl config set-context apple@kubernetes --cluster=kubernetes --user=kubernetes-admin --namespace=apple
apple@kubernetes : 그냥 context 이름이다. 굳이 @kubernetes를 넣을 필요는 없다.
--cluster=kubernetes : 클러스터의 이름이다. 우리가 사용하고 있는 클러스터는 kubernetes다.
--user=kubernetes-admin : 현재 접속한 유저의 이름이다. 유저의 이름은 kubernetes-admin이다.
--namespace=apple : 새 context에 등록할 원하는 네임스페이스를 기재한다.
current-context
현재 context를 확인해보자.
# current-context 확인
kubectl config current-context
현재 context는 kubernetes-admin@kubernetes로 설정되어 있다.
use-context
사용할 context를 변경해보자.
# context switch
kubectl config use-context apple@kubernetes
이제 이 시점부터 베이스 네임스페이스는 apple이 된다.
우리가 네임스페이스명을 기재하지도 않았는데 기본으로 아까 apple 네임스페이스에 배포한 파드가 보인다.
만약 default 네임스페이스가 보고 싶다면 이제는 -n default 라는 옵션을 반드시 넣어야 한다.
delete-context
삭제는 간단하다.
# context 삭제
kubectl config delete-context apple@kubernetes
지우니까 경고가 뜨는데 이는 현재 context가 apple@kubernetes로 되어있었는데 이걸 지워버리니 다시 다른 context로 변경하라는 뜻이다.
current-context를 보면 지웠음에도 여전히 context가 지운 내용으로 유지가 되어있는데 저렇게 되면 명령을 사용할 수 없으므로 context도 원래 있던 것으로 변경한다.
# context 변경
kubectl config use-context kubernetes-admin@kubernetes
5. 주의할 점
서두에서 언급했듯이 네임스페이스는 쿠버네티스 API중에서 가장 큰 단위다.
네임스페이스 안에는 deployment, pod, service 등 여러 API들이 포함되는데 만약 해당 네임스페이스를 지워버리면 내부의 모든 API들은 함께 사라진다.
그렇기에 네임스페이스를 지울 때는 주의해야 한다.
아래 영상을 참고했습니다.
https://youtube.com/playlist?list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c&si=hbPclcPuc-6lTNdE
'Kubernetes' 카테고리의 다른 글
Kubernetes 기초 - Controller(2) (0) | 2023.12.12 |
---|---|
Kubernetes 기초 - Controller(1) (0) | 2023.12.11 |
Kubernetes 기초 - Pod(7) (0) | 2023.12.09 |
Kubernetes 기초 - Pod(6) (0) | 2023.12.08 |
Kubernetes 기초 - Pod(5) (0) | 2023.12.07 |