Docker 공부하기 - Tirrilee/TechTalk GitHub Wiki

Container & Kubernetes

Container?

애플리케이션과 애플리케이션을 구동하는 환경을 격리하는 공간


가상머신 vs Container

  • 가상머신 은 하이퍼바이저로 하드웨어를 가상화하고 그 위에 Guest OS가 설치된 가상머신을 구동

  • Container 운영체제 레벨에서 자원을 격리하여 컨테이너에 할당하기 때문에 따로 OS가 필요하지 않음


Container의 장점

1. 효율성

  • 기업환경에서는 1개의 가상머신에 1개의 서비스를 구동하는 것이 권장되지만, 가상머신의 모든 자원을 사용하는 것이 아니기 때문에 성능적 오버헤드가 있음.

  • 컨테이너는 OS kernal을 공유하기 때문에 효율적으로 사용

2. 신속성

사용자의 서비스 요청량에 따라 새로이 추가할때

가상머신의 크기는 GB이지만 컨테이너는 MB에 배포 시간이 짧게 걸림

3. 라이센스 비용 절감

  • 가상화 서버의 경우 가상머신의 개수만큼 Guest OS License 비용 발생

  • 컨테이너의 경우 Host OS 1대만 발생

4. 안정성

  • 가상머신은 안전하게 운영 가능

  • 컨테이너는 OS 커널을 공유하기 때문에 한개의 컨테이너가 무리하게 자원을 사용할 때 컨테이너에 장애 발생 (> 이를 해결하는 방법이 Kubernetes)

5. 개발 환경 이전 솔루션

  • 개인 환경 개발 > 통합 환경 코드 통합 > 테스트 환경 > 실제 운영 으로 개발을 진행하다보면 서버의 설정 차이로 인해 다양한 장애가 발생한다.

  • 하지만 컨테이너를 사용하면 그대로 환경을 담아서 이전하면 가능

6. 마이크로 서비스화 솔루션

  • 가상 머신은 작은 부분을 수정하면 애플리케이션 전체에 문제가 발생할 수도 있음

  • 하지만 컨테이너별로 나누면 서비스 단위로 신속하게 배포 가능

+) 마이크로 서비스 : 애플리케이션을 기능별로 나누어 변경과 조합을 진행


Kubernetes?


1. 무중단 서비스 제공

점진적 업데이트를 제공하기 때문에 서비스를 중단하지 않고도 서버 업데이트 가능

자가 회복 능력을 가지고 있어 컨테이너에 갑자기 장애가 발생하더라도 곧바로 복제 컨테이너를 생성해서 서비스 유지 가능


2. Vendor Lock In

A사 클라우드를 사용하다가 B사로 환경을 이전할 때 호환문제가 발생되는 것을 Vender lock이라고 한다.

Kubernetes는 Docker 기반이기 때문에 특정 업체에 종속되지 않고 클라우드를 이전할 수 있다.


+) Kubernetes가 FT(Fault Tolerance)를 제공하는데 HA랑은 어떤 차이?

FT는 무중단 서비스로 작은 장애에도 멈추지 않고 서비스가 지속되는 것을 의미

Kubernetes는 특정 컨테이너가 죽었을 때 즉각 복제 컨테이너를 생성해서 서비스 유지

하지만 컨테이너가 죽은 몇 초동안은 서비스 장애가 발생할 수 있음

따라서 Kubernetes은 동일한 서비스를 제공하는 컨테이너를 이중, 삼중으로 만들어 HA(High Availability)를 유지 가능

+) docker file은 linux위에 centos ubuntu를 까리고 하는데 guest OS랑 다른점은?

Linux와 CentOS의 다른 부분만 따로 패키징 하기 때문에 훨씬 가벼움

⚠️ **GitHub.com Fallback** ⚠️