[쿠버네티스] 4장. 쿠버네티스 아키텍처


쿠버네티스 아키텍처에 대해서 정리한다.


파이썬, 도커, API에서 끝날것 같던 내인생에 쿠버네티스가 찾아왔다. 주말을 반납하고 공부해보자. 따배쿠 를 보고 공부했다. 내 공부용이라 내가 이해하기 쉽게 써놨다.. 그리고 정확하지않을수 있다.

따배쿠 4-1. 쿠버네티스 아키텍처 -쿠버네티스 동작원리

1. 컨테이너 동작 Flow

  • 컨테이너를 쿠버네티스 플랫폼에 올려서 사용하는게 목적
  • (개발자 : 컨테이너를 빌드(컨테이너를 만들어서) -> 허브에 도커 푸쉬 -> yaml / CLI명령어(ex. kubectl create deploy web ~ nginx)로 실행해줘.) -> (마스터=컨트롤플레인 가 받음 -> 마스터한테는 REST API SERVER가 있고 요청을 받는다. -> 컨테이너가 있는 노드들이 있는데, 스케쥴러에게 어떤 노드가 지금 최적이니? 라고 묻는다. 그러면 응답을 해준다. -> 노드1에 있는 kubelete아 nginx만들어줘. -> 그러면 kubelete이 요청 받은걸 Docker한테 요청하고 -> Dokcker는 도커 허브에서 푸쉬되어있는 도커파일을 받아와서 컨테이너로 실행해준다.(이렇게 동작되는 단위를 POD라고 한다.)

2. 쿠버네티스 아키텍쳐

  • 마스터 컴포넌트
    • etcd저장소 : 마스터 안에는 etcd저장소(key: value형태)가 있는데, 각 노드들의 kubelet을 통한 상태정보를 저장해 둔다.
    • 스케쥴러 : 어느 노드가 가장 합당하겠니?
    • 컨트롤러 : 하나 노드가 뻑가면 갯수를 보장해주는거
    • API : 이 모든걸 관리해주는거
  • 워크 노드 컴포넌트
    • kubelete(컨테이너 모니터링 시스템이 들어있다) : 모든 노드에서 실행되는 k8s 에이전트, 데몬형태, 얘가 도커한테 요청함(쉽게 말해 그냥 노드에서 하는 모든거 하는놈)
    • kube-proxy : 네트워크 동작 관리 하는놈
    • 컨테이너 런타임 : 컨테이너를 실행하는 엔진. docker

3. 애드온

  • 관리해주는 웹서버 이런거(키바나 등), 데이터독 많이씀(웹ui 대시보드)

따배쿠 4-2. 쿠버네티스 아키텍처 - namespace

1. namespace란

  • API가 사실은 하나지만 몇개있는거처럼 한눈에 관리(ex. 롯데홈쇼핑, 롯데백화점, 롯데면세점 or proc, betatest, devel 이렇게 나워서)
  • kubectl create namespace blue, orange, green 이렇게 쓴다.
  • 내가 이해하기론 ‘장비는 1대이고 마스터도 하나인데, N개의 namespace로 나눠서 관리할 수 있다.
  • 분류해서 관리하면 딱 좋다.

2. 네임스페이스 생성하기

  • 학습전 내생각 정리 : 아래 코드 하기전에, kubectl get nodes하면 컨트롤플레인하고 노드가 만들어지는데, 그다음에 네임스페이스 생성하는거다. 이해안될까봐 써놓는데, 마스터랑 노드는 리얼로다가 딱 있는거고 그위에 네임스페이스들이 만들어지면서 어떤놈은 노드1에가고 어떤놈은 2에 가고 지네들끼리 합당한데에 들어가는거다.
  • kubectl get namespace하면 디폴트, kube-system 이런거 나오는데 이건 그냥 깔면 나오는거고
  • kubectl get pod하면 디폴트 네임스페이스에 대한 pod들이 나온다.(아 네임스페이스와 파드간의 관계를 알아버렸다. 네임스페이스 안에 롯데홈쇼핑이라는 파드를 만드는구나)
  • yaml파일 형식으로 네임스페이스 만들라면, 얌파일 만들어서 -f 써서 create하면된다.
  • (리눅스 꿀팁) vi들어가서 :se nu 쓰면 줄번호가 나오네.
  • kube-system 안에 파드들 내가 만든 네임스페이스 관련 파드들이 나온다. 별필요는 없는듯
  • kubectl create -f nginx.yaml -n blue 요래 하면 블루라는 네임스페이스안에 nginx라는 파드가 있게 만든다.

2-1 네임스페이스 생성하기

- CLI로 
```> kubectl create namespace blue``` 블루라는 네임스페이 만든다.  
```> kubectl get namespaces``` 현재 네임스페이스 보기  
- yaml으로
```> kubectl create namespace green (--dry-run -o yaml > green-ns.yaml)``` 괄호안에 뜻은 얌파일로 실행할수 있는지 알려줘  
```> vim green-ns.yaml```  
```> kubectl create -f green-ns.yaml```  
- namespace 관리
```> kubectl get namespace```  
```> kubectl delete namespace```  

3. Base namespace 변경하기

  • Q. 뭐만 하면 맨뒤에 -n 네임스페이스 해야되는데 귀찮다면, 오늘 하루종일 롯데홈쇼핑 네임스페이스에서 할건데 어떠케함?
  • A. context에서 사용자를 하나 더 만들어서 자유자제로 바꿔주면 된다.
  • 영상의 28분부터니까 따라하면 될듯.





© 2018. by statssy

Powered by statssy