Kubernetes and Docker

2024. 9. 11. 20:28·DevOps

Container?

개발자가 만든 프로그램은 서버를 통해 사용자에게 배포된다.

 

서버의 높은 사양을 효율적으로 사용하기 위해 서버에는 보통 여러 개의 프로그램이 실행된다.

 

이때 여러 프로그램은 반드시 독립적으로 자신만의 영역을 가져야 한다.

그렇지 않으면 중복되는 라이브러리들끼리 충돌이 일어날 수 있고, 특정 프로그램이 자원을 독점해 다른 프로그램의 성능이 저하될 수 있다.

 

물리적으로 독립된 영역을 만드는 데에 한계가 있다면, 가상으로 벽을 만들어줄 수 있지 않을까?

이 생각으로 시작한 기술이 "가상화" 기술이다.

 

가상화 기술의 첫 시작은 가상머신이다.

vm이라고도 하는 이 기술은 vmware, virtualbox 등을 통해 하나의 컴퓨터에서 여러 운영체제를 띄우는 것이다.

운영체제가 각자 존재하니, 각 프로그램은 별도의 컴퓨터에서 돌아가는 셈인 것이다.

 

이러한 가상머신을 계속 이용하자니 운영체제가 너무 무겁다.

가상머신처럼 독립적인 영역을 제공하면서, 운영체제보다 가벼울순 없을까?

이것이 바로 컨테이너이다.

 

컨테이너는 하나의 운영체제 위에서 독립된 컨테이너를 운영한다.

VM 기반, 컨테이너 기반 배포 구조

 

지금까지 컨테이너 기술이 나오게 된 배경까지 설명해보았다.

정리하자면, 컨테이너란 어플리케이션을 배포하는 가상화 기술이다.

 

컨테이너하면 따라오는 기술 스택은 Docker(도커)이다.

도커는 컨테이너를 다루는 도구(컨테이너 런타임)이다.

컨테이너는 가상머신과 마찬가지로 이미지 형태로 공유되는데, 도커가 컨테이너 이미지를 내려받고 공유하고 구동시켜준다.

 

Kubernetes(쿠버네티스)는 컨테이너 런타임을 통해 컨테이너를 오케스트레이션하는 도구이다.

컨테이너 오케스트레이션이라 함은 여러 노드에 컨테이너를 분산 배치하거나, 다운된 노드를 자동으로 다시 실행시켜주거나,

컨테이너마다의 비밀번호나 환경설정을 관리하는 것을 말한다.

 

 

 

k8s?

쿠버네티스를 구성하는 기본 개념을 살펴보자.

 

쿠버네티스의 가장 작은 단위는 컨테이너이다. 각 컨테이너는 하나의 application을 말한다.

 

하나 또는 여러 개의 컨테이너 집합은 pod라고 한다.

pod 내에서는 같은 IP address를 갖고, 공유 스토리지를 갖는다.

때문에 app 간 통신이 있거나 데이터를 주고받고자 할 때 용이한 그룹이다.

 

pod들은 node 상에서 동작한다. 정확하게는 worker node에게 할당되어 수행된다.

worker node는 클러스터에 따라 가상머신일수도, 물리머신일수도 있다.

 

node는 worker node와 master node로 나뉜다.

master node는 pod를 worker node에게 적절하게 할당하도록 스케줄링을 처리하거나 새로운 pod를 구동하는 이벤트를 처리한다.

보통 3개의 master node를 두어 안정성을 확보한다.

 

master node는 control plane의 하위 컴포넌트이다.

쿠버네티스의 최상위 단위가 클러스터이다. 즉, 쿠버네티스를 배포하면 클러스터를 얻는다.

이 클러스터를 전반적으로 관리하는 객체가 control plane이다.

control plane에는 master node 외에도 etcd라는 저장소, 노드가 다운되거나 잡이 완전히 수행될 때까지 컨트롤하는 kube-controller-manager,

클라우드별 컨트롤 로직을 포함하는 cloud-controller-manager 컴포넌트가 포함된다.

 

쿠버네티스 클러스터 구성 요소

 

node와 control plane은 쿠버네티스 API를 통해 통신한다.

 

 

 

'DevOps' 카테고리의 다른 글

[Docker] - python 실행 이미지 만들기  (0) 2024.09.30
[minikube] - cluster 만들기  (0) 2024.09.12
'DevOps' 카테고리의 다른 글
  • [Docker] - python 실행 이미지 만들기
  • [minikube] - cluster 만들기
dev_chae2ee
dev_chae2ee
  • dev_chae2ee
    꾸준히 하다보면 되겠지
    dev_chae2ee
  • 전체
    오늘
    어제
    • 분류 전체보기 (25)
      • DevOps (3)
      • React (1)
      • Spring (4)
      • DataHub (3)
      • 회고 (1)
      • 도서 개념 정리 (5)
      • Data Engineering (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 인기 글

  • 태그

    Kubernetes
    github
    DevOps
    minikube
    임베디드
    회고
    SSAFY
    cherry-pick
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
dev_chae2ee
Kubernetes and Docker
상단으로

티스토리툴바