IT_Study/Ops

[Kubernetes] 가상화 기술의 history 및 Virtual Machine과 Container의 차이

__Vivacé__ 2025. 4. 14. 15:01

Kubernetes 관련 History

대규모의 서비스를 운영하는 기업들은, 최대한 자원을 효율적으로 써야 비용적으로 유리하다

가상화 기술의 history ❘ https://inf.run/yW34

 

1. 자원 격리 기술
    - 리눅스에서 자원들을 격리해서 프로세스들이 독립적인 환경에서 돌아가도록 해주는 기술이 있었다.
    - 그러나 어려워서 대중적으로는 사용되지 않음

2. 가상화 기술 : Virtual Machine
    - 2010.07, OpenStack이라는 VM을 가상화시켜주는 오픈소스가 등장 (from 락스페이스, 나사)
    - 운영환경이 자동화는 되는데, 시스템 효율이 나지 않음
        --> VM을 가상화하기 위해 무거운 OS를 띄워야 한다

3. 가상화 기술 : Container
    - 이 때 Docker 등장 : 컨테이너 가상화 기술은 서비스 간의 자원을 격리하는 데 OS를 별도로 안 띄워도 된다
        --> OS 기동 시간이 없기에 빠르고 자원 효율도 좋다
    - Docker 자체는 하나의 서비스를 컨테이너로 가상화시켜서 배포하는 개념이라, 많은 서비스를 운영 시 일일이 배포하고 운영해주지는 않음

4. Container Orchestrator
    - 여러 Container를 관리해주는 Solution
    - Docker Container 기술이 오픈소스기 때문에, 많은 회사들이 각자의 Orchestrator를 내게 됨
    - 구글 주도 하 여러 업체가 참여해서 운영 노하우를 녹인 것이 Kubernetes

 

 

Kubernetes 간단한 기능

좌 : 한 시스템을 한 서버에 운영하던 방식과 k8s 사용 비교 ❘ https://inf.run/yW34

1. Auto Scailing
    - 기존 서버는 최대 traffic에 따라 서버를 미리 가동시켜둬야했다
    - k8s는 트래픽 양에 따라 알아서 서비스의 자원량을 변경시켜준다.

2. Auto Healing
    - 장애가 난 서버 위에 있는 서비스들을, 자동으로 다른 서버로 옮겨주는 기능

3. Deployment
    -
Rolling Update : 점진적 배포 / 전체 인스턴스를 순차적으로 교체
    - Canary deployment : 점진적 배포 / 새 버전을 일부 사용자에게 먼저 실사용 시킨 후 배포
    - Blue Green Deployment : 즉시 전환 배포 / 모든 서버를 내렸다가 업데이트 작업 후 다시 올림

 

 


Virtual Machine과 Container의 차이

https://inf.run/yW34

 

  Virtual Machine Container
구조 각 VM마다 OS가 하나씩 따로 포함됨 (Guest OS)

Ho1st OS 위에 Hypervisor가 Guest OS를 구동
→ 각각 독립된 OS가 올라감
컨테이너들은 Host OS 하나만 공유함

Host OS 위에 컨테이너 런타임(Docker 등)
→ 커널은 공유, 애플리케이션 및 라이브러리만 분리
속도/성능 Guest OS까지 포함되어 실행
→ 부팅과 실행이 느림
Guest OS 없이 실행
→ 부팅과 실행이 빠름
운영체제 호환성 서로 다른 OS 운영 가능
(ex. Linux 위에 Windows VM)
커널 공유이므로 동일한 OS 계열만 가능
(Linux 위에 Linux 컨테이너만)
보안 VM 간 커널이 분리
하나가 뚫려도 다른 VM에 영향 없음
컨테이너는 커널을 공유
하나가 뚫리면 다른 컨테이너도 위험해질 수 있음
시스템 개발 하나의 모듈에 부하 발생 시, VM 자체를 복제해 확장
→ 리소스 낭비 가능성
부하가 큰 모듈만 컨테이너 단위로 빠르게 확장 가능
→ 리소스 효율적
운영 예시 무겁지만 완전히 격리된 환경 필요 시 (보안이 중요한 경우) 빠른 배포와 확장이 필요한 마이크로서비스 아키텍처에 적합