파드, 컨테이너, 도커, 쿠버네티스의 관계

음휘영·2023년 5월 24일
0

docker/kubernetes

목록 보기
3/3

컨테이너 인프라 환경이란?

리눅스 운영체제의 커널 하나에서 여러개의 컨테이너가 격리된 상태로 실행되는 인프라 환경이다. 여기서 컨테이너는 목적을 위해 독립적으로 작동하는 프로세스이다.
다수의 관리자가 수백대의 서버를 함께 관리해야하는 기업의 경우 서버 관리의 일관성을 유지하는 것이 중요하기 때문에 각각의 프로그램을 컨테이너로 구현해야한다.
여러 사람이 만져서 설정의 일관성이 떨어진 서버를 snowFlake라고 하는데 이런 경우 컨테이너 인프라 환경을 구성하면 서버의 파편화를 방지하는데 효과적이다.

컨테이너 인프라 환경의 구성 요소 :

  • 컨테이너 엔진
    : 컨테이너를 생성하고 관리하는 데 사용되는 소프트웨어입니다. 대표적인 컨테이너 엔진으로는 Docker, containerd, cri-o 등이 있습니다. 이러한 컨테이너 엔진은 컨테이너 이미지의 생성, 실행, 중지, 삭제 등을 담당합니다.

  • 컨테이너 이미지
    : 컨테이너 실행에 필요한 파일 시스템과 종속성을 패키징한 것입니다. 컨테이너 이미지는 애플리케이션과 해당 애플리케이션의 실행에 필요한 모든 라이브러리, 설정 파일, 실행 파일 등을 포함합니다. 이러한 이미지는 컨테이너 엔진에서 실행되며, 이미지 간에 공유하고 배포할 수 있습니다.

  • 오케스트레이션 도구
    : 컨테이너 인프라 환경에서는 여러 개의 컨테이너를 조정하고 관리하기 위해 오케스트레이션 도구가 사용됩니다. 이러한 도구는 컨테이너의 배포, 확장, 로드 밸런싱, 서비스 디스커버리 등을 자동화하여 복잡한 컨테이너 환경을 효율적으로 운영할 수 있도록 도와줍니다. 대표적인 오케스트레이션 도구로는 Kubernetes, Docker Swarm, Apache Mesos 등이 있습니다.


쿠버네티스란

쿠버네티스(kubernetes)는 컨테이너화 된 애플리케이션을 배포, 관리, 확장 등의 프로세스를 자동화하는 컨테이너 오케스트레이션(container Orchestration) 플랫폼이다.

컨테이너 오케스트레이션이란 다수의 컨테이너를 유기적으로 연결, 실행, 종료 할 뿐만 아니라 상태를 추적하고 보존하는 등 컨테이너를 안정적으로 사용할 수 있게 만들어주는 것이다.

쿠버네티스를 이루는 기본 오브젝트가 파드이다.
파드는 컨테이너로 이루어져 있으며, 컨테이너를 만들고 관리하는 도구가 도커이다.

파드들은 워커노드 단위로 관리하며,워커노드와 마스터 노드가 모여 쿠버네티스 클러스터가 된다.
파드는 1개 이상의 컨테이너로 이루어져 있다.

파드들은 쿠버네티스로부터 IP를 받아 외부와 통신할 수 있는 경로를 제공 → NAT와 같음

컨테이너들은 커널, 네트워크나 저장공간을 서로 공유한다.

컨테이너는 개별적인 실행 환경을 갖는데, CPU, 네트워크, 메모리와 같은 시스템 자원을 독자적으로 사용하도록 할당된 환경이다.

PID도 컨테이너 안에 격리돼 관리되기 때문에 각 컨테이너 내부에서 실행되는 애플리케이션들은 서로 영향을 미치지 않고 독립적으로 작동한다.

각 컨테이너가 독립적으로 작동하기 때문에 여러 컨테이너를 효과적으로 다룰 방법이 필요하다.
유닉스와 리눅스는 하나의 호스트 운영체제 안에서 자원을 분리해 할당(cgroup)하고, 실행되는 프로세스를 격리해서 관리(namespace)하는 방법을 제공했다.
하지만 파일 시스템을 설정하고 자원과 공간을 관리하는 등의 복잡한 과정을 직접 수행해야 했는데, 이런 복잡한 과정을 쉽게 만들어주는 도구로 등장하는 것이 도커이다.
도커는 컨테이너를 사용하는 방법을 명령어로 정리한 것이라고 생각하면된다.
도커를 사용하면 컨테이너를 생성할 때 개별적인 실행 환경을 분리하고 자원을 할당한다.


참고자료

https://www.redhat.com/ko/topics/containers/what-is-kubernetes

profile
꾸준하게

0개의 댓글