Infra/Kubernetes

[Kubernetes 입문] 1. 쿠버네티스 소개

에드박 2023. 1. 3. 23:34

1-1. 컨테이너

리눅스의 프로세스별 자원을 격리해 사용하는 cgroup 과 특정 디렉터리로 권한을 제한하는 chroot로 격리 환경 구성 가능.

여기에 디스크의 파일 변경 사항을 레이어 형태로 저장하는 파일시스템을 합해 컨테이너라는 개념이 탄생.

 

도커는 컨테이너를 손쉽게 사용할 수 있도록 한 것으로 주목받음

 

 VM 과 컨테이너의 차이 

좌 : 컨테이너 / 우 : 가상머신

 

컨테이너

  • 운영체제 위에 도커가 있고 바로 앱이 위치

가상 머신

  • 하이퍼바이저 위에 가상 머신마다 게스트 운영체제가 존재 그 위에 앱이 위치

컨테이너가 구조상 레이어가 더 간단하므로 가상 머신보다 성능을 높이기 쉽다

 

도커를 이용하면 간단한 명령으로 컨테이너 이미지를 만들고 저장소에 저장이 가능.

-> 도커를 설치한 호스트에 저장소의 컨테이너 이미지를 다운로드해서 컨테이너 실행이 가능하다.

즉, 컨테이너를 규격화한 이미지를 만들고, 실행하려는 호스트에 그대로 사용이 가능

 

이런 장점을 컨테이너 오케스트레이션 시스템과 함께 사용하면 앱 배포와 관리가 편리해집니다.

  • 컨테이너 규격화 이미지를 호스트에 사용 가능
  • 오케스트레이션 시스템으로 여러 대의 서버에 동일한 환경 설정이 가능

 

1-2 컨테이너 오케스트레이션 시스템

컨테이너 사용 시, 개발 환경과 운영 환경 차이 때문에 일어나는 장애를 방지 가능

 

개발 환경에서 실행했던 컨테이너를 도커를 통해 실제 서버에서도 실행 가능

 

하지만 컨테이너만으로 상용 서비스를 운영하기엔 부족한 부분이 있음 (보통 실제 서비스에서는 한 대의 서버만 운용하지 않음)

-> 컨테이너 오케스트레이션 시스템은 컨테이너의 부족한 부분을 채워주는 역할을 함

 

컨테이너만 단독으로 사용 시 (컨테이너 오케스트레이션 시스템 사용하지 않을 때)

  • 여러 대의 서버에 컨테이너 배포하는 전체 과정을 수동으로 제어
  • 서버에 장애 발생 시, 해당 서버의 컨테이너를 새로 만든 서버로 옮기는 등의 작업을 직업 해야함

컨테이너 오케스트레이션 함께 사용 시

  • 수동으로 제어하던 부분을 자동화 -> 시스템 운영이 수월해짐
  • 서버 장애 발생 시, 정상 운영 중인 서버로 옮겨서 실행
  • 장애가 발생한 서버로 향하는 트래픽도 자동으로 중지, 새로 옮긴 컨테이너로 이동

 

1-3 쿠버네티스

쿠버네티스(Kubernetes)는 배의 조타수란 그리스 단어에서 유래

 

k 와 s 사이에 글자 개수가 8개이므로 k8s라고도 표기함

 

1-4 쿠버네티스의 특징

쿠버네티스가 많은 인기를 얻은 이유는 사용하기 간편한 선언적 API, 처음 쿠버네티스 사용할 때의 손쉬운 접근성, 문제가 있을 때 도움을 얻을 수 있는 강력한 커뮤니티 등이 있습니다.

 

  • 선언적 API :  컨테이너가 어떤 상태이길 원하는지만 쿠버네티스에 설정하면 지속해서 컨테이너의 상태를 확인. 설정한 상태가 아니라면 맞춰줌
  • 손쉬운 접근성 : 쿠버네티스는 어디서나 실행이 가능. 개인 컴퓨터, 여러 대 서버에 설치, 단순한 테스트라면 쿠버네티스 설치 없이 웹에서도 사용이 가능
  • 커뮤니티 : 쿠버네티스의 커뮤니티에 많은 사람이 참여하므로 많은 지원을 받을 수 있다.