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 파일의 내용으로 재지정

네임스페이스를 만들기 위한 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 네임스페이스를 사용한다. (디폴트 옵션으로 됐음)

네임스페이스 삭제하기
명령어를 통해 간단하게 삭제도 가능하다.
kubectl delete namespaces blue