본문으로 바로가기

쿠버네티스 아키텍처 - namespace

category Kubernetes 2021. 7. 14. 03:23
반응형

namespace = k8s api 종류 중 하나이다.

namespace : 클러스터 하나를 여러 개의 논리 적인 단위로 나눠서 사용

쿠버네티스 클러스터 하나를 여러 팀이나, 사용자가 함께 공유

용도에 따라 실행해야 하는 앱을 구분할 때 사용

장점 : 각 네임 스페이스에서 동작중인 Pod 들을 분류시켜서 수집하고 관리할 수 있다. (관리가 용이하다)

실습 : 네임스페이스 생성

1. Cli 명령어로 생성하기

kubectl create namespace blue
kubectl get namespaces

생성 확인

blue를 생성하기 전에 기본으로 들어있는 4개의 네임스페이스가 존재한다.

네임스페이스를 지정하지 않으면 기본으로 default 네임스페이스를 사용한다.

kube-system 에는 쿠버네티스 구성요소 컴포넌트 들이 존재한다. 

 

 

 

2. yaml 파일로 생성하기.

 

네임스페이스를 만들기 위해 yaml 파일의 구성은 어떻게 해야 되는지 확인해보자.

kubectl create namespace orange --dry-run -o yaml > orange.yaml

--dry-rum 옵션을 활용해 실제로 실행시키지는 말고 -o yaml 형식으로 출력하고 orange.yaml 파일의 내용으로 재지정

orange.yaml 파일의 내용

네임스페이스를 만들기 위한 yaml파일은 저렇게 구성하면 된다는 것을 확인 하였다.

 

 

위에서 작성한 네임스페이스 yaml 파일을 실행해주면 된다.

kubectl create -f orange.yaml

생성 후 확인

오렌지 네임스페이스가 추가된 것을 볼 수 있다.

 

yaml 파일에 특정 네임스페이스를 지정할 수도 있다.

 

apiVersion: v1
kind: Pod
metadata:
  name: mypod
  namespace: blue     // 네임스페이스 지정
spec:
  containers:
   - image: nginx:1.14
     name: nginx
     ports:

namespace: blue 옵션을 줌으로 써 nginx.yaml을 사용해 파드를 생성한다면 blue 네임스페이스 에서 생성된다.

 

kubectl create -f nginx.yaml 실행

 

확인

kubectl get pods를 입력할 경우 (네임스페이스를 지정하지 않아 defaults 네임스페이스를 조회한다.)

kubectl get pods -n blue (네임스페이스 blue를 지정하고 조회한다면)

blue 네임스페이스에서 파드가 생성되고 동작중인것을 확인할 수 있었다.

 


Base 네임스페이스 변경(namespace-switch) : 특정 네임스페이스만을 대상으로 작업을 진행하고 싶은데, 매번 -n [네임스페이스] 옵션을 사용하기 불편할 수 있다. 그럴경우 base 네임스페이스를 default 에서 특정 네임스페이스로 변경해주면 된다. 그것을 네임스페이스 - 스위치 라고 한다.

 

1.쿠버네티스 설정파일의 context를 수정

 

config 정보 조회하기

kubectl config view

내용

새로운 config 정보 등록하기(blue 네임스페이스)

kubectl config set-context blue --cluster=kubernetes --user=kubernetes-admin --namespace=blue

확인

context 가 두개인데 저 두개의 context중 하나를 선택한다.

현재 context는 무엇인지 확인

2. 새롭게 생성한 context로 변경. (context 변경하기)

kubectl config use-context blue

현재 context 다시 확인.

기본 네임스페이스를 blue로 변경했으니 이제 Pod를 생성하거나 조회할 때 -n 옵션을 사용하지 않아도

자동으로 blue 네임스페이스를 사용한다. (디폴트 옵션으로 됐음)

확인 -n blue를 지정하지 않아도 blue 네임스페이스 파드를 갖고온다.

 

네임스페이스 삭제하기

명령어를 통해 간단하게 삭제도 가능하다.

kubectl delete namespaces blue

 

반응형