쿠버네티스 namespace
# 기본 개념
네임스페이스는 리소스들을 분리하고 관리하는거다.
그냥 컴퓨터에서 디렉토리 같은 분류라고 보면 될 것같다. 물론 디렉토리안에 또 다른 디렉토리 넣는것처럼
네임스페이스 안에 또다른 네임스페이스를 만들 수는 없다. 중첩은 불가능.
# namespace생성
- 커맨드로 만들기
kubectl create namespace 네임스페이스이름
이렇게도 만들 수 있다.
- yaml파일로 만들기
namespace는 metadata부분에 들어간다.
apiVersion: v1
kind: Namespace
metadata:
name: my-namespace
여기서 이름부분을 바꾸고
kubectl create -f 파일경로
이렇게 만들어진다.
# 네임스페이스 리스트 확인
난 이렇게 yaml파일 하나에 두개의 namespace를 만들어주는 양식을 써놨다
그리고 이걸로 만들어주고
kubectl get namespaces
이렇게 네임스페이스들이 만들어진걸 볼 수 있다.
# 중복된 이름의 리소스 생성이 가능하다
예를들어보면
dog 이름을 가진 pod를 만들어주는 yaml파일을 만들어보았다.
kubectl create -f dog.yaml
해당 명령어로 pod를 생성하면 두번째 만들려할때 이미 같은 이름의 파드가 존재하다는 메세지가 뜨고 파드생성이 안될것이다.
하지만 아래 명령어를 보면,
첫번째는 그냥 -n옵션없이 만들었다.
두번째는 -n옵션에 muzzi-space를 붙여주었다
세번째는 -n옵션에 dori-space를 붙여주었다
-n옵션은 네임스페이스를 정해주는것이다.
이전에 muzzi_space, dori_space를 만들어주었고 해당 네임스페이스에 각각 dog라는 pod를 만들어주었기 때문에, 중복된이름 에러를 띄우지 않는것이다.
# 특정 네임스페이스의 리소스들 확인하기.
kubectl get pods -n 네임스페이스이름
1번에서는 default네임스페이스의 pod를 확인가능하고,
2번은 muzzi-space
3번은 dori-space
꼭 파드뿐 아니라 서비스나 디플로이등등도 네임스페이스별로 나눌 수 있다.
# yaml파일 내에서 namespace 설정하기
이렇게 pod를 생성하는 yaml파일내에서 namespace를 정해줄 수 있다.
# 기본 namespace 설정하기
따로 설정하지 않으면 defalut name 스페이스가 기본 네임스페이스로 설정된다.
기본 네임스페이스를 바꾸려면 아래 명령을 쳐서 context를 생성해주면된다.
kubectl config set-context dori --cluster=kubernetes --user=kubernetes-admin --namespace=muzzi-house
이 명령을 치면 muzzi-house의 namespace를 기본으로 사용하게 된다.
kubectl config set-context dori --cluster=kubernetes --user=dori-admin --namespace=dori-house
이것처럼 user의 앞쪽을 kubernetes로 안하면 로그인? 명령뜨더라.
아직 깊게배운건 아니라 왜인지는 모르겠다.
kubectl config use-context 컨텍스트이름
쨋든 위 명령들로 컨텍스트 생성해준 후, 만든 컨텍스트를 사용해주겠다고 하면 기본으로 사용하게 된다.
기본 네임스페이스를 확인하려면 아래 명령어를 쳐보면 된다.
# 네임스페이스 삭제
kubectl delete namespace 네임스페이스이름
이렇게 지워주면 해당 네임스페이스에 있던 모든 리소스들이 삭제되게 된다.
+ 추가해서 만들어놓은 리소스의 네임스페이스를 옮기는건 없다고 한다.
걍 삭제하고 다시 만드는게 방법인듯?
