Kubernets란?
최근 희망하는 직군과 밀접한 관련이 있는 Kubernetes(이하 k8s)에 대해 공부하고 있다.
공인 k8s 자격증인 Cka 취득을 목표로 모두가 아는 "그" 강의를 udemy에서 수강하고 있는데, 패드에 필기하며 공부하다보니 기억이 잘 안나 쫑쫑따리 정리해보자 한다.
kubernetes?
우선 kubernetes에 관해 공부하고 있으니 kubernetes가 무엇인지에 대해 정리부터 해야 할 것 같아 저번 학기 수강했던 과목의 수업자료에서 내용을 발췌해 왔다
kubernetes(이하 k8s라는 약어로 후술)이란 Google 내부 프로젝트러 2014년 시작돼 2015년 7월에 1.0 version이 release된 “Container Orchestration system”이다. (container에 관해서는 후술)
Google이 Linux Foundation을 통해 Cloud Native Computing Foundation을 시작하고, Kubernetes를 공개 소프트웨어를 제공함으로 부터 시작되었다. 약어로는 k8s라고 부른다.
위에 언급했던 “Container Orchestration system” 라는 말의 의미는 즉, K8s는 “Container화 된 응용 프로그램의 배포, 확장 및 관리를 자동화하는 Open source system” 이라는 뜻이다.
Kubernetes는 즉 Container를 다루는 서비스이구나..
사실 저렇게 말로는 누구나 할 수 있다. 내가 내 방식대로 말할수 있어야 온전히 나의 지식이 되는것 같다.
우선 vm(virtual machine)과 container에 대한 정리가 필요할 것 같다. (이 역시 수업내용을 알음알음 기억해 보며 써봤다 ㅋ)
솔직히 찾아보면 다 나온다. vm이든 container든 많이 쓰이는 개념이기에.
그래서 걍 내가 이해하기 쉽게 (틀린정보 없이) 정리해보자 한다.
1. 가상화 기술 전 상황
-말 그대로 그냥 우리가 쓰는 데스크탑, 노트북을 생각하면 될 것같다. Os(ex. window, mac. linux 등등..)가 떡하니 하나 있고 그 위에서 모든 것을 다 하는것이다.
2. Hypervisor 기반의 가상화.
- 사진을 보면 Hypervisor 위에 Guest-os가 올라가 있다. 말 그대로 Guest, 필자는 현재 맥북을 쓰고 있는데 여기서 linux os를 사용하여 가상의 os, 가상의 컴퓨터를 띄어 놓고 사용할 수 있는것이다.
정리하자면 Host Os(현재 사용하고 있는 os)위에 Hypervisor를 통해 자원을 가상화 하여 Virtual Machine(이하 Vm)을 동작시키는 것이다. Vm은 말그대로 가상의 머신이다. 서버 띄우는 것처럼 여러개 띄울 수 있다는데.. 실제로 여러 개 띄어보면 컴퓨터가 광광운다.
가장 큰 단점이 가상의 Os를 하나하나 띄우고 실행해야 하여 효율성이 낮고 시간이 느리다는데 운영체제 강의 시간에 linux를 가상 머신화 하여 띄어 실습해보니 몸으로 와닿는 단점이였다. 짜증나 죽을뻔 했다.
#쓰고 나다 보니 docker image 같은 이미지 파일에 대해서도 정리해야 겠다고 생각했다. 근데 생각만 했다. 나중에 적어야지 엌ㅋㅋ
3.Container
-솔직히 이거 정리하고 싶어서 지금까지 써봤다. 귀에 박히도록 들어 대충 뭔지는 알고 있지만 면접관이 나한테 컨테이너가 뭐죵 물어보면 암말도 못할것 같아서 정리하면서 공부할려고 한다.(정공ㅋㅋ)
Container와 Vm의 가장 큰 차이점은 독립적인 Resource(process)를 사용하기 위해 하나하나 Guest os를 띄우지 않고! 단일 Host os 위에 여러 개의 process가 동작하는 것이다! 말만 들어도 가벼워 보이지 않나용? 각각 process들은 Host os 위에서 process 진행을 위한 공간을 별도로 배정 받아 작동한다고 보면 될 것같다. (위 사진 참조)
Container를 추상화 시켜주는 엔진들은 여러개가 있다는데 위 사진에는 Container하면 가장 먼저 떠오르는 Docker engine이 예시로 나와있다.
여담으로 Docker는 점점 도태되가고 있다는 얘기가 있다.. 머기업 구글에서 k8s를 내놓으면서 Container 관리 시스템의 국를이 Docker에서 k8s로 넘어가고 있다고 한다. 실제로 K8s에서 docker 지원을 중단한다는 뉴스를 보긴했는디.. 여기는 일단 Container에 관한 Part니까 그려러니 해야겠다.
장단점은 너무 명확해서 그냥 그림으로 대처하고 슥 보면 될 것 같다.
Vm은 Guest os 하나당 process하나 올라가서 실행되니까 당연히 커널 자원 분리는 되어 있지도 않고 필요도 없다.
또한 그냥 생각해봐도 Vm은 Guest os 3개 똬다닥 있으면 그 OS 크기가 무진장 무거우니까 처리도 느릴것이고, 효율성도 떨어질것이다.
필기해놓은 내용은 많은데 복습 용도니까 한 Part 씩 올려보려 한다.
내일은 쿠버네티스 구성요소에 관해 써봐야징