[쿠버네티스] 컨테이너 한방정리 - 일프로 부족할때 (TS러버)

[쿠버네티스] 컨테이너 한방정리 - 일프로 부족할때 (TS러버)

해당 블로그는 [쿠버네티스 어나더 클래스] 강의에 일부 내용입니다. 복습을 위한 자료 입니다.


기술 흐름으로 이해하는 컨테이너

image

1. Linux의 흐름과 배포판 계열

리눅스는 Unix에서 출발해 다양한 배포판으로 확장되었습니다.

이 중에서 우리가 알아야 할 대표적인 두 가지 계열은 다음과 같습니다:

  • Debian 계열

    • 무료, 커뮤니티 중심

    • 대표 배포판: Ubuntu

  • RedHat 계열

    • 유료, 기업 중심

    • 대표 배포판: RHEL (Red Hat Enterprise Linux), CentOS, Fedora


2. Red Hat 계열 배포판 구조

Red Hat의 리눅스 배포판은 다음과 같은 순서로 만들어집니다:

- Fedora: 최신 기능 개발을 위한 무료 배포판

- CentOS Stream: 기능 테스트를 위한 중간 단계 (테스트 베드)

- RHEL: 안정화된 유료 기업용 배포판

과거에는 CentOS가 RHEL과 바이너리 호환되는 무료 안정화 배포판이었지만,

현재는 CentOS Stream이라는 테스트용 배포판으로 변경되었습니다.

→ 이로 인해 CentOS 사용자들은 새로운 선택지를 고민해야 하는 상황입니다.

 

RedHat 계열인 CentOS는 종료 됐다.

Rocky Linux는 쿠버네티스를 설치할 때 Redhat 계열을 보면 된다.

 

Container 흐름

 

image

image

1. 컨테이너의 태동: 리눅스 커널 기능 기반

컨테이너 기술은 리눅스의 사용자 격리와 자원 제어 기능에서 시작되었습니다.

  • chroot - 특정 디렉토리를 루트처럼 보이게 해 사용자 격리 시작

  • cgroups - CPU, 메모리 등 자원 사용량을 앱 단위로 제한

  • namespaces - 프로세스, 네트워크, 파일 시스템 등의 리눅스 커널 수준 격리 지원


2. 최초의 컨테이너: LXC (Linux Containers)

  • 리눅스 커널 기능들을 통합하여 만든 최초의 컨테이너 시스템

  • 이름 그대로 Linux Container의 약자

  • 다만 일반 개발자에게는 다소 어렵고 무거운 방식이었음


3. Docker

  • 복잡한 리눅스 커널 기능을 CLI 한 줄로 사용 가능하게 단순화

  • 이미지 빌드, 실행, 배포까지의 워크플로우를 혁신적으로 개선

  • 개발자 환경 구성의 표준 도구로 자리잡음

     


    4.Kubernetes와 Docker의 갈등

  • Kubernetes는 Docker를 기본 컨테이너 런타임으로 사용

  • 많은 개발자들이 "Kubernetes = Docker 오케스트레이션 도구"로 오해함

  • Kubernetes는 CRI(Container Runtime Interface) 라는 표준 인터페이스를 따르기 시작

  • Docker는 CRI에 직접 호환되지 않음 → 중간 계층(`dockershim`)이 필요

  • Kubernetes는 점점 Docker를 제거하고, 직접 CRI를 지원하는 런타임을 선호하게 됨


5.ContainerD

  • Docker는 하나의 거대한 엔진으로 구성되어 있었음

  • 내부 기능 중 컨테이너를 실제 실행하는 기능인 containerd독립 프로젝트로 분리

  • containerdDocker의 핵심 런타임이었고, CNCF에 기부

  • 현재는 containerd, CRI-O가 Kubernetes에 호환되는 대표 런타임으로 사용됨

containerd : Docker에서 분리된 경량 런타임, Kubernetes에서 널리 사용

CRI-O : RedHat 주도로 만들어진 Kubernetes 전용 컨테이너 런타임


6. Docker의 현재: Mirantis에 인수

  • Docker는 기술적 성공에 비해 수익화에 어려움을 겪음

  • 결국 Mirantis라는 기업에 Docker Enterprise 부문 인수됨

  • Mirantis는 OpenStack 관련 기업이며, Docker를 Kubernetes와 다시 호환되도록 노력 중


정리

초기 chroot → cgroups → namespaces → LXC

대중화 Docker로 컨테이너 사용 쉬워짐

발전 rkt 등 대안 컨테이너 등장, rootless 도입

통합 Kubernetes가 CRI 중심으로 발전하며 Docker는 서서히 퇴장

현재 containerd, CRI-O 중심 컨테이너 시대, Docker는 Mirantis 소속

 

쿠버네티스를 사용하면 편리한점

image1. App을 컨테이너에 담아서 배포한다.

  1. 시스템 운영 노하우를 많이 가지고 있다.

그림으로 이해 했을때 이것은 Blue/Green 배포의 예제로 이해했다. AWS에서 Container에서 CodeDeploy가 해당 1~5단계를 수행하고 Container Orchestration에서 CodeDeploy는 2단계만에 가능한걸로 이해했다.

 

Docker

Docker Image는 이제 OCI 표준을 따르기 때문에 다시 안만들어도 된다.

ContainerD는 기존 Docker Engine내에서 사용하던 기술이다.
Docker 유료화는 Docker Desktop의 일부 기능에 한해서 유료화이다.

 

 


댓글을 작성해보세요.

채널톡 아이콘