1. Hypervisor 기술
개념
- Hypervisor는 물리적인 하드웨어에서 **가상 머신(Virtual Machine, VM)**을 생성하고 관리하는 기술입니다.
- VM은 독립적인 운영 체제와 애플리케이션을 실행할 수 있는 논리적인 시스템으로, 물리적 하드웨어를 가상화하여 여러 개의 VM을 실행합니다.
Hypervisor의 종류
- Type 1 (Bare-Metal Hypervisor):
- 물리적인 하드웨어 위에 직접 설치되며, 별도의 호스트 운영 체제를 필요로 하지 않습니다.
- 예: VMware ESXi, Proxmox VE, Microsoft Hyper-V, KVM.
- Type 2 (Hosted Hypervisor):
- 호스트 운영 체제 위에서 동작하며, 호스트 OS의 리소스를 사용해 가상 머신을 실행합니다.
- 예: VMware Workstation, VirtualBox.
당신의 예시:
- ESXi나 Proxmox VE를 물리적인 서버(바이메탈)에 설치하면, 이는 **Hypervisor 기술(Type 1)**을 사용하는 것입니다.
- 예: Proxmox를 설치하면 여러 VM(Ubuntu, Windows 등)을 실행할 수 있습니다.
- VM마다 독립된 커널과 운영 체제를 실행합니다.
- 이 환경에서는 각 VM이 독립적인 "컴퓨터"처럼 동작합니다.
2. Container 기술
개념
- **컨테이너(Container)**는 하드웨어 대신 운영 체제를 가상화하는 기술입니다.
- 컨테이너는 호스트 OS의 커널을 공유하며, 애플리케이션과 그에 필요한 라이브러리, 종속성만을 포함하여 가벼운 실행 환경을 제공합니다.
- 하드웨어 수준이 아닌 운영 체제 수준의 가상화를 수행합니다.
특징
- 컨테이너는 매우 가볍고 빠릅니다.
- 각 컨테이너는 독립적이지만, 호스트 OS 커널을 공유합니다.
- 컨테이너는 VM보다 리소스 소비가 적고, 밀도가 높습니다(즉, 동일한 하드웨어에서 더 많은 컨테이너를 실행 가능).
당신의 예시:
- Ubuntu에 Minikube를 설치하고, Docker 엔진을 사용하여 컨테이너를 실행하면, 이는 Container 기술을 사용하는 것입니다.
- Docker 컨테이너는 호스트 Ubuntu OS의 커널을 공유하며, 각 컨테이너는 필요한 애플리케이션과 라이브러리만 포함합니다.
- 예: Minikube는 Kubernetes 클러스터를 컨테이너 환경에서 실행하기 위한 도구로, Docker 컨테이너를 통해 Pod(컨테이너 그룹)을 실행합니다.
실습 목표 : 컨테이너 이미지 생성 및 컨테이너 배포를 통한 MSA application 구축
실습 절차 :
- 가상머신 생성 - VMware
- 클러스터 구축 (컨테이너화 된 App을 관리하기 위한 Management 도구) - Minikube
- 컨테이너 엔진 구축 - Podman, Docker
- 배포파일 설정, DB 구축 - Redis, Mysql
- War 파일 생성 - JDK8
- 컨테이너 이미지 생성 및 업로드 - Docker hub
- 컨테이너 배포 - Minikube
오류 1: Kubectl get pods 명령어 실행 시, Connection to the server refused
- 쿠버네티스의 모든 통신은 kube-api-server를 통해 통신
- 클러스터의 Api 서버가 동작중인지 확인 필요, kubeconfig 파일 설정 확인 필요