Cloud/Kubernetes

[따배쿠 youtube] 쿠버네티스 아키텍쳐 ,namespace,

Tony Lim 2021. 4. 26. 23:59

쿠버네티스를 배운다는것은 master node에 있는 API를 배우는것이다.

쿠버네티스 namespace

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

쿠버네티스 클러스터 하나를 여러 팀이나 사용자가 함께 공유 , 용도에 따라 실행해야하는 앱을 구분할 때 사용

 

 

 

kubectl create namespace blue // 이런식으로 만들어준다.

blue , organe , green 으로 자유롭게 만들어줄 수 있다. 각각 다른 API를 만들어줄 수 있다. pod ,service ,volume 을 각각 만들어줄 수 있다.

실제로는 각 namespace에 있는 녀석들이 다 존재하는데 

namespace 를 기준으로 실제 장비는 하나인데 다른 용도로 구별해서 쓸 수 있다. (논리적인 구분) == 물리적인 클러스터는 하나이지만 논리적으로 여러개 클러스터로 구분이 가능하다.

기본적으로 default namespace가 존재한다.

kubectl create -f nginx.yaml  따로 namespace 를 지정해주지않으면 default namespace에 설치가 된다.

 

kube-system namespace에서 돌고있는 pods 를 확인해보면           

저번 시간에 배웠던 모듈들이 pod 로 돌아가고 있는 것을 확인가능하다.

CLI 말고 yaml 형식으로도 생성이 가능하다.

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

--dry-run == 실제로 실행시키지않고 실행가능한지만 알려준다.

이렇게 나오는 여기서 실제 필요한 최소한의 부분은 apiVersion , kind , metadta:name 뿐이다. 이 yaml 을 실행을 하면 orange namespace가 생긴다.

kubectl create -f orange-ns.yaml  명렁어로 실행하면 된다.

 

kubectl create -f nginx.yaml -n blue == blue namespace에서 nginx.yaml을 실행시켜주세요~

CLI 말고 yaml 자체의 metadata:namespace 에 blue를 작성해주고 동작시키면 default namespace가 아닌 blue namespace로 동작한다.

 

default namespace 를 다른것으로 설정해보자   

context 를 새로 생성해서 그 context의 기본 namespace를 원하는것으로 선택하면 된다.

kubectl config set-context blue@kubernetes --cluster=kubernetes --user=kubernetes-admin --namespace=blue 명렁어로 새로운 context를 생성한다. 여기서 blue@kubernetes 는 이름이다 tony처럼 아무거나 써줘도된다.

kubectl config view 명령어로 현재 contexts 를 확인할 수 있다.  kubectl config use-context blue@kubernetes 로 바꾸어주면된다. 

kubectl config current-context 하면 이제 blue@kubenetes 로 바뀌었다는것을 확인 할 수 있다.

특정 namespace를 제거하게 되면 그 안의 pods 들도 다 삭제가 되버린다. namespace안에 여러 API들이 존재하는 것임으로 가장 큰 단위이다. 

 

 

API version 

alpha -> beta -> stable 

kubernetes 가 update 하는 API 가 있으면 새로운 API가 생성됨

kubectl explain Pod == Pod의 apiversion 을 확인할 수 있다.