쿠버네티스(k8s) · Chapter 2

MacOS VertualBox 세팅

작성자: Choi.eth

16 min read

https://fastcampus.co.kr/dev_online_devops_kubernetes

https://fastcampus.co.kr/dev_online_devops_kubernetes

본 포스트는 「실무까지 한 번에 끝내는 DevOps를 위한 Docker & Kubernetes feat. AWS EKS 초격차 패키지 Online」 강의를 학습하며 정리한 내용을 다룹니다.

VirtualBox 란?

VirtualBox

VirtualBox

VirtualBox는 내 컴퓨터 안에 또 다른 컴퓨터를 만들어 실행할 수 있게 해주는 가상화 프로그램입니다. 쉽게 말하면, MacBook이나 Windows PC 안에서 Ubuntu, CentOS, Windows Server 같은 다른 운영체제(OS)를 설치하고 실행할 수 있게 해주는 도구입니다.

쿠버네티스는 클러스터를 기반으로 여러 서버와 컨테이너를 동시에 관리할 수 있게 해주는 도구입니다. 쿠버네티스를 제대로 이해하기 위해서는 단순히 개념만 보는 것보다, 여러 서버가 함께 동작하는 환경을 직접 구성해보는 것이 중요합니다. 그래서 본격적인 쿠버네티스 학습과 실습을 진행하기에 앞서, VirtualBox를 활용해 로컬 환경에 여러 대의 가상 서버를 구축해보려 합니다.

Why MacOS VertualBox?

VirtualBox는 Windows와 macOS 환경에 따라 설치 과정이나 사용 방식에서 약간의 UX 차이가 있습니다.

제가 수강 중인 패스트캠퍼스 강의는 Windows 환경을 기준으로 진행되지만, 저는 macOS M2 노트북을 사용하고 있습니다. 그래서 본격적인 실습을 진행하기 전에, macOS 환경에서 VirtualBox를 사용할 수 있도록 별도의 환경 세팅이 필요했습니다.

(1) VirtualBox 설치

https://www.virtualbox.org/wiki/Downloads

https://www.virtualbox.org/wiki/Downloads

Virtualbox 공식 홈페이지에서 본인 컴퓨터에 따라 Virtualbox를 설치해줍니다. 저는 MacOS M2 Pro를 사용하기에, ARM64을 지원하는 'Apple Silicon hosts'를 설치하겠습니다.

(2) Ubuntu 24.0 설치

https://ubuntu.com/download/desktop

https://ubuntu.com/download/desktop

본 포스트에서는 쿠버네티스 클러스터를 구성할 서버 환경으로 Ubuntu 24.04를 사용하여 실습을 진행합니다.

Ubuntu 24.04를 사용하는 가장 큰 이유는 비교적 최신 버전이면서도 장기간 안정적으로 지원되는 LTS 버전이기 때문입니다. 일반 릴리스 버전보다 더 오랫동안 보안 업데이트와 유지보수를 받을 수 있어, 서버 환경뿐만 아니라 개발 환경과 클라우드 실습 환경에서도 널리 사용됩니다.

따라서 쿠버네티스 실습처럼 여러 서버를 구성하고 운영 흐름을 이해해야 하는 환경에서는 Ubuntu 24.04가 안정성과 실습 편의성 측면에서 적합한 선택입니다.

본인의 PC 사양에 맞춰 Download를 진행해주세요. 저는 ARM64로 진행했습니다.

(3) 서버 생성

3.1 서버 생성

(1) 새로만들기

(1) 새로만들기

(2) 서버 설정

(2) 서버 설정

Virtualbox와 Ubuntu 설치가 됬다면 [새로 만들기]를 클릭하여 서버를 생성해봅시다. 오른쪽 사진에 나와있는것 처럼 VM Name, VM Folder 등 환경변수 및 옵션을 동일하게 설정해주세요. 강의에서는 VM Name를 'k8s-master'로 작명하여 저도 동일하게 진행해봤습니다.

(3) Memory, CPU

(3) Memory, CPU

(4) Disk

(4) Disk

다음으로 'Specify virtual hardware' 섹션으로 가서 Base Memory를 4GB(=4096 MB), CPU는 4개로 설정합니다. 실습을 위해 구축된 우분투 서버에 여러 도커 컨테이너를 실행할 예정이며, 안정적으로 실습을 진행하기 위해서 최소 4GB 메모리와 4개의 CPU는 필요합니다.

다음으로 'Specify virtual hard disk' 섹션으로 가서 Disk Size를 100 GB로 설정합니다. 실제 컴퓨터의 100 GB를 차지하는 것이 아닌, Disk provisioning라는 가상화된 환경이나 스토리지 시스템에서 가상 머신(VM)이나 서버에 물리적인 스토리지 공간을 할당하고 설정하는 과정 입니다.

설정이 완료됬다면 '완료' 버튼을 눌러주세요.

3.2 서버 설정

(5) 마우스 오른쪽 -> 설정

(5) 마우스 오른쪽 -> 설정

(6) 설정 페이지

(6) 설정 페이지

서버가 생성되었다면, 왼쪽 (5)사진 처럼 서버에 마우스 오른쪽 클릭 후, 설정을 눌러주세요. 그러면 오른쪽 (6) 사진 처럼 디테일하게 서버를 설정할 수 있는 페이지로 넘어갑니다.

만약, Basic으로 선택되어 있다면, Export를 클릭하여 진행합니다.

3.3 설정 : 시스템

(7) 시스템

(7) 시스템

왼쪽 사이드바에 나와있는 메뉴에서 '시스템'을 선택합니다.

Boot Device Order (BIOS Only) 란?

BIOS는 오래된 PC에서 사용하던 전통적인 부팅 방식입니다. 컴퓨터가 켜지면 BIOS가 먼저 실행되고, BIOS는 설정된 부팅 순서에 따라 장치를 확인합니다.

1순위: CD/DVD
2순위: Hard Disk
3순위: Network

이 순서에 따라 BIOS는 먼저 CD-ROM에 부팅 가능한 설치 ISO가 있는지 확인하고, 없으면 하드디스크를 확인합니다. 그래서 Intel 기반 PC나 예전 가상머신에서는 Boot Device Order 설정이 중요했습니다.

그런데 M2 Mac의 VirtualBox는 Apple Silicon/ARM 호스트 환경이고, VM이 보통 UEFI/EFI 기반으로 동작합니다. 그래서 BIOS 전용 부팅 순서 설정이 비활성화됩니다.

UEFI/EFI 부팅이란?

UEFI는 BIOS보다 현대적인 부팅 방식입니다. Mac, 최신 PC, Apple Silicon 환경에서는 대부분 UEFI/EFI 기반으로 부팅합니다. UEFI에서는 단순히 “CD부터 볼지, 하드디스크부터 볼지”만 정하는 것이 아니라, 펌웨어가 등록된 부팅 항목을 기준으로 부팅합니다.

M2 Mac의 VirtualBox에서는 BIOS 방식의 부팅 순서보다는, VM의 EFI 펌웨어가 부팅 가능한 장치를 찾습니다. 보통 순서는 이런 식으로 동작합니다.

  1. UEFI CD-ROM에서 부팅 가능한 ISO 확인
  2. UEFI 하드디스크에서 설치된 OS 확인
  3. 둘 다 없으면 “No bootable device” 표시

만약, Boot Device Order 부팅 기반의 컴퓨터라면 위 사진처럼 부팅 순서를 세팅하면 됩니다.

3.4 설정: 저장소

(8) 저장소

(8) 저장소

다음으로 저장소 메뉴를 눌러주세요. (8) 이미지 처럼 '비어 있음'을 클릭 한 후, CD 아이콘을 클릭하여 "Choose a Disk File..."을 클릭합니다.

(9) 우분투 클릭

(9) 우분투 클릭

(10) 우분투 반영된것 확인

(10) 우분투 반영된것 확인

앞서 설치했던 Ubuntu 24.04를 선택합니다. 그러면 디스크에 해당 우분투 파일이 활성화된것을 확인할 수 있습니다.

3.5 설정: 네트워크

(11) 어댑터1

(11) 어댑터1

(12) 어댑터2

(12) 어댑터2

다음으로 네트워크 메뉴를 눌러주세요.

어댑터1 : NAT

어댑터1에 설정된 NA는 VM이 외부 인터넷에 접속할 수 있게 해주는 네트워크입니다. 예를 들어 Ubuntu VM 안에서 'apt install' 같이 라이브러리 다운로드 작업을 하려면 인터넷이 필요합니다. 한가지 알아야 할게, Kubernetes 클러스터 내부 통신용이라기보다, VM이 인터넷을 쓰기 위한 용도입니다.

어댑터2 : 호스트 전용 네트워크

어댑터2에 설정된 호스트 전용 네트워크는 Mac과 VM, 그리고 VM들끼리 통신하기 위한 전용 네트워크입니다. 예를 들어 다음과 같은 구성이 가능해집니다.

k8s-master  192.168.56.10
k8s-worker1 192.168.56.11
k8s-worker2 192.168.56.12

Mac
 ├── k8s-master
 ├── k8s-worker1
 └── k8s-worker2

각 VM이 같은 HostNetwork에 연결되면, 서로 내부 IP로 통신할 수 있습니다.

어댑터 2 Name에 "HostNetwork"가 안보인다면?

(13) 네트워크

(13) 네트워크

(14) 네트워크 만들기

(14) 네트워크 만들기

만약, HostNetwork가 안보인다면 호스트 전용 네트워크가 아직 생성되지 않은 상태입니다. 이 경우 우선 현재까지 진행된 상황을 저장하고, (13) 네트워크 이미지 처럼 첫번째 페이지에서 왼쪽 메뉴 5번째 네트워크를 클릭합니다.

그리고 (14) 네트워크 만들기 이미지 처럼 [만들기 버튼]을 클릭하여 새로운 네트워크를 만듭니다.

여기서 만들어진 네트워크는 호스트 전용 네트워크로 사용될 예정이며, 아래와 같은 IPv4를 통해 접속할 예정입니다.

  • 192.168.56.1 ~ 192.168.56.199

192.168.x.x는 사설 IP 대역입니다. 인터넷에서 직접 라우팅되는 공인 IP가 아니라, 로컬 네트워크 안에서만 쓰는 사설 IP입니다. 저희가 실습하는 서버는 Local에서만 다룰 예정이며, 외부에서 접속할 일이 없기 때문에 해당 IP를 사용할 예정입니다.

3.6 설정: 오디오

(15) 오디오

(15) 오디오

마지막으로 오디오 메뉴로 가서 이미지와 같이 오디오를 비활성화 해주세요. 쿠버네티스 실습에 필요하지 않습니다.

(4) 서버 실행

(16) 서버 구동 과정

(16) 서버 구동 과정

(17) 로딩중

(17) 로딩중

(18) 컴퓨터 설정 첫 화면

(18) 컴퓨터 설정 첫 화면

설정이 완료되었습니다. 이제 왼쪽 위에 시작 버튼을 눌러 서버를 구동시켜보겠습니다. (16) 화면이 나온다면, 엔터를 눌러서 설치를 진행합니다. 그러면 (17) 로딩 화면을 거쳐서 (18) 컴퓨터 설정 화면이 나오게 됩니다.

(19) 계정설정

(19) 계정설정

설정 화면이 나오면 전부 [Next]를 눌러주다가 계정 설정 페이지가 나오면, 위와 같이 설정합니다.

  • Your name : student
  • Your computer`s name : k8s-master
  • Your username : student
  • Password : k8spass#
  • Confirm password : k8spass#

위 설정 값은 강의에서 다뤘던 설정값 그대로이며, 앞으로 실습의 환경변수 일관성을 위해 동일하게 작성하기를 권장합니다.

계정 설정을 완료했다면 나머지도 전부 [Next]를 클릭합니다. 그러면 최종적으로 설치가 진행되는 화면이 나오게 되는데, 설치까지 약 8~10분정도가 소요됩니다.

설치가 끝나면 오른쪽 사진처럼 준비가 됬다는 화면이 나옵니다. [Restart now]를 클릭합니다.

(21) 설치 대기중

(21) 설치 대기중

(22) 설치 완료 후, 로그인 화면

(22) 설치 완료 후, 로그인 화면

(21) 설치 대기중 화면이 나온다면 VM에 가서 Enter를 눌러주세요. 그래야 나머지가 진행됩니다. 설치가 끝나면 (22) 이미지 처럼 로그인 화면이 나옵니다. 이제 우분투 서버 구축이 완료되었습니다..!

로그인 시, Password는 위에서 설정했던 'k8spass#'을 입력해주면 됩니다.

(23) 최초 화면

(23) 최초 화면

처음 로그인하면 위와 같은 화면이 나오는데, 전부 Next를 클릭합니다.

(5) IP 설정

(24) Network Settings 찾기

(24) Network Settings 찾기

설정이 끝났다면, 왼쪽 하단에 아이콘을 클릭하고, Settings를 찾아 눌러줍니다. 그러면, Ethernet (enp0s8)과 Ethernet (enp0s9)가 가장 먼저 보일겁니다.

  • Ethernet (enp0s8): 어댑터1에서 설정했던 NAT 네트워크
  • Ethernet (enp0s9): 어댑터2에서 설정했던 호스트 전용 네트워크

Ethernet (enp0s9)의 톱니바퀴를 눌러 호스트 전용 네트워크 설정 페이지로 넘어갑니다.

(25) IPv4 기본 설정 Automatic DHCP

(25) IPv4 기본 설정 Automatic DHCP

(26) Menual로 IP 설정

(26) Menual로 IP 설정

설정 페이지에서 IPv4로 넘어와서, Automatic (DHCP)를 Manual로 수정합니다. 그리고 (26)이미지와 같이 값을 수정하여, 고정된 IP를 갖도록 설정합니다.

Automatic DHCP

Automatic DHCP는 쉽게 말하면, 네트워크에 연결된 장비에게 IP 주소를 자동으로 나눠주는 기능입니다. VirtualBox의 Host-only 네트워크에서 Automatic DHCP를 켜면, VM이 부팅될 때 VirtualBox가 VM에게 자동으로 IP를 할당합니다.

저희는 어댑터2의 IP를 192.168.56.1 ~ 192.168.56.199 범위를 갖는 HostNetwork로 설정했기에,  k8s-master은 VM은 이 범위 안에서 자동으로 IP를 받습니다.

Menual은 DHCP 자동 할당이 아니라 직접 IP 지정하는 방식입니다. 이는 실습을 진행하면서, 아래와 같은 서버에 IP에 규칙성을 적용하여 원활한 실습을 진행하기 위함입니다.

k8s-master  192.168.56.100
k8s-worker1 192.168.56.101 # -> +1 증가
k8s-worker2 192.168.56.102
k8s-worker2 192.168.56.103
  • Address: 192.168.56.100은 현재 VM의 Host-only 네트워크 IP입니다.
  • Netmask 255.255.255.0은 이 VM이 속한 네트워크 범위를 의미합니다.

이 설정이면 네트워크는 보통 다음처럼 해석됩니다.

  • 네트워크 대역: 192.168.56.0/24
  • 사용 가능한 IP: 192.168.56.1 ~ 192.168.56.254
  • 브로드캐스트: 192.168.56.255

즉, 같은 192.168.56.x 대역에 있는 장비들은 같은 내부 네트워크에 있다고 볼 수 있습니다.

예를 들어:

Mac Host-only IP: 192.168.56.1
k8s-master:       192.168.56.100
k8s-worker1:      192.168.56.101

이들은 서로 통신할 수 있는 구조입니다.

Gateway: 192.168.56.2

Gateway는 다른 네트워크로 나갈 때 지나가는 출구입니다.

DNS: 8.8.8.8

DNS는 도메인 이름을 IP 주소로 바꿔주는 서버입니다.

예를 들어:

curl https://google.com

위 명령어를 실행하면 컴퓨터는 먼저 google.com의 IP를 알아야 합니다. 이때 DNS를 사용합니다. 8.8.8.8은 Google Public DNS입니다.

설정이 끝났으면, Apply를 누른 후 나와서 왼쪽에 토글 버튼을 두번 눌러서 한번 껏다가 켜줍니다.

(6) 우분투 도구 설치

우리가 설정한 IP가 현재 서버에 정상적으로 적용되었는지는 ifconfig 명령어를 통해 확인할 수 있습니다.

다만 Ubuntu Server는 서버 실행에 필요한 최소 구성 요소만 포함하고 있기 때문에, 일부 명령어나 기능은 기본으로 설치되어 있지 않을 수 있습니다. 따라서 ifconfig와 같은 명령어를 사용하려면 필요한 패키지를 별도로 설치해야 합니다.

(27)

(27)

화면에서 오른쪽 클릭하여 "Open inTerminal"을 클릭하여 명령어를 입력하기 위한 터미널를 켜줍니다.

(28) apt 설치

(28) apt 설치

아래 명령어를 복사하여 터미널에 붙혀넣어 설치를 진행해주세요.

sudo apt -y install net-tools openssh-server vim tree htop

sudo 명령어를 사용해 설치를 진행하면, 관리자 권한 확인을 위해 비밀번호 입력을 요구합니다. 이때 비밀번호로 'k8spass#'를 입력합니다.

정상적으로 인증이 완료되면 설치가 진행되며, 별다른 문제가 없다면 오른쪽 이미지처럼 설치 완료 메시지가 출력됩니다.

설치가 완료됬다면 ifconfig 명령어를 통해 현재 서버의 IP를 조회해봅시다.

Ethernet (enp0s9)에서 설정했던 호스트 전용 네트워크 IPv4가 192.168.56.100 으로 설정된것을  확인할 수 있습니다.

마무리

지금까지 VirtualBox으로 우분투 서버를 구축해 봤습니다.

앞서 설명했던것 처럼 쿠버네티스는 다수의 서버를 관리하는 도구입니다. 이번 시간에 구축한 서버는 k8s-master 서버로 다수의 서버를 관리하는 관리자 서버 역할을 하게 됩니다.

다음 시간에는 3개의 서버 (k8s-node1 ~ 3)를 추가로 구축하여 k8s-master 노드에서 이를 관리하는 실습을 계속해서 진행해보겠습니다.