[실습 환경 구성] - 1. VMWare ESXi 개념 및 설치

1. ESXi란 무엇인가?

물리적 서버에 바로 설치되는 강력한 베어메탈 하이퍼바이저

 

  • ESXi는 기반 리소스에 대한 직접 액세스와 제어가 가능하므로 하드웨어를 효과적으로 파티셔닝하여 애플리케이션을 통합하고 비용 절감이 된다

 

VMWare Workstation vs EXSi와의 가상화 방식 차이

  • Type 1 - 네이티브 방식, 하드웨어 위에 바로 하이퍼바이저를 설치하는 방식
    • 성능이 더 좋음
    • ESXi = hypervisor이 운영체제 역할을 해서 별도의 운영체제 필요 없음
    • 최적화된 환경 > 가벼운 형태로 VM을 올릴 수 있다
  • Type 2 - 하드웨어의 운영체제가 설치된 상태로 하이퍼바이저가 올라가는 방식
    • 운영체제가 불필요하게 2개 > 부하가 심해짐

 

 

ESXi의 이점

  • 용량 활용도를 높이기 위해 하드웨어를 통합
  • vCenter Server을 사용하면 > 다수의 ESXi를 묶을 수 있다 > 가상의 데이터 센터를 만들 수 있다
  • 요즘에는 쿠버네티스위에 올림 > 쿠버네티스가 불필요한 가상화를 줄여줘서 > 월등하다
    • VM을 줄이고 컨테이너로 전환한다
    • VM과 컨테이너를 하나의 플랫폼(K8s)에서 통합 관리한다
    • 애플리케이션 단위에서 VM 대신 Pod을 사용한다

 

 🤔쿠버네티스가 불필요한 가상화가 줄어드는이유?

더보기
더보기

VM이라면)

앱을 실행하기 위해서는 하이퍼바이저 > 게스트 OS 설치 > 애플리케이션 구조

 

쿠버네티스는)

하이퍼바이저 없이 Linux 커널을 공유함

격리는 네임스페이스와 cgroup 같은 커널 기능으로 이루어진다

즉, 새로운 컴퓨터를 하나 만드는게 아니라, 같은 컴퓨터 안에서 프로세스를 논리적으로 불리한다

 

불필요한 가상화가 줄어든다는 뜻)

 

1. OS 중복이 사라진다

VM은 앱 10개를 띄우면 10개의 커널이 존재한다

하지만, 컨테이너는 커널 1개이고, 프로세스만 10개이다 > 앱을 실행하기 위해서 커널을 매번 새로 띄우는 것은 너무 무겁다

 

2. 하드웨어 애뮬레이션 계층이 줄어든다

VM은  CPU 가상화, 가상화 디바이스 에뮬레이션 등의 과정을 거친다

컨테이너는 커널 시스템콜을 사용한다 > 애플리케이션이 하드웨어를 쓰는 경로가 더 짧아진다.

 

3. 메모리와 리소스 오버헤드가 감소한다

VM은 OS자체가 수백 MB이상 메모리를 사용하고, 부팅시간도 필요하다

컨테이너는 프로세스 단위이기때문에 고정 비용이 들지 않는다, 애플리케이션 실행을 위해 필요 이상으로 리소스를 소비하지 않는다

 

=> ‘VM 단위의 OS 가상화’를 제거하고, 커널 레벨 격리로 대체했기 때문에 추상화 계층이 한 단계 줄어든다

 

 

 

 

🤔 VM과 컨테이너의 격리 구조 비교

더보기
더보기

VM은 커널이 분리됨 vs 컨테이너는 커널 공유(프로세스 단위로 나뉨)

 

🔵 VM 격리 방식

VM은 “하나의 독립된 컴퓨터”처럼 동작
  • CPU 가상화 (VT-x, AMD-V)
  • 가상 메모리 분리
  • 가상 디스크
  • 가상 NIC
  • VM마다 독립 커널

🔵 컨테이너 격리 방식

하나의 커널 위에서 논리적 격리
  • PID namespace (프로세스 분리)
  • NET namespace (네트워크 분리)
  • Mount namespace (파일시스템 분리)
  • IPC namespace
  • User namespace
  • cgroups (CPU, Memory 제한)

 

① Namespace

“보이는 세상”을 나눈다

 

(1) PID Namespace – 프로세스 격리

  • 각 컨테이너는 자기만의 프로세스 트리를 가진다
  • 👉  컨테이너 안에서 ps를 치면 자기 프로세스만 보인다

(2) NET Namespace – 네트워크 격리

  • 각 컨테이너는 독립적인 네트워크 스택을 가진다
  • 별도의 IP, routing table, port space을 가진다
  • 👉 컨테이너 안의 80번 포트를 열어도 다른 컨테이너와 충돌하지 않는다

(3) Mount Namespace – 파일 시스템 격리

  • 컨테이너마다 루트 파일 시스템이 다르게 보인다
  • 👉  / 경로가 다르다
  • 👉  다른 컨테이너 파일을 볼 수 없다

(4) IPC Namespace

  • 컨테이너마다 IPC 공간을 따로줌 > 프로세스 간 통신 자원을 컨테이너별로 완전히 분리함
    • IPC 종류: 공유 메모리, 세마포어, 메세지큐

(5) User Namespace

  • 컨테이너 내부의 root가 반드시 호스트의 root와 동일한 권한을 갖는 것은 아니다.
  • UID mapping 가능
    • 0 = root
    • 1000 = 일반 사용
  • 보안 강화
    • 컨테이너가 침해됐다면, 호스트의 root를 뚫은 것은 아니므로, 피해 범위를 줄일 수 있다

 

② cgroups

“자원 사용량을 제한하는 장치”

 

 

  • CPU 1core 제한
  • Memory 512MB 제한
  • I/O 제한

 

③ 보안 격리 보강 요소

  • seccomp: 허용된 system call만 사용
  • AppArmor / SELinux 
    • 파일 접근 통제
    • 정책 기반 보안
  • Capabilites
    • root 권한 분리
    • 필요한 권한만 부여

 

 

2. ESXi 설치

스펙 정보

  • CPU:4
  • Memory: 16GB
  • Storage: 200GB

 

VT-x 설정 오류 해결

이때 해당 오류가 발생한다면

Virtualized Intel VT-x/EPT is not supported on this platform.
Continue without virtualized Intel VT-x/EPT?

 

VT-x/EPT 모드가 활성화 안됐다는 뜻!

 

해결 방법

 

1. BIOS 확인

  • 나는 LG gram이라서 재부팅할때 F2를 연타 > BIOS 진입 가능
Intel Virtualization Technology → Enabled

 

2. Hyper-V 끄기

  • Powershell
bcdedit /set hypervisorlaunchtype off

 

명령어 치고 꼭! 재부팅 다시하기

 

3. 잘 적용됐는지 확인 > Powershell

bcdedit
Windows 부팅 로더
-------------------
identifier              {current}
device                  partition=C:
path                    \WINDOWS\system32\winload.efi
description             Windows 11
locale                  ko-KR
inherit                 {bootloadersettings}
recoverysequence        {2c5d213f-b324-11ed-9619-b1c3a2620d34}
displaymessageoverride  Recovery
recoveryenabled         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \WINDOWS
resumeobject            {2c5d213d-b324-11ed-9619-b1c3a2620d34}
nx                      OptIn
bootmenupolicy          Standard
hypervisorlaunchtype    Off

hypervisorlaunchtype    Off > 이렇게되면 잘 된것임

 

bcdedit이란?

Window의 부팅 설정 저장소 > Window가 켜질 때 어떤 모드로 할지 설정한 파일

BCD라고 부름

 

 

설치 완료 > ESXi 접속

 

dhcp로 받은 https://211.183.3.129로 접속 가능하다

 

 

  • 설정한 스펙 확인 가능

 

  • Storage(200GB) 확인 가능

 

 

  • 가상 시스템 > 여기에 VM 만들 것임(VMWare Workstation 처럼)

 

  • 네트워킹 > 스위치, 포트그룹 추가할 예정

 

🤔 처음있는 vswitch는 뭐고 무슨역할이지?

ESXi 내부이 가상 네트워크 스위치
[ 물리 NIC (랜카드) ]
        │
        ▼
     vSwitch0   ← (가상 스위치)
      │     │
      │     ├── VM Network  (VM들이 쓰는 네트워크)
      │
      └── Management Network (ESXi 관리용 IP)

 

역할

  • ESXi 내부에서 가상 머신들이 서로 통신하고, 외부 네트워크와 연결되도록 해주는 가상 스위치
  • 물리 NIC를 직접 VM에 연결하는게 아니라, 먼저 물리 NIC를 vSwitch에 연결하고, 그 vSwitch에 여러 VM을 붙이는 구조로 동작함
  • 그리하여 하나의 물리 랜카드에 여러 VM이 공유 가능함

 

 

ESXi 내부 VM ↔ 인터넷 통신 과정

내 LG gram (물리 PC)
   └─ VMware Workstation
        └─ ESXi (가상 머신)
             └─ VM 1개 (ESXi 내부 VM)

 

  1. ESXi 내부의 VM이 가상 NIC에 패킷 보냄
  2. 그럼 VSwitch에 전송됨
  3. vSwitch는 해당 포트그룹에 연결된 업링크를 통해 ESXi가 가지고 있는 가상 NIC로 전달
  4. NIC는 VMWare Workstation이 만든 가상 네트워크 어댑터(vmnet)을 통해 호스트 OS로 전달된다
  5. 호스트 OS의 실제 물리 NIC를 통해 외부 네트워크(공유기)를 통해 인터넷으로 나간다
[ ESXi 내부 VM ]
        │
        ▼
   (가상 NIC)
        │
        ▼
     vSwitch0
        │
        ▼
 ESXi VM의 가상 NIC
        │
        ▼
 VMware Workstation 가상 네트워크 (vmnet)
        │
        ▼
 Windows 네트워크 스택
        │
        ▼
 물리 NIC (랜카드)
        │
        ▼
 공유기 / 인터넷

 

 

3. ESXi 내의 VM 할당하기

ubuntu mint iso 파일 다운로드 후 진행

 

1) iso 파일 스토리지에 업로드

1. iso 파일 데이터 스토어에 업로드하기

 

2. 디렉토리 생성(images)

 

3. mint iso 업로드

 

2) VM 생성

1. 가상시스템 > VM 생성/등록

 

방식

  • 새 가상 시스템 생성: 우리가 계속 했던 방식 > 이거로 할것임
  • OVF/OVA: 압축된 파일로 export된 파일로 VM 설치하는 방식
  • 기존 가상 시스템 등록:디스크에있는 VM을 시스템에 등록하는것

 

2. 새 가상 시스템 생성

 

 

 

 

  • 씬 프로비저닝: 최소화한 디스크를 만들어놓는방식 > 성능이 떨어짐
  • 씩 프로비저닝: 디스크를 미리 확보해둠 > 성능 좋음
    • 느리게 비워짐: 느리게 비워지지만, 안에 내용을 완전히 삭제 가능(보안상 좋다)
    • 빠르게 비워짐: 빠르게 포멧이 됨

 

CD/DVD 드라이브 > ISO 파일 선택

 

 

 

4. 리눅스 민트 운영체제 설치하기(클라이언트용)

1. 실행하기

 

2. Install Linux Mint 눌러서 설치하기

 

  • 언어 설정 > English

 

  • 디스크 완전히 지우고 설치하겠다

 

진짜 지울거냐는 창 > Yes

 

  • 로그인 설정

 

자동 로그인 설정 > Log in automatically

 

  • 재시작하기 > Enter 누르기