Kubernetes
시작하기전...
Kubernetes와 Docker 비교
Kubernetes와 Docker는 둘 다 컨테이너 기술을 사용하여 애플리케이션을 배포하고 관리하는 데 사용되는 오픈 소스 플랫폼이다. 하지만 작동방식과 역할에서 근본적인 차이점이 있다.
- 주요 차이점 :
기능 | Kubernetes | Docker |
---|---|---|
역할 | 컨테이너 오케스트레이션 플랫폼 | 컨테이너 플랫폼 및 런타임 |
주요기능 | 컨테이너 배포, 스케줄링, 관리, 네트워킹 , 보안 | 컨테이너 이미지 생성, 저장, 배포, 실행 |
추상화 수준 | 애플리케이션 수준 | 운영체제 수준 |
복잡성 | 복잡 | 비교적 간단 |
사용 사례 | 마이크로서비스 기반 애플리케이션, 복잡한 분산 시스템 | 웹 애플리케이션, 단일 애플리케이션, CI/CD 파이프라인 |
- Kubernetes :
- 컨테이너 오케스트레이션 플랫폼 : 여러 컨테이너를 하나의 시스템처럼 작동하도록 관리한다.
- 주요 기능 :
- 컨테이너 배포 및 스케줄링
- 컨테이너 상태 관리
- 컨테이너 네트워킹 및 보안
- 자동화 및 확장
- 적합한 사용 사례 :
- 마이크로서비스 기반 애플리케이션
- 복잡한 분산 시스템
- 대규모 컨테이너 환경
- Docker :
- 컨테이너화 플랫폼 및 런다임 : 컨테이너 이미지를 생성, 저장, 배포 및 실행한다.
- 주요기능 :
- 컨테이너 이미지 생성
- 컨테이너 이미지 저장 및 배포
- 컨테이너 실행 및 관리
- 컨테이너 이미지 빌드 자동화
- 적합한 사용 사례 :
- 웹 애플리케이션
- 단일 애플리케이션
- CI/CD 파이프라인
- 결론 :
- Kubernetes와 Docker는 컨테이너 기술을 사용하는 데 필요한 두 가지 주요 플랫폼 이다.
- Kubernetes는 컨테이너 오케스트레이션에 적합하며, Docker는 컨테이너화에 적합하다.
1.1 컨테이너
리눅스는 원래 프로세스별로 자원을 격리해서 사용하는 cgroup과 특정 디렉토리로 권한을 제한하는 chroot등으로 격리 환경을 구성할 수 있었다. 여기에 디스크의 파일 변경 사항을 레이어 형태로 저장하는 파일시스템을 합해 컨테이너라는 개념이 탄생했다. 도커는 방금 소개한 기능들을 모아서 컨테이너를 손쉽게 사용할 수 있도록 한 것으로 주목받았다. 도커이후에는 containerd, runc, cri-o 같은 다양한 컨테이너 런타임들이 등장했다.
기존에는 가상화나 클라우드 컴퓨팅을 설명할 때는 VM을 많이 언급했으나, 컨테이너가 알려지면서 컨테이너에 많은 관심이 쏠리기 시작했다.
<컨테이너와 가상 머신의 차이>
그림의 왼쪽이 컨테이너, 오른쪽이 가상머신의 구조인데, 컨테이너에는 호스트 운영 체제 위에 도커가 있고 바로 앱이 위치한다. 반면 가상 머신은 하이퍼바이저위에 가상 머신마다 게스트 운영체제가 있고 그 위에 앱이 위치한다. 즉, 컨테이너가 구조상 레이어가 더 간단하므로 가상 머신보다 성능을 높이기 쉽다.