쿠버네티스에 대해 랩실 사람들에게 소개할 일이 생겼었습니다.
하지만, 서버, 네트워크 쪽에 사람들은 관심이 크게 없었고 그에 대한 배경도 무후한 상태였습니다. 저도 자세하게는 몰랐기 때문에 ppt로 발표하면서 공부했던 내용을 기록하려고 합니다.
여기 한 대의 컴퓨터가 존재합니다. 한 컴퓨터에 다양한 프로그램들을 설치하게 되었습니다. 모든 프로그램을 실행시킨다면, 컴퓨터의 자원은 한정적이기 때문에 성능이 저하될 수 있고 심각하게는 시스템에 이상이 생길 수 있게됩니다.
우리는 컴퓨터를 한 대 더 구매해서 나누어 사용해야 할까요?
두 번째 시나리오로는, 서버, 즉 컴퓨터에서 애플리케이션을 실행하고 난 뒤, 애플리케이션의 버전관리를 적용하고 싶을 때는 어떻습니까?
물론 새로운 버전은 업데이트를 진행하면 되지만, 과거 버전을 사용해야 하는 경우도 존재하기 마련입니다. 그것을 해결하는 것은 꽤나 복잡하고 귀찮은 일입니다.
첫번째 그림이 우리가 알고있는 기본 컴퓨터의 구조입니다. 두번째는 가상화 구조, 세번째는 컨테이너 구조입니다.
앞서 보여드렸던 문제점들의 해결책으로 나온 기술이 가상화기술입니다. 그 중, VM, 즉 virtual machine 가상화에 대해 설명하겠습니다.
Container는 호스트OS를 공유하기 때문에 container 안에 OS가 포함되지 않습니다.
따라서 VM에 비해서 크기가 매우 가볍습니다.
도커를 쉽게 설명하면 컨테이너들을 다루는 도구라고 생각하시면 됩니다.
도커를 사용하면 도커이미지를 빼놓을 수가 없습니다. 도커이미지는 도커허브에서 외부망으로 가져올 수 있고, 다른 방법으로는 사용자가 직접 local repository에 도커이미지를 빌드 및 실행시키는 방법이 있습니다.
쿠버네티스의 어원은 그리스어로
배의 키잡이
입니다.
도커를 보시면 컨테이너를 업은 고래가 존재하는데, 쿠버네티스는 배의 키잡이를 의미합니다. 도커를 편하게 사용하게 도와주는 도구라고 생각하시면 됩니다.
컨테이너가 문제가 발생했을 때 도커를 이용한다면 하나씩 재 실행을 시켜주어야 합니다. 만약, 컨테이너가 수백개라면?
여기서 등장하는 개념이 쿠버네티스 입니다. 쿠버네티스는 컨테이너 오케스트레이션으로 지휘자 역할을 합니다. 컨테이너를 쉽고 빠르게 배포/ 확장하고 관리를 자동화해주는 플랫폼입니다.
pod는 컨테이너를 품은 쿠버네티스의 가장 작은 단위입니다.
보통은 1개의 컨테이너를 지니고 있습니다.
node는 pod들을 관리하는 집합입니다.
node안에서 역할이 나뉘게 됩니다. master, worker가 있는데요,
쿠버네티스는 master노드에서 명령을 내려 worker노드에 pod들을 할당하는 방식입니다.
쿠버네티스 사용함에 있어 배경을 따라가다보니 가상화부터 설명을 시작하게 되었습니다.
우리가 왜 쿠버네티스를 사용하는가? 에 대한 생각을 할 수 있던 시간이었습니다.
공부하다보니 쿠버네티스의 전체 구성도에 대한 이해도 필요하다는 것을 알았습니다.