지난 시간에는 가상화 배포 환경에서 컨테이너 배포 환경으로 바뀌게 된 이유와 컨테이너가 무엇인지에 대해서 알아보았다. 컨테이너 기술과 관련된 내용 중에 우리가 가장 많이 들어본 것이 도커(Docker)와 쿠버네티스(kubernetes, k8s)이다. 처음 공부를 하는 경우 도커랑 쿠버네티스를 많이 헷갈려하는데 이번에는 그 둘의 관계성에 대해서 자세히 알아보는 시간을 가져보도록 하자.
참고로, 쿠버네티스를 Kubernetes 혹은 k8s (k~s 중간에 8개의 글자가 있어서)라고도 부른다.
[지난 시간 내용]
2024.04.13 - [[기술공부]/Kubernetes] - [k8s] 컨테이너 등장 배경 with 가상화 배포 환경
[컨테이너 기술의 배경 with Docker & k8s]
시간이 지나면서 S/W 개발과 배포 과정은 복잡해졌고, 이러한 복잡성을 관리하기 위해 컨테이너화 기술이 등장하게 되었다. 이때 등장한 기술이 Docker(by. Docker.Inc)이고 컨테이너 생성, 배포, 관리를 쉽게 하는 것을 지원해주었다.
점차 컨테이너 사용이 일반화 되면서 어떻게 하면 많은 컨테이너들을 관리하고 조율할 수 있을지에 대해 고민을 하기 시작했고, 이러한 부분을 해결하기 위해 등장하게 된 기술이 Kubernetes(by. Google)이다.
다시 말하자면,
Docker → 컨테이너의 생성과 배포를 단순화 시켜주는 기술
Kubernetes → 컨테이너의 생명 주기를 관리하고 스케일링 및 장애 복구를 자동 처리해주는 기술
처음에는 도커와 쿠버네티스를 함께 사용할 때 시너지가 발생하면서 상호 보완적인 기술이었고, 쿠버네티스는 도커 외의 다른 런타임 엔진은 지원하지 않았다. 하지만 도커는 컨테이너를 사용하는 사용자 경험에 집중하면서 Monolithic(단일) 아키텍처를 나누는 작업을 하면서 도커 엔진 내에 API, CLI, Network, Storage와 같은 여러 기능이 추가 되었다.
결국, Docker 새로운 버전이 나올 때 마다 쿠버네티스도 함께 영향을 받게 되었고 또한 한편에서는 다른 컨테이너 런타임 엔진을 지원해달라는 요구도 나오게 되었다. 이러한 계기로 컨테이너 기술에 대한 표준을 정하는 OCI(Open Container Initiative) 오픈 소스 프로젝트가 시작되었다.
본 프로젝트(OCI)를 통해 도커와 쿠버네티스는
Docker → OCI 표준을 준수하는 컨테이너 런타임인 Containerd
Kubernetes → OCI 표준을 준수하는 Container Runtime Interface를 개발하게 되었다.
이를 통해 도커의 버전에 상관없이 모든 컨테이너 이미지를 쿠버네티스 환경에서 실행 가능하게 되었다. 그리고 Containerd는 컨테이너의 생명주기를 관리하기 위한 최소한의 필요 기능만 제공하여 가벼운 런타임 엔진이 될 수 있었다. 그래서 요즘 많은 회사에서 Containerd 런타임 엔진과 쿠버네티스를 함께 사용하고 있다.
이 내용을 알고 나면 도커와 쿠버네티스가 다시 헷갈리진 않을 것이다. 항상 새로운 기술을 배우기 전에는 그 기술이 등장하게 된 배경에 대해서 찾아보면 이해가 더 잘 될 수 있다. 오늘도 이 내용이 많은 사람들에게 도움이 되었으면 좋겠다:)
(참고 페이지)
https://www.linkedin.com/pulse/containerd%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%B4%EA%B3%A0-%EC%99%9C-%EC%A4%91%EC%9A%94%ED%95%A0%EA%B9%8C-sean-lee/
'[기술공부] > Kubernetes' 카테고리의 다른 글
[k8s] 쿠버네티스 오브젝트 - pod에 대하여 (0) | 2024.04.13 |
---|---|
[k8s] 쿠버네티스 오브젝트란? (0) | 2024.04.13 |
[k8s] 쿠버네티스란? with 쿠버네티스 아키텍처 - (2) (37) | 2024.04.13 |
[k8s] 쿠버네티스란? with 쿠버네티스 아키텍처 - (1) (0) | 2024.04.13 |
[k8s] 컨테이너 등장 배경 with 가상화 배포 환경 (0) | 2024.04.13 |