쿠버네티스를 왜 알아야 하나요?

cometLEE·2023년 9월 22일
0

kubernetes

목록 보기
5/16
post-thumbnail

서론

쿠버네티스에 대해 랩실 사람들에게 소개할 일이 생겼었습니다.
하지만, 서버, 네트워크 쪽에 사람들은 관심이 크게 없었고 그에 대한 배경도 무후한 상태였습니다. 저도 자세하게는 몰랐기 때문에 ppt로 발표하면서 공부했던 내용을 기록하려고 합니다.


가상화?

여기 한 대의 컴퓨터가 존재합니다. 한 컴퓨터에 다양한 프로그램들을 설치하게 되었습니다. 모든 프로그램을 실행시킨다면, 컴퓨터의 자원은 한정적이기 때문에 성능이 저하될 수 있고 심각하게는 시스템에 이상이 생길 수 있게됩니다.

우리는 컴퓨터를 한 대 더 구매해서 나누어 사용해야 할까요?

두 번째 시나리오로는, 서버, 즉 컴퓨터에서 애플리케이션을 실행하고 난 뒤, 애플리케이션의 버전관리를 적용하고 싶을 때는 어떻습니까?
물론 새로운 버전은 업데이트를 진행하면 되지만, 과거 버전을 사용해야 하는 경우도 존재하기 마련입니다. 그것을 해결하는 것은 꽤나 복잡하고 귀찮은 일입니다.


어플리케이션 실행환경변화

첫번째 그림이 우리가 알고있는 기본 컴퓨터의 구조입니다. 두번째는 가상화 구조, 세번째는 컨테이너 구조입니다.
앞서 보여드렸던 문제점들의 해결책으로 나온 기술이 가상화기술입니다. 그 중, VM, 즉 virtual machine 가상화에 대해 설명하겠습니다.


VM(virtual Machine) 가상화



container 가상화

Container는 호스트OS를 공유하기 때문에 container 안에 OS가 포함되지 않습니다.
따라서 VM에 비해서 크기가 매우 가볍습니다.

  • 어플리케이션 단위로 레벨을 고립시킵니다.
  • 셋업이 빨라지고, 메모리 사용이 적어집니다.
  • 마이그레이션, 백업, 전송이 쉬워집니다.
  • 어플리케이션 배치와 유지보수를 향상시킵니다.
  • 개발 환경구성이 매우 쉽습니다.
  • 배포의 빠른속도, 낮은 오버헤드, 높은 이식성

도커(Docker)

도커를 쉽게 설명하면 컨테이너들을 다루는 도구라고 생각하시면 됩니다.

도커를 사용하면 도커이미지를 빼놓을 수가 없습니다. 도커이미지는 도커허브에서 외부망으로 가져올 수 있고, 다른 방법으로는 사용자가 직접 local repository에 도커이미지를 빌드 및 실행시키는 방법이 있습니다.

도커 이미지 레이어 저장방식

  • 도커이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 용량이 큽니다. 따라서 기존 이미지에 다른 이미지를 추가할 때 다시 다운받는다면 비효율적입니다.
  • 따라서 도커는 레이어라는 개념을 사용합니다. ubuntu의 이미지가 a+B+C의 집합이라면, nginx 이미지는 a + b + c + nginx, webapp은 a+b+c+nginx +source 레이어로 구성됩니다. webapp 소스를 수정하면 a,b,c,nginx 레이어를 제외한 source v2만 다운받으면 되기때문에 효율적입니다.
  • 컨테이너를 사용할때 레이어방식을 사용하는데, 기존의 이미지 레이어 위에 읽기/쓰기 레이어를 추가해서 최소한의 용량만 사용합니다.

도커를 사용하다보면,,,

쿠버네티스(kubernetes)

쿠버네티스의 어원은 그리스어로 배의 키잡이입니다.
도커를 보시면 컨테이너를 업은 고래가 존재하는데, 쿠버네티스는 배의 키잡이를 의미합니다. 도커를 편하게 사용하게 도와주는 도구라고 생각하시면 됩니다.

컨테이너가 문제가 발생했을 때 도커를 이용한다면 하나씩 재 실행을 시켜주어야 합니다. 만약, 컨테이너가 수백개라면?
여기서 등장하는 개념이 쿠버네티스 입니다. 쿠버네티스는 컨테이너 오케스트레이션으로 지휘자 역할을 합니다. 컨테이너를 쉽고 빠르게 배포/ 확장하고 관리를 자동화해주는 플랫폼입니다.

쿠버네티스를 사용하는 이유


쿠버네티스 컴포넌트

1. pod

pod는 컨테이너를 품은 쿠버네티스의 가장 작은 단위입니다.
보통은 1개의 컨테이너를 지니고 있습니다.


2. node

node는 pod들을 관리하는 집합입니다.
node안에서 역할이 나뉘게 됩니다. master, worker가 있는데요,
쿠버네티스는 master노드에서 명령을 내려 worker노드에 pod들을 할당하는 방식입니다.


전체적인 쿠버네티스 구성도

그 밖에도..


마무리

쿠버네티스 사용함에 있어 배경을 따라가다보니 가상화부터 설명을 시작하게 되었습니다.
우리가 왜 쿠버네티스를 사용하는가? 에 대한 생각을 할 수 있던 시간이었습니다.
공부하다보니 쿠버네티스의 전체 구성도에 대한 이해도 필요하다는 것을 알았습니다.

profile
server, kubernetes에 관심이 많이 있습니다

0개의 댓글